aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/utils.rs
diff options
context:
space:
mode:
authormckaymatt <mckaymatt@gmail.com>2017-04-02 18:37:27 -0400
committermckaymatt <mckaymatt@gmail.com>2017-04-04 16:46:52 -0400
commit63f9ad022f1141e2d42d300a1d941988c7bb0d77 (patch)
tree01fe1c1bf1c1f556590de88ed334bf7ad3d17078 /components/script/dom/bindings/utils.rs
parent41e712786e6d618e83a0988d43436d6e5e5bb36e (diff)
downloadservo-63f9ad022f1141e2d42d300a1d941988c7bb0d77.tar.gz
servo-63f9ad022f1141e2d42d300a1d941988c7bb0d77.zip
Add way to get c_void ptr or c_char from caller
Diffstat (limited to 'components/script/dom/bindings/utils.rs')
-rw-r--r--components/script/dom/bindings/utils.rs23
1 files changed, 22 insertions, 1 deletions
diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs
index b5f787346f1..c7039fd168c 100644
--- a/components/script/dom/bindings/utils.rs
+++ b/components/script/dom/bindings/utils.rs
@@ -33,7 +33,7 @@ use js::jsval::{JSVal, UndefinedValue};
use js::rust::{GCMethods, ToString, get_object_class, is_dom_class};
use libc;
use std::ffi::CString;
-use std::os::raw::c_void;
+use std::os::raw::{c_char, c_void};
use std::ptr;
use std::slice;
@@ -513,3 +513,24 @@ unsafe extern "C" fn instance_class_has_proto_at_depth(clasp: *const js::jsapi::
pub const DOM_CALLBACKS: DOMCallbacks = DOMCallbacks {
instanceClassMatchesProto: Some(instance_class_has_proto_at_depth),
};
+
+// Generic method for returning libc::c_void from caller
+pub trait AsVoidPtr {
+ fn as_void_ptr(&self) -> *const libc::c_void;
+}
+impl<T> AsVoidPtr for T {
+ fn as_void_ptr(&self) -> *const libc::c_void {
+ self as *const T as *const libc::c_void
+ }
+}
+
+// Generic method for returning c_char from caller
+pub trait AsCCharPtrPtr {
+ fn as_c_char_ptr(&self) -> *const c_char;
+}
+
+impl AsCCharPtrPtr for [u8] {
+ fn as_c_char_ptr(&self) -> *const c_char {
+ self as *const [u8] as *const c_char
+ }
+}