aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings/conversions.rs
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2014-04-10 12:09:18 +0200
committerMs2ger <ms2ger@gmail.com>2014-04-10 12:09:18 +0200
commit8c4a3aa3877bd59bccef3668c237fd247adee5f8 (patch)
tree7fff31484e2952aee1d679173b30b1756de8e701 /src/components/script/dom/bindings/conversions.rs
parentd7f450dbd7bb7dcc8b0ecf688e999a7ceb3c1154 (diff)
downloadservo-8c4a3aa3877bd59bccef3668c237fd247adee5f8.tar.gz
servo-8c4a3aa3877bd59bccef3668c237fd247adee5f8.zip
Use ToJSValConvertible for all conversions to JSVal.
Diffstat (limited to 'src/components/script/dom/bindings/conversions.rs')
-rw-r--r--src/components/script/dom/bindings/conversions.rs20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/components/script/dom/bindings/conversions.rs b/src/components/script/dom/bindings/conversions.rs
index 513dac9964a..1826782ac84 100644
--- a/src/components/script/dom/bindings/conversions.rs
+++ b/src/components/script/dom/bindings/conversions.rs
@@ -14,8 +14,8 @@ use js::jsapi::{JS_ValueToUint16, JS_ValueToNumber, JS_ValueToBoolean};
use js::jsapi::{JS_NewUCStringCopyN, JS_ValueToString};
use js::jsapi::{JS_WrapValue};
use js::jsval::JSVal;
-use js::jsval::{NullValue, BooleanValue, Int32Value, UInt32Value, StringValue};
-use js::jsval::ObjectValue;
+use js::jsval::{UndefinedValue, NullValue, BooleanValue, Int32Value, UInt32Value};
+use js::jsval::{StringValue, ObjectValue};
use js::glue::RUST_JS_NumberValue;
use std::default::Default;
use std::libc;
@@ -29,6 +29,22 @@ pub trait FromJSValConvertible<T> {
}
+impl ToJSValConvertible for () {
+ fn to_jsval(&self, _cx: *JSContext) -> JSVal {
+ UndefinedValue()
+ }
+}
+
+impl ToJSValConvertible for JSVal {
+ fn to_jsval(&self, cx: *JSContext) -> JSVal {
+ let mut value = *self;
+ if unsafe { JS_WrapValue(cx, &mut value as *mut JSVal as *JSVal) } == 0 {
+ fail!("JS_WrapValue failed.");
+ }
+ value
+ }
+}
+
unsafe fn convert_from_jsval<T: Default>(
cx: *JSContext, value: JSVal,
convert_fn: extern "C" unsafe fn(*JSContext, JSVal, *T) -> JSBool) -> Result<T, ()> {