mirror of
https://github.com/servo/servo.git
synced 2025-10-13 15:00:28 +01:00
Use ToJSValConvertible for all conversions to JSVal.
This commit is contained in:
parent
d7f450dbd7
commit
8c4a3aa387
2 changed files with 20 additions and 74 deletions
|
@ -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, ()> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue