本文整理汇总了C++中JS_GetProperty函数的典型用法代码示例。如果您正苦于以下问题:C++ JS_GetProperty函数的具体用法?C++ JS_GetProperty怎么用?C++ JS_GetProperty使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了JS_GetProperty函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: js_prop_set_from_jsval
void
js_prop_set_from_jsval(JSContext *cx, prop_t *p, jsval value)
{
JSBool b;
if(JSVAL_IS_INT(value)) {
prop_set_int(p, JSVAL_TO_INT(value));
} else if(JSVAL_IS_BOOLEAN(value)) {
prop_set_int(p, JSVAL_TO_BOOLEAN(value));
} else if(JSVAL_IS_NULL(value) || JSVAL_IS_VOID(value)) {
prop_set_void(p);
} else if(JSVAL_IS_DOUBLE(value)) {
double d;
if(JS_ValueToNumber(cx, value, &d))
prop_set_float(p, d);
} else if(JS_HasInstance(cx, RichText, value, &b) && b) {
JSObject *o = JSVAL_TO_OBJECT(value);
jsval v2;
if(!JS_EnterLocalRootScope(cx))
return;
if(!JS_GetProperty(cx, o, "text", &v2)) {
JS_LeaveLocalRootScope(cx);
return;
}
prop_set_string_ex(p, NULL, JS_GetStringBytes(JS_ValueToString(cx, v2)),
PROP_STR_RICH);
JS_LeaveLocalRootScope(cx);
} else if(JSVAL_IS_STRING(value)) {
js_prop_from_str(cx, p, value);
} else if(JSVAL_IS_OBJECT(value)) {
JSObject *obj = JSVAL_TO_OBJECT(value);
JSClass *c = JS_GetClass(cx, obj);
if(!strcmp(c->name, "XML")) // Treat some classes special
js_prop_from_str(cx, p, value);
else
js_prop_from_object(cx, obj, p);
} else {
prop_set_void(p);
}
}
示例2: register_LoadUrlImage_js
void register_LoadUrlImage_js(JSContext* cx, JSObject* global)
{
JS::RootedValue nsval(cx);
JS::RootedValue tmpval(cx);
JS::RootedObject pJsbObject(cx);
JS_GetProperty(cx, global, "LoadUrlImage", &nsval);
if (nsval == JSVAL_VOID) {
pJsbObject = JS_NewObject(cx, NULL, NULL, NULL);
nsval = OBJECT_TO_JSVAL(global);
JS_SetProperty(cx, global, "LoadUrlImage", nsval);
}
else
{
JS_ValueToObject(cx, nsval, &pJsbObject);
}
JS_DefineFunction(cx, global, "loadUrlImage", JSB_LoadUrlImage_loadUrlImage, 2, JSPROP_READONLY | JSPROP_PERMANENT);
}
示例3: getJSContext
void FFSessionHandler::disconnectDetectedImpl() {
JSContext* ctx = getJSContext();
if (!ctx) {
return;
}
Debug::log(Debug::Debugging) << "Getting function \"__gwt_disconnected\""
<< Debug::flush;
jsval funcVal;
if (!JS_GetProperty(ctx, global, "__gwt_disconnected", &funcVal)
|| funcVal == JSVAL_VOID) {
Debug::log(Debug::Error) << "Could not get function \"__gwt_disconnected\""
<< Debug::flush;
return;
}
jsval rval;
JS_CallFunctionValue(ctx, global, funcVal, 0, 0, &rval);
}
示例4: ScriptEvent_OnSwapBuffers
bool ScriptEvent_OnSwapBuffers(HDC hDC, BOOL & bSwapRes)
{
JSAutoCompartment ac(g_JsCx, g_JsGlobal);
jsval f;
if(!JS_GetProperty(g_JsCx, g_JsGlobal, "onSwapBuffers", &f) || JSVAL_IS_PRIMITIVE(f))
return false;
jsval y;
jsval x[1] = { JS_NumberValue((unsigned int)hDC) };
if(!JS_CallFunctionValue(g_JsCx, g_JsGlobal, f, 1, x, &y))
return false;
bSwapRes = JS::ToBoolean(y);
return true;
}
示例5: val
/**
* Get a field of an object as an object.
*
* If the field does not exist, create it. If it exists but is not an
* object, throw a JS error.
*/
JSObject *GetOrCreateObjectProperty(JSContext *cx, JS::Handle<JSObject*> aObject,
const char *aProperty)
{
JS::Rooted<JS::Value> val(cx);
if (!JS_GetProperty(cx, aObject, aProperty, &val)) {
return nullptr;
}
if (!val.isUndefined()) {
if (val.isObject()) {
return &val.toObject();
}
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr,
JSMSG_UNEXPECTED_TYPE, aProperty, "not an object");
return nullptr;
}
return JS_DefineObject(cx, aObject, aProperty, nullptr, nullptr,
JSPROP_ENUMERATE);
}
示例6: TaskEndWait
bool TaskEndWait( volatile ProcessEvent *pe, bool *hasEvent, JSContext *cx, JSObject * ) {
TaskEvent *upe = (TaskEvent*)pe;
*hasEvent = (upe->pv->pendingResponseCount > 0);
if ( !*hasEvent )
return true;
jsval fct, argv[2];
argv[1] = OBJECT_TO_JSVAL(upe->obj); // already rooted
JL_CHK( JS_GetProperty(cx, upe->obj, "onResponse", &fct) );
if ( JL_ValueIsCallable(cx, fct) )
JL_CHK( JS_CallFunctionValue(cx, upe->obj, fct, COUNTOF(argv)-1, argv+1, argv) );
return true;
JL_BAD;
}
示例7: js_prop_from_object
int
js_prop_from_object(JSContext *cx, JSObject *obj, prop_t *p)
{
JSIdArray *ida;
int i, r = 0;
const char *n;
int array_zapped = 0;
if((ida = JS_Enumerate(cx, obj)) == NULL)
return -1;
for(i = 0; i < ida->length; i++) {
jsval name, value;
if(!JS_IdToValue(cx, ida->vector[i], &name))
continue;
if(JSVAL_IS_STRING(name)) {
n = JS_GetStringBytes(JSVAL_TO_STRING(name));
if(!JS_GetProperty(cx, obj, n, &value))
continue;
} else if(JSVAL_IS_INT(name)) {
if(!JS_GetElement(cx, obj, JSVAL_TO_INT(name), &value) ||
JSVAL_IS_VOID(value))
continue;
if(!array_zapped) {
array_zapped = 1;
prop_destroy_by_name(p, NULL);
}
n = NULL;
} else {
continue;
}
if(JSVAL_TO_OBJECT(value) == obj)
continue;
js_prop_set_from_jsval(cx, prop_create(p, n), value);
}
JS_DestroyIdArray(cx, ida);
return r;
}
示例8: _scriptFileName
ComponentJS::ComponentJS(const std::string& scriptFileName)
: _scriptFileName(scriptFileName)
, _jsObj(nullptr)
{
ScriptingCore* engine = ScriptingCore::getInstance();
JSContext* cx = engine->getGlobalContext();
// Require script
JS::RootedValue classValue(cx);
_succeedLoadingScript = engine->requireScript(_scriptFileName.c_str(), &classValue);
if (_succeedLoadingScript)
{
JS::RootedObject classObj(cx, classValue.toObjectOrNull());
const JSClass* theClass = JS_GetClass(classObj);
JS::RootedValue protoValue(cx);
JS_GetProperty(cx, classObj, "prototype", &protoValue);
TypeTest<ComponentJS> t;
js_type_class_t *typeClass = nullptr;
std::string typeName = t.s_name();
auto typeMapIter = _js_global_type_map.find(typeName);
CCASSERT(typeMapIter != _js_global_type_map.end(), "Can't find the class type!");
typeClass = typeMapIter->second;
mozilla::Maybe<JS::PersistentRootedObject> *jsObj = new (std::nothrow) mozilla::Maybe<JS::PersistentRootedObject>();
JS::RootedObject proto(cx, protoValue.toObjectOrNull());
JS::RootedObject parent(cx, typeClass->proto.ref());
jsObj->construct(cx);
JS::RootedObject obj(cx, JS_NewObject(cx, theClass, proto, parent));
jsObj->ref() = obj;
// Unbind current proxy binding
js_proxy_t* jsproxy = js_get_or_create_proxy<ComponentJS>(cx, this);
JS::RemoveObjectRoot(cx, &jsproxy->obj);
jsb_remove_proxy(jsproxy);
// link the native object with the javascript object
jsb_new_proxy(this, jsObj->ref());
_jsObj = jsObj;
}
}
示例9: onFailure
void onFailure(const sdkbox::Product& info, const std::string& msg)
{
if (!s_cx)
{
return;
}
JSContext* cx = s_cx;
const char* func_name = "onFailure";
JS::RootedObject obj(cx, _JSDelegate);
JSAutoCompartment ac(cx, obj);
#if MOZJS_MAJOR_VERSION >= 31
bool hasAction;
JS::RootedValue retval(cx);
JS::RootedValue func_handle(cx);
#else
JSBool hasAction;
jsval retval;
jsval func_handle;
#endif
jsval dataVal[2];
jsval value = OBJECT_TO_JSVAL(product_to_obj(s_cx, info));
dataVal[0] = value;
dataVal[1] = std_string_to_jsval(cx, msg);
if (JS_HasProperty(cx, obj, func_name, &hasAction) && hasAction) {
if(!JS_GetProperty(cx, obj, func_name, &func_handle)) {
return;
}
if(func_handle == JSVAL_VOID) {
return;
}
#if MOZJS_MAJOR_VERSION >= 31
JS_CallFunctionName(cx, obj, func_name, JS::HandleValueArray::fromMarkedLocation(sizeof(dataVal)/sizeof(*dataVal), dataVal), &retval);
#else
JS_CallFunctionName(cx, obj, func_name, sizeof(dataVal)/sizeof(*dataVal), dataVal, &retval);
#endif
}
}
示例10: register_CCBuilderReader
void register_CCBuilderReader(JSContext *cx, JSObject *obj) {
jsval nsval;
JSObject *ns;
JS_GetProperty(cx, obj, "cc", &nsval);
if (nsval == JSVAL_VOID) {
ns = JS_NewObject(cx, NULL, NULL, NULL);
nsval = OBJECT_TO_JSVAL(ns);
JS_SetProperty(cx, obj, "cc", &nsval);
} else {
JS_ValueToObject(cx, nsval, &ns);
}
obj = ns;
JSObject *tmpObj = JSVAL_TO_OBJECT(anonEvaluate(cx, obj, "(function () { return cc._Reader; })()"));
JS_DefineFunction(cx, tmpObj, "create", js_CocosBuilder_create, 2, JSPROP_READONLY | JSPROP_PERMANENT);
JS_DefineFunction(cx, tmpObj, "loadScene", js_cocos2dx_CCBReader_createSceneWithNodeGraphFromFile, 2, JSPROP_READONLY | JSPROP_PERMANENT);
JS_DefineFunction(cx, jsb_CCBReader_prototype, "load", js_cocos2dx_CCBReader_readNodeGraphFromFile, 2, JSPROP_READONLY | JSPROP_PERMANENT);
JS_DefineFunction(cx, jsb_CCBAnimationManager_prototype, "setCompletedAnimationCallback", js_cocos2dx_CCBAnimationManager_animationCompleteCallback, 2, JSPROP_READONLY | JSPROP_PERMANENT);
}
示例11: rq
bool ScriptInterface::ReplaceNondeterministicRNG(boost::rand48& rng)
{
JSAutoRequest rq(m->m_cx);
JS::RootedValue math(m->m_cx);
JS::RootedObject global(m->m_cx, m->m_glob);
if (JS_GetProperty(m->m_cx, global, "Math", &math) && math.isObject())
{
JS::RootedObject mathObj(m->m_cx, &math.toObject());
JS::RootedFunction random(m->m_cx, JS_DefineFunction(m->m_cx, mathObj, "random", Math_random, 0,
JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT));
if (random)
{
m->m_rng = &rng;
return true;
}
}
LOGERROR("ReplaceNondeterministicRNG: failed to replace Math.random");
return false;
}
示例12: convert_symbol_to_js
static JSBool convert_symbol_to_js(JohnsonRuntime* runtime, VALUE symbol, jsval* retval)
{
JSContext * context = johnson_get_current_context(runtime);
PREPARE_JROOTS(context, 2);
VALUE to_s = CALL_RUBY_WRAPPER(rb_funcall_0, symbol, rb_intern("to_s"), 0);
jsval name = STRING_TO_JSVAL(JS_NewStringCopyN(context, StringValuePtr(to_s), (size_t) StringValueLen(to_s)));
JROOT(name);
// calls Johnson.symbolize(name) in JS-land. See lib/prelude.js
jsval nsJohnson;
JCHECK(JS_GetProperty(context, runtime->global, "Johnson", &nsJohnson));
JROOT(nsJohnson);
JCHECK(JS_CallFunctionName(context, JSVAL_TO_OBJECT(nsJohnson), "symbolize", 1, &name, retval));
JRETURN;
}
示例13: JS_GetProperty
LogicEntityPtr TraceMonkeyEngine::getCLogicEntity(JSObject* scriptingEntity)
{
// We do this in a slow but sure manner: read the uniqueId from JS,
// and look up the entity using that. In the future, speed this up
// using private data or some other method
jsval temp;
bool success = JS_GetProperty(context, scriptingEntity, "uniqueId", &temp);
assert(success);
assert(JSVAL_IS_INT(temp));
int uniqueId = JSVAL_TO_INT(temp);
LogicEntityPtr ret = LogicSystem::getLogicEntity(uniqueId);
Logging::log(Logging::DEBUG, "TraceMonkey getting the CLE for UID %d\r\n", uniqueId);
assert(ret.get());
return ret;
}
示例14: _scriptFileName
ComponentJS::ComponentJS(const std::string& scriptFileName)
: _scriptFileName(scriptFileName)
, _jsObj(nullptr)
{
ScriptingCore* engine = ScriptingCore::getInstance();
JSContext* cx = engine->getGlobalContext();
// Require script
JS::RootedValue classValue(cx);
_succeedLoadingScript = engine->requireScript(_scriptFileName.c_str(), &classValue);
if (_succeedLoadingScript)
{
JS::RootedObject classObj(cx, classValue.toObjectOrNull());
const JSClass* theClass = JS_GetClass(classObj);
JS::RootedValue protoValue(cx);
JS_GetProperty(cx, classObj, "prototype", &protoValue);
mozilla::Maybe<JS::PersistentRootedObject> *jsObj = new (std::nothrow) mozilla::Maybe<JS::PersistentRootedObject>();
js_type_class_t *typeClass = js_get_type_from_native<cocos2d::ComponentJS>(this);
JS::RootedObject proto(cx, protoValue.toObjectOrNull());
JS::RootedObject parent(cx, typeClass->proto.ref());
jsObj->construct(cx);
JS::RootedObject obj(cx, JS_NewObject(cx, theClass, proto, parent));
jsObj->ref() = obj;
// Unbind current proxy binding
js_proxy_t* nproxy = jsb_get_native_proxy(this);
if (nproxy)
{
#if CC_ENABLE_GC_FOR_NATIVE_OBJECTS
JS::RemoveObjectRoot(cx, &nproxy->obj);
#endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS
jsb_remove_proxy(nproxy, jsb_get_js_proxy(nproxy->obj));
}
// link the native object with the javascript object
jsb_new_proxy(this, jsObj->ref());
_jsObj = jsObj;
}
}
示例15: _egueb_script_js_sm_scripter_load
static Eina_Bool _egueb_script_js_sm_scripter_load(void *prv, Egueb_Dom_String *s, void **obj)
{
Egueb_Script_Js_Sm_Scripter *thiz = prv;
Egueb_Dom_String *uri = NULL;
jsval val;
JSObject *so;
Eina_Bool ret = EINA_FALSE;
const char *data;
*obj = NULL;
data = egueb_dom_string_chars_get(s);
/* get the document, get the uri of the document, pass it as the filename */
if (JS_GetProperty(thiz->cx, thiz->global, "document", &val))
{
JSObject *doc;
doc = JSVAL_TO_OBJECT(val);
if (ender_js_sm_is_instance(thiz->cx, doc))
{
Egueb_Dom_Node *n;
n = ender_js_sm_instance_ptr_get(thiz->cx, doc);
uri = egueb_dom_document_uri_get(n);
}
}
so = JS_CompileScript(thiz->cx, NULL, data, strlen(data),
uri ? egueb_dom_string_chars_get(uri) : NULL, 1);
if (so)
{
Egueb_Script_Js_Sm_Scripter_Script *script;
script = calloc(1, sizeof(Egueb_Script_Js_Sm_Scripter_Script));
script->obj = so;
*obj = script;
ret = EINA_TRUE;
}
if (uri)
{
egueb_dom_string_unref(uri);
}
return ret;
}