diff options
author | Ms2ger <ms2ger@gmail.com> | 2013-11-08 11:52:10 +0100 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2013-11-09 14:05:53 +0100 |
commit | 610d1649cdb351a6fe9e1540a323e36edc2403b8 (patch) | |
tree | 2893f3a7fb8e0db3ea5252224e70c028956a155e /src/components/script/dom/bindings/utils.rs | |
parent | bdc7e984eb73298e13f917aefdd0c34e9ae34d03 (diff) | |
download | servo-610d1649cdb351a6fe9e1540a323e36edc2403b8.tar.gz servo-610d1649cdb351a6fe9e1540a323e36edc2403b8.zip |
Introduce jsid_to_str to simplify jsval_to_str callers that have an id.
Diffstat (limited to 'src/components/script/dom/bindings/utils.rs')
-rw-r--r-- | src/components/script/dom/bindings/utils.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index e75e9d5198f..99997c0f38a 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -29,6 +29,7 @@ use js::jsapi::{JS_ValueToString, JS_GetReservedSlot, JS_SetReservedSlot}; use js::jsapi::{JSContext, JSObject, JSBool, jsid, JSClass, JSNative, JSTracer}; use js::jsapi::{JSFunctionSpec, JSPropertySpec, JSVal, JSPropertyDescriptor}; use js::jsapi::{JSPropertyOp, JSStrictPropertyOp, JS_NewGlobalObject, JS_InitStandardClasses}; +use js::jsapi::{JSString}; use js::jsfriendapi::bindgen::JS_NewObjectWithUniqueType; use js::{JSPROP_ENUMERATE, JSVAL_NULL, JSCLASS_IS_GLOBAL, JSCLASS_IS_DOMJSCLASS}; use js::{JSPROP_PERMANENT, JSID_VOID, JSPROP_NATIVE_ACCESSORS, JSPROP_GETTER}; @@ -191,6 +192,25 @@ pub unsafe fn squirrel_away<T>(x: @mut T) -> *Box<T> { y } +#[fixed_stack_segment] +pub fn jsstring_to_str(cx: *JSContext, s: *JSString) -> ~str { + unsafe { + let length = 0; + let chars = JS_GetStringCharsAndLength(cx, s, &length); + do vec::raw::buf_as_slice(chars, length as uint) |char_vec| { + str::from_utf16(char_vec) + } + } +} + +#[fixed_stack_segment] +pub fn jsid_to_str(cx: *JSContext, id: jsid) -> ~str { + unsafe { + assert!(RUST_JSID_IS_STRING(id) != 0); + jsstring_to_str(cx, RUST_JSID_TO_STRING(id)) + } +} + //XXX very incomplete #[fixed_stack_segment] pub fn jsval_to_str(cx: *JSContext, v: JSVal) -> Result<~str, ()> { |