diff options
author | mckaymatt <mckaymatt@gmail.com> | 2017-04-02 18:37:27 -0400 |
---|---|---|
committer | mckaymatt <mckaymatt@gmail.com> | 2017-04-04 16:46:52 -0400 |
commit | 63f9ad022f1141e2d42d300a1d941988c7bb0d77 (patch) | |
tree | 01fe1c1bf1c1f556590de88ed334bf7ad3d17078 /components/script/dom/bindings/utils.rs | |
parent | 41e712786e6d618e83a0988d43436d6e5e5bb36e (diff) | |
download | servo-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.rs | 23 |
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 + } +} |