Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/source/scriptinterface/NativeWrapperDefns.h
Show First 20 Lines • Show All 174 Lines • ▼ Show 20 Lines | |||||
} | } | ||||
template<typename R, typename... Ts> | template<typename R, typename... Ts> | ||||
bool ScriptInterface::CallFunction(JS::HandleValue val, const char* name, R& ret, const Ts&... params) const | bool ScriptInterface::CallFunction(JS::HandleValue val, const char* name, R& ret, const Ts&... params) const | ||||
{ | { | ||||
ScriptRequest rq(this); | ScriptRequest rq(this); | ||||
JS::RootedValue jsRet(rq.cx); | JS::RootedValue jsRet(rq.cx); | ||||
JS::AutoValueVector argv(rq.cx); | JS::AutoValueVector argv(rq.cx); | ||||
argv.resize(sizeof...(Ts)); | (void)argv.resize(sizeof...(Ts)); | ||||
AssignOrToJSValHelper<0>(rq, argv, params...); | AssignOrToJSValHelper<0>(rq, argv, params...); | ||||
if (!CallFunction_(val, name, argv, &jsRet)) | if (!CallFunction_(val, name, argv, &jsRet)) | ||||
return false; | return false; | ||||
return FromJSVal(rq, jsRet, ret); | return FromJSVal(rq, jsRet, ret); | ||||
} | } | ||||
template<typename R, typename... Ts> | template<typename R, typename... Ts> | ||||
bool ScriptInterface::CallFunction(JS::HandleValue val, const char* name, JS::Rooted<R>* ret, const Ts&... params) const | bool ScriptInterface::CallFunction(JS::HandleValue val, const char* name, JS::Rooted<R>* ret, const Ts&... params) const | ||||
{ | { | ||||
ScriptRequest rq(this); | ScriptRequest rq(this); | ||||
JS::MutableHandle<R> jsRet(ret); | JS::MutableHandle<R> jsRet(ret); | ||||
JS::AutoValueVector argv(rq.cx); | JS::AutoValueVector argv(rq.cx); | ||||
argv.resize(sizeof...(Ts)); | (void)argv.resize(sizeof...(Ts)); | ||||
AssignOrToJSValHelper<0>(rq, argv, params...); | AssignOrToJSValHelper<0>(rq, argv, params...); | ||||
return CallFunction_(val, name, argv, jsRet); | return CallFunction_(val, name, argv, jsRet); | ||||
} | } | ||||
template<typename R, typename... Ts> | template<typename R, typename... Ts> | ||||
bool ScriptInterface::CallFunction(JS::HandleValue val, const char* name, JS::MutableHandle<R> ret, const Ts&... params) const | bool ScriptInterface::CallFunction(JS::HandleValue val, const char* name, JS::MutableHandle<R> ret, const Ts&... params) const | ||||
{ | { | ||||
ScriptRequest rq(this); | ScriptRequest rq(this); | ||||
JS::AutoValueVector argv(rq.cx); | JS::AutoValueVector argv(rq.cx); | ||||
argv.resize(sizeof...(Ts)); | (void)argv.resize(sizeof...(Ts)); | ||||
AssignOrToJSValHelper<0>(rq, argv, params...); | AssignOrToJSValHelper<0>(rq, argv, params...); | ||||
return CallFunction_(val, name, argv, ret); | return CallFunction_(val, name, argv, ret); | ||||
} | } | ||||
// Call the named property on the given object, with void return type | // Call the named property on the given object, with void return type | ||||
template<typename... Ts> | template<typename... Ts> | ||||
bool ScriptInterface::CallFunctionVoid(JS::HandleValue val, const char* name, const Ts&... params) const | bool ScriptInterface::CallFunctionVoid(JS::HandleValue val, const char* name, const Ts&... params) const | ||||
{ | { | ||||
ScriptRequest rq(this); | ScriptRequest rq(this); | ||||
JS::RootedValue jsRet(rq.cx); | JS::RootedValue jsRet(rq.cx); | ||||
JS::AutoValueVector argv(rq.cx); | JS::AutoValueVector argv(rq.cx); | ||||
argv.resize(sizeof...(Ts)); | (void)argv.resize(sizeof...(Ts)); | ||||
AssignOrToJSValHelper<0>(rq, argv, params...); | AssignOrToJSValHelper<0>(rq, argv, params...); | ||||
return CallFunction_(val, name, argv, &jsRet); | return CallFunction_(val, name, argv, &jsRet); | ||||
} | } | ||||
// Clean up our mess | // Clean up our mess | ||||
#undef NUMBERED_LIST_HEAD | #undef NUMBERED_LIST_HEAD | ||||
#undef NUMBERED_LIST_TAIL | #undef NUMBERED_LIST_TAIL | ||||
#undef NUMBERED_LIST_TAIL_MAYBE_REF | #undef NUMBERED_LIST_TAIL_MAYBE_REF | ||||
Show All 9 Lines |
Wildfire Games · Phabricator