Index: ps/trunk/source/scriptinterface/ScriptConversions.h =================================================================== --- ps/trunk/source/scriptinterface/ScriptConversions.h +++ ps/trunk/source/scriptinterface/ScriptConversions.h @@ -86,4 +86,26 @@ return FromJSVal_vector(cx, v, out); \ } +template static bool FromJSProperty(JSContext* cx, JS::HandleValue v, const char* name, T& out) +{ + if (!v.isObject()) + return false; + + JSAutoRequest rq(cx); + JS::RootedObject obj(cx, &v.toObject()); + + bool hasProperty; + if (!JS_HasProperty(cx, obj, name, &hasProperty)) + return false; + + JS::RootedValue value(cx); + if (!hasProperty || !JS_GetProperty(cx, obj, name, &value)) + return false; + + if (!ScriptInterface::FromJSVal(cx, value, out)) + return false; + + return true; +} + #endif //INCLUDED_SCRIPTCONVERSIONS