diff options
author | Ms2ger <ms2ger@gmail.com> | 2014-04-10 12:09:18 +0200 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2014-04-10 12:09:18 +0200 |
commit | 8c4a3aa3877bd59bccef3668c237fd247adee5f8 (patch) | |
tree | 7fff31484e2952aee1d679173b30b1756de8e701 /src/components/script/dom/bindings/conversions.rs | |
parent | d7f450dbd7bb7dcc8b0ecf688e999a7ceb3c1154 (diff) | |
download | servo-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.rs | 20 |
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, ()> { |