aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings/utils.rs
diff options
context:
space:
mode:
authorBobby Holley <bobbyholley@gmail.com>2013-10-10 11:49:17 +0200
committerBobby Holley <bobbyholley@gmail.com>2013-10-10 13:11:24 +0200
commitc4bbc4cd37ff604a635b95f39d05913dcaad53fb (patch)
tree72ee7575b773159ad7d8e0f68cfcf575e16f8700 /src/components/script/dom/bindings/utils.rs
parente6be738d97d3e91741b4c064bd803fa8822aff96 (diff)
downloadservo-c4bbc4cd37ff604a635b95f39d05913dcaad53fb.tar.gz
servo-c4bbc4cd37ff604a635b95f39d05913dcaad53fb.zip
Introduce mutable/immutable variants of reflector() with named lifetimes, and kill unsafe casts.
Diffstat (limited to 'src/components/script/dom/bindings/utils.rs')
-rw-r--r--src/components/script/dom/bindings/utils.rs14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs
index 1354924bdf6..bb374e9cf36 100644
--- a/src/components/script/dom/bindings/utils.rs
+++ b/src/components/script/dom/bindings/utils.rs
@@ -528,7 +528,8 @@ pub fn initialize_global(global: *JSObject) {
}
pub trait Reflectable {
- fn reflector(&mut self) -> &mut Reflector;
+ fn reflector<'a>(&'a self) -> &'a Reflector;
+ fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector;
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject;
}
@@ -561,7 +562,7 @@ pub fn WrapNewBindingObject(cx: *JSContext, scope: *JSObject,
value: @mut Reflectable,
vp: *mut JSVal) -> JSBool {
unsafe {
- let reflector = value.reflector();
+ let reflector = value.mut_reflector();
let obj = reflector.get_jsobject();
if obj.is_not_null() /*&& js::GetObjectCompartment(obj) == js::GetObjectCompartment(scope)*/ {
*vp = RUST_OBJECT_TO_JSVAL(obj);
@@ -589,7 +590,7 @@ pub fn WrapNativeParent(cx: *JSContext, scope: *JSObject, mut p: Option<@mut Ref
return obj;
}
let obj = p.wrap_object_shared(cx, scope);
- p.reflector().set_jsobject(obj);
+ p.mut_reflector().set_jsobject(obj);
obj
}
None => unsafe { JS_GetGlobalObject(cx) }
@@ -733,10 +734,9 @@ pub trait DerivedWrapper {
impl DerivedWrapper for AbstractNode<ScriptView> {
#[fixed_stack_segment]
fn wrap(&mut self, cx: *JSContext, _scope: *JSObject, vp: *mut JSVal) -> i32 {
- let cache = self.reflector();
- let wrapper = cache.get_jsobject();
- if wrapper.is_not_null() {
- unsafe { *vp = RUST_OBJECT_TO_JSVAL(wrapper) };
+ let obj = self.reflector().get_jsobject();
+ if obj.is_not_null() {
+ unsafe { *vp = RUST_OBJECT_TO_JSVAL(obj) };
return 1;
}
unsafe { *vp = RUST_OBJECT_TO_JSVAL(node::create(cx, self)) };