JSBool JSB_Facebook_api(JSContext *cx, uint32_t argc, jsval *vp){ std::string graphPath ; std::string method ; std::string params ; std::string errorRet; jsval *argv = JS_ARGV(cx, vp); jsval_to_std_string(cx, argv[0], &graphPath); const char* pMethod = NULL; if(!JSVAL_IS_VOID(argv[1])){ jsval_to_std_string(cx, argv[1], &method); pMethod = method.c_str(); } const char* pParams = NULL; if(!JSVAL_IS_VOID(argv[2])){ jsval_to_std_string(cx, argv[2], ¶ms); pParams = params.c_str(); } errorRet = FacebookInterface::api(graphPath.c_str(),pMethod,pParams,JSVAL_TO_INT(argv[3])); if (errorRet.length() > 0) JS_SET_RVAL(cx, vp, std_string_to_jsval(cx,errorRet)); else JS_SET_RVAL(cx, vp, JSVAL_VOID); return JS_TRUE; }
void JSArmatureWrapper::movementCallbackFunc(cocostudio::Armature *armature, cocostudio::MovementEventType movementType, const std::string& movementID) { JSContext *cx = ScriptingCore::getInstance()->getGlobalContext(); JSObject *thisObj = JSVAL_IS_VOID(_jsThisObj) ? NULL : JSVAL_TO_OBJECT(_jsThisObj); js_proxy_t *proxy = js_get_or_create_proxy(cx, armature); jsval retval; if (_jsCallback != JSVAL_VOID) { int movementEventType = (int)movementType; jsval movementVal = INT_TO_JSVAL(movementEventType); jsval idVal = std_string_to_jsval(cx, movementID); jsval valArr[3]; valArr[0] = OBJECT_TO_JSVAL(proxy->obj); valArr[1] = movementVal; valArr[2] = idVal; JS_AddValueRoot(cx, valArr); JSB_AUTOCOMPARTMENT_WITH_GLOBAL_OBJCET JS_CallFunctionValue(cx, thisObj, _jsCallback, 3, valArr, &retval); JS_RemoveValueRoot(cx, valArr); } }
bool js_soomla_JSBinding_listen(JSContext *cx, uint32_t argc, jsval *vp) { jsval *argv = JS_ARGV(cx, vp); bool ok = true; if (argc == 1) { std::function<void (std::basic_string<char>)> arg0; do { std::shared_ptr<JSFunctionWrapper> func(new JSFunctionWrapper(cx, JS_THIS_OBJECT(cx, vp), argv[0])); auto lambda = [=](std::basic_string<char> larg0) -> void { jsval largv[1]; largv[0] = std_string_to_jsval(cx, larg0); jsval rval; bool ok = func->invoke(1, &largv[0], rval); if (!ok && JS_IsExceptionPending(cx)) { JS_ReportPendingException(cx); } }; arg0 = lambda; } while(0) ; JSB_PRECONDITION2(ok, cx, false, "js_soomla_JSBinding_listen : Error processing arguments"); Soomla::JSBinding::listen(arg0); JS_SET_RVAL(cx, vp, JSVAL_VOID); return true; } JS_ReportError(cx, "js_soomla_JSBinding_listen : wrong number of arguments"); return false; }
jsval shareInfo_to_jsval(JSContext* cx, const sdkbox::PluginShare::ShareResponse& response) { JS::RootedObject proto(cx); JS::RootedObject parent(cx); #if defined(MOZJS_MAJOR_VERSION) and MOZJS_MAJOR_VERSION >= 26 JS::RootedObject jsRet(cx, JS_NewObject(cx, NULL, proto, parent)); #else JSObject *jsRet = JS_NewObject(cx, NULL, NULL, NULL); #endif #if defined(MOZJS_MAJOR_VERSION) and MOZJS_MAJOR_VERSION >= 26 JS::RootedValue state(cx); #else jsval state; #endif state = int32_to_jsval(cx, response.state); #if defined(MOZJS_MAJOR_VERSION) and MOZJS_MAJOR_VERSION >= 26 JS_SetProperty(cx, jsRet, "state", state); #else JS_SetProperty(cx, jsRet, "state", &state); #endif #if defined(MOZJS_MAJOR_VERSION) and MOZJS_MAJOR_VERSION >= 26 JS::RootedValue errStr(cx); #else jsval errStr; #endif errStr = std_string_to_jsval(cx, response.error); #if defined(MOZJS_MAJOR_VERSION) and MOZJS_MAJOR_VERSION >= 26 JS_SetProperty(cx, jsRet, "error", errStr); #else JS_SetProperty(cx, jsRet, "error", &errStr); #endif return OBJECT_TO_JSVAL(jsRet); }
void JSArmatureWrapper::frameCallbackFunc(cocostudio::Bone *bone, const std::string& evt, int originFrameIndex, int currentFrameIndex) { JSB_AUTOCOMPARTMENT_WITH_GLOBAL_OBJCET JSContext *cx = ScriptingCore::getInstance()->getGlobalContext(); JSObject *thisObj = JSVAL_IS_VOID(_jsThisObj) ? NULL : JSVAL_TO_OBJECT(_jsThisObj); js_proxy_t *proxy = js_get_or_create_proxy(cx, bone); jsval retval; if (_jsCallback != JSVAL_VOID) { jsval nameVal = std_string_to_jsval(cx, evt); jsval originIndexVal = INT_TO_JSVAL(originFrameIndex); jsval currentIndexVal = INT_TO_JSVAL(currentFrameIndex); jsval valArr[4]; valArr[0] = OBJECT_TO_JSVAL(proxy->obj); valArr[1] = nameVal; valArr[2] = originIndexVal; valArr[3] = currentIndexVal; JS_AddValueRoot(cx, valArr); JS_CallFunctionValue(cx, thisObj, _jsCallback, 4, valArr, &retval); JS_RemoveValueRoot(cx, valArr); } }
JSObject* product_to_obj(JSContext* cx, const sdkbox::Product& p) { #if MOZJS_MAJOR_VERSION >= 31 JS::RootedObject jsobj(cx, JS_NewObject(cx, NULL, JS::NullPtr(), JS::NullPtr())); JS::RootedValue name(cx); JS::RootedValue id(cx); JS::RootedValue title(cx); JS::RootedValue description(cx); JS::RootedValue price(cx); name = std_string_to_jsval(cx, p.name); JS_SetProperty(cx, jsobj, "name", name); id = std_string_to_jsval(cx, p.id); JS_SetProperty(cx, jsobj, "id", id); title = std_string_to_jsval(cx, p.title); JS_SetProperty(cx, jsobj, "title", title); description = std_string_to_jsval(cx, p.description); JS_SetProperty(cx, jsobj, "description", description); price = std_string_to_jsval(cx, p.price); JS_SetProperty(cx, jsobj, "price", price); #else JSObject* jsobj = JS_NewObject(cx, NULL, NULL, NULL); jsval name; jsval id; jsval title; jsval description; jsval price; name = std_string_to_jsval(cx, p.name); JS_SetProperty(cx, jsobj, "name", &name); id = std_string_to_jsval(cx, p.id); JS_SetProperty(cx, jsobj, "id", &id); title = std_string_to_jsval(cx, p.title); JS_SetProperty(cx, jsobj, "title", &title); description = std_string_to_jsval(cx, p.description); JS_SetProperty(cx, jsobj, "description", &description); price = std_string_to_jsval(cx, p.price); JS_SetProperty(cx, jsobj, "price", &price); #endif return jsobj; }
void js_register_cocos2dx_experimental_video_VideoPlayer(JSContext *cx, JS::HandleObject global) { jsb_cocos2d_experimental_ui_VideoPlayer_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_cocos2d_experimental_ui_VideoPlayer_class->name = "VideoPlayer"; jsb_cocos2d_experimental_ui_VideoPlayer_class->addProperty = JS_PropertyStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->delProperty = JS_DeletePropertyStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->getProperty = JS_PropertyStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->setProperty = JS_StrictPropertyStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->enumerate = JS_EnumerateStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->resolve = JS_ResolveStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->convert = JS_ConvertStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FN("getFileName", js_cocos2dx_experimental_video_VideoPlayer_getFileName, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getURL", js_cocos2dx_experimental_video_VideoPlayer_getURL, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("play", js_cocos2dx_experimental_video_VideoPlayer_play, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setKeepAspectRatioEnabled", js_cocos2dx_experimental_video_VideoPlayer_setKeepAspectRatioEnabled, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("stop", js_cocos2dx_experimental_video_VideoPlayer_stop, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setFullScreenEnabled", js_cocos2dx_experimental_video_VideoPlayer_setFullScreenEnabled, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setFileName", js_cocos2dx_experimental_video_VideoPlayer_setFileName, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setURL", js_cocos2dx_experimental_video_VideoPlayer_setURL, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("isKeepAspectRatioEnabled", js_cocos2dx_experimental_video_VideoPlayer_isKeepAspectRatioEnabled, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("onPlayEvent", js_cocos2dx_experimental_video_VideoPlayer_onPlayEvent, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("isFullScreenEnabled", js_cocos2dx_experimental_video_VideoPlayer_isFullScreenEnabled, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("isPlaying", js_cocos2dx_experimental_video_VideoPlayer_isPlaying, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("seekTo", js_cocos2dx_experimental_video_VideoPlayer_seekTo, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("create", js_cocos2dx_experimental_video_VideoPlayer_create, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; JS::RootedObject parent_proto(cx, jsb_cocos2d_ui_Widget_prototype); jsb_cocos2d_experimental_ui_VideoPlayer_prototype = JS_InitClass( cx, global, parent_proto, jsb_cocos2d_experimental_ui_VideoPlayer_class, js_cocos2dx_experimental_video_VideoPlayer_constructor, 0, // constructor properties, funcs, NULL, // no static properties st_funcs); JS::RootedObject proto(cx, jsb_cocos2d_experimental_ui_VideoPlayer_prototype); JS::RootedValue className(cx, std_string_to_jsval(cx, "VideoPlayer")); JS_SetProperty(cx, proto, "_className", className); JS_SetProperty(cx, proto, "__nativeObj", JS::TrueHandleValue); JS_SetProperty(cx, proto, "__is_ref", JS::TrueHandleValue); // add the proto and JSClass to the type->js info hash table jsb_register_class<cocos2d::experimental::ui::VideoPlayer>(cx, jsb_cocos2d_experimental_ui_VideoPlayer_class, proto, parent_proto); }
void onRewardVideoDidFinish(int amount, const std::string& name) { JSContext* cx = s_cx; ADCallbackJS* cb = new ADCallbackJS(); cb->_name = "onRewardVideoDidFinish"; cb->_paramVal[0] = INT_TO_JSVAL(amount);; cb->_paramVal[1] = std_string_to_jsval(cx, name); cb->_paramLen = 2; cb->schedule(); cb->autorelease(); }
bool js_cocos2dx_audioengine_AudioProfile_get_name(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); js_proxy_t *proxy = jsb_get_js_proxy(args.thisv().toObjectOrNull()); cocos2d::experimental::AudioProfile* cobj = (cocos2d::experimental::AudioProfile *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_audioengine_AudioProfile_get_name : Invalid Native Object"); jsval jsret = std_string_to_jsval(cx, cobj->name); args.rval().set(jsret); return true; }
JSBool js_PluginFacebookJS_PluginFacebook_getSDKVersion(JSContext *cx, uint32_t argc, jsval *vp) { if (argc == 0) { std::string ret = sdkbox::PluginFacebook::getSDKVersion(); jsval jsret; jsret = std_string_to_jsval(cx, ret); JS_SET_RVAL(cx, vp, jsret); return JS_TRUE; } JS_ReportError(cx, "wrong number of arguments"); return JS_FALSE; }
JSBool js_PluginChartboostJS_PluginChartboost_getCustomID(JSContext *cx, uint32_t argc, jsval *vp) { if (argc == 0) { std::string ret = sdkbox::PluginChartboost::getCustomID(); jsval jsret; jsret = std_string_to_jsval(cx, ret); JS_SET_RVAL(cx, vp, jsret); return JS_TRUE; } JS_ReportError(cx, "wrong number of arguments"); return JS_FALSE; }
virtual void editBoxTextChanged(EditBox* editBox, const std::string& text) { js_proxy_t * p = jsb_get_native_proxy(editBox); if (!p) return; jsval dataVal[2]; dataVal[0] = OBJECT_TO_JSVAL(p->obj); std::string arg1 = text; dataVal[1] = std_string_to_jsval(ScriptingCore::getInstance()->getGlobalContext(), arg1); ScriptingCore::getInstance()->executeFunctionWithOwner(OBJECT_TO_JSVAL(_JSDelegate), "editBoxTextChanged", 2, dataVal, NULL); }
jsval TProductInfo_to_jsval(JSContext *cx, TProductInfo& ret) { JSObject *tmp = JS_NewObject(cx, NULL, NULL, NULL); if (!tmp) return JSVAL_NULL; for (TProductInfo::iterator it = ret.begin(); it != ret.end(); ++it) { JS_DefineProperty(cx, tmp, it->first.c_str(), std_string_to_jsval(cx, it->second), NULL, NULL, JSPROP_ENUMERATE | JSPROP_PERMANENT); } return OBJECT_TO_JSVAL(tmp); }
JSBool js_PluginAdColonyJS_PluginAdColony_getAdvertisingIdentifier(JSContext *cx, uint32_t argc, jsval *vp) { if (argc == 0) { std::string ret = sdkbox::PluginAdColony::getAdvertisingIdentifier(); jsval jsret; jsret = std_string_to_jsval(cx, ret); JS_SET_RVAL(cx, vp, jsret); return JS_TRUE; } JS_ReportError(cx, "wrong number of arguments"); return JS_FALSE; }
jsval animationInfo_to_jsval(JSContext* cx, const cocostudio::timeline::AnimationInfo& v) { JS::RootedObject tmp(cx, JS_NewObject(cx, NULL, JS::NullPtr(), JS::NullPtr())); if (!tmp) return JSVAL_NULL; JS::RootedValue jsname(cx, std_string_to_jsval(cx, v.name)); bool ok = JS_DefineProperty(cx, tmp, "name", jsname, JSPROP_ENUMERATE | JSPROP_PERMANENT) && JS_DefineProperty(cx, tmp, "startIndex", v.startIndex, JSPROP_ENUMERATE | JSPROP_PERMANENT) && JS_DefineProperty(cx, tmp, "endIndex", v.endIndex, JSPROP_ENUMERATE | JSPROP_PERMANENT); if (ok) { return OBJECT_TO_JSVAL(tmp); } return JSVAL_NULL; }
bool js_PluginChartboostJS_PluginChartboost_getCustomID(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); if (argc == 0) { std::string ret = sdkbox::PluginChartboost::getCustomID(); jsval jsret = JSVAL_NULL; jsret = std_string_to_jsval(cx, ret); args.rval().set(jsret); return true; } JS_ReportError(cx, "js_PluginChartboostJS_PluginChartboost_getCustomID : wrong number of arguments"); return false; }
bool js_PluginAdColonyJS_PluginAdColony_getAdvertisingIdentifier(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); if (argc == 0) { std::string ret = sdkbox::PluginAdColony::getAdvertisingIdentifier(); jsval jsret = JSVAL_NULL; jsret = std_string_to_jsval(cx, ret); args.rval().set(jsret); return true; } JS_ReportError(cx, "js_PluginAdColonyJS_PluginAdColony_getAdvertisingIdentifier : wrong number of arguments"); return false; }
bool js_PluginFacebookJS_PluginFacebook_getSDKVersion(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); if (argc == 0) { std::string ret = sdkbox::PluginFacebook::getSDKVersion(); jsval jsret = JSVAL_NULL; jsret = std_string_to_jsval(cx, ret); args.rval().set(jsret); return true; } JS_ReportError(cx, "js_PluginFacebookJS_PluginFacebook_getSDKVersion : wrong number of arguments"); return false; }
void js_register_coolexp_ErayLayer(JSContext *cx, JS::HandleObject global) { jsb_ErayLayer_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_ErayLayer_class->name = "ErayLayer"; jsb_ErayLayer_class->addProperty = JS_PropertyStub; jsb_ErayLayer_class->delProperty = JS_DeletePropertyStub; jsb_ErayLayer_class->getProperty = JS_PropertyStub; jsb_ErayLayer_class->setProperty = JS_StrictPropertyStub; jsb_ErayLayer_class->enumerate = JS_EnumerateStub; jsb_ErayLayer_class->resolve = JS_ResolveStub; jsb_ErayLayer_class->convert = JS_ConvertStub; jsb_ErayLayer_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FN("init", js_coolexp_ErayLayer_init, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setDelegate", js_coolexp_ErayLayer_setDelegate, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("ctor", js_coolexp_ErayLayer_ctor, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("create", js_coolexp_ErayLayer_create, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; JS::RootedObject parent_proto(cx, jsb_cocos2d_Layer_prototype); jsb_ErayLayer_prototype = JS_InitClass( cx, global, parent_proto, jsb_ErayLayer_class, js_coolexp_ErayLayer_constructor, 0, // constructor properties, funcs, NULL, // no static properties st_funcs); JS::RootedObject proto(cx, jsb_ErayLayer_prototype); JS::RootedValue className(cx, std_string_to_jsval(cx, "ErayLayer")); JS_SetProperty(cx, proto, "_className", className); JS_SetProperty(cx, proto, "__nativeObj", JS::TrueHandleValue); JS_SetProperty(cx, proto, "__is_ref", JS::TrueHandleValue); // add the proto and JSClass to the type->js info hash table jsb_register_class<ErayLayer>(cx, jsb_ErayLayer_class, proto, parent_proto); anonEvaluate(cx, global, "(function () { .ErayLayer.extend = cc.Class.extend; })()"); }
// convert buffer to json bool js_FlatUtil_flat2js(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); bool ok = true; if (4 == argc) { std::string arg0; ok &= jsval_to_std_string(cx, args.get(0), &arg0); JSB_PRECONDITION2(ok, cx, false, "js_FlatUtil_flat2js : Error processing arguments"); cocos2d::Data arg1; uint8_t *bufdata = NULL; uint32_t len = 0; JSObject* jsobj = args.get(1).toObjectOrNull(); if (JS_IsArrayBufferObject(jsobj)) { bufdata = JS_GetArrayBufferData(jsobj); len = JS_GetArrayBufferByteLength(jsobj); } else if (JS_IsArrayBufferViewObject(jsobj)) { bufdata = (uint8_t*)JS_GetArrayBufferViewData(jsobj); len = JS_GetArrayBufferViewByteLength(jsobj); } JSB_PRECONDITION2(bufdata && len > 0, cx, false, "js_FlatUtil_flat2js : Error processing arguments"); arg1.copy(bufdata, len); std::string arg2; ok &= jsval_to_std_string(cx, args.get(2), &arg2); JSB_PRECONDITION2(ok, cx, false, "js_FlatUtil_flat2js : Error processing arguments"); bool arg3; arg3 = JS::ToBoolean(args.get(3)); auto ret = FlatUtil::flat2js(arg0, arg1, arg2, arg3); jsval jsret = JSVAL_NULL; jsret = std_string_to_jsval(cx, ret); args.rval().set(jsret); return true; } JS_ReportError(cx, "js_FlatUtil_flat2js : wrong number of arguments"); return false; }
bool js_soomla_JSBinding_callNative(JSContext *cx, uint32_t argc, jsval *vp) { jsval *argv = JS_ARGV(cx, vp); bool ok = true; if (argc == 1) { const char* arg0; std::string arg0_tmp; ok &= jsval_to_std_string(cx, argv[0], &arg0_tmp); arg0 = arg0_tmp.c_str(); JSB_PRECONDITION2(ok, cx, false, "js_soomla_JSBinding_callNative : Error processing arguments"); std::string ret = Soomla::JSBinding::callNative(arg0); jsval jsret = JSVAL_NULL; jsret = std_string_to_jsval(cx, ret); JS_SET_RVAL(cx, vp, jsret); return true; } JS_ReportError(cx, "js_soomla_JSBinding_callNative : wrong number of arguments"); return false; }
bool js_autogentestbindings_SimpleNativeClass_returnsAString(JSContext *cx, uint32_t argc, jsval *vp) { JSObject *obj = JS_THIS_OBJECT(cx, vp); js_proxy_t *proxy = jsb_get_js_proxy(obj); SimpleNativeClass* cobj = (SimpleNativeClass *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_autogentestbindings_SimpleNativeClass_returnsAString : Invalid Native Object"); if (argc == 0) { std::string ret = cobj->returnsAString(); jsval jsret = JSVAL_NULL; jsret = std_string_to_jsval(cx, ret); JS_SET_RVAL(cx, vp, jsret); return true; } JS_ReportError(cx, "js_autogentestbindings_SimpleNativeClass_returnsAString : wrong number of arguments: %d, was expecting %d", argc, 0); return false; }
bool js_cocos2dx_cocosAds_CocosAds_addInterstitialAdListener(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); CocosAds* cobj = (CocosAds *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_cocosAds_CocosAds_addInterstitialAdListener : Invalid Native Object"); if (argc == 1) { std::function<void (int, std::basic_string<char>)> arg0; do { if(JS_TypeOfValue(cx, args.get(0)) == JSTYPE_FUNCTION) { std::shared_ptr<JSFunctionWrapper> func(new JSFunctionWrapper(cx, args.thisv().toObjectOrNull(), args.get(0))); auto lambda = [=](int larg0, std::basic_string<char> larg1) -> void { cocos2d::Director::getInstance()->getScheduler()->performFunctionInCocosThread([=]{ JSB_AUTOCOMPARTMENT_WITH_GLOBAL_OBJCET jsval largv[2]; largv[0] = int32_to_jsval(cx, larg0); largv[1] = std_string_to_jsval(cx, larg1); JS::RootedValue rval(cx); bool succeed = func->invoke(2, &largv[0], &rval); if (!succeed && JS_IsExceptionPending(cx)) { JS_ReportPendingException(cx); } }); }; arg0 = lambda; } else { arg0 = nullptr; } } while(0) ; JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_cocosAds_CocosAds_addInterstitialAdListener : Error processing arguments"); cobj->addInterstitialAdListener(arg0); args.rval().setUndefined(); return true; } JS_ReportError(cx, "js_cocos2dx_cocosAds_CocosAds_addInterstitialAdListener : wrong number of arguments: %d, was expecting %d", argc, 1); return false; }
bool js_cocos2dx_nativehelper_NativeHelper_test(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); cocos2d::NativeHelper* cobj = (cocos2d::NativeHelper *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_nativehelper_NativeHelper_test : Invalid Native Object"); if (argc == 0) { std::string ret = cobj->test(); jsval jsret = JSVAL_NULL; jsret = std_string_to_jsval(cx, ret); args.rval().set(jsret); return true; } JS_ReportError(cx, "js_cocos2dx_nativehelper_NativeHelper_test : wrong number of arguments: %d, was expecting %d", argc, 0); return false; }
static JSBool js_cocos2dx_md5(JSContext *cx, uint32_t argc, jsval *vp) { jsval *argv = JS_ARGV(cx, vp); if (argc == 1) { std::string text = std::string(); do { JSBool ok = jsval_to_std_string(cx, argv[0], &text); JSB_PRECONDITION2( ok, cx, JS_FALSE, "Error processing arguments"); } while (0); std::string std = md5(text); JS_SET_RVAL(cx, vp, std_string_to_jsval(cx, std)); return JS_TRUE; } JS_ReportError(cx, "wrong number of arguments: %d, was expecting %d", argc, 1); return JS_FALSE; }
jsval TSScriptJS::JSCallFuncName(const char *name, int count, ...) { ScriptingCore* sc = ScriptingCore::getInstance(); int argc = count; jsval res; jsval *argv = new jsval[count]; va_list insvalist; va_start(insvalist,count); for (int i = 0; i < count; ++i) { const char* _str =va_arg(insvalist,const char *); std::string sttr=std::string("")+_str; argv[i] = std_string_to_jsval(sc->getGlobalContext(),sttr); } va_end(insvalist) ; JS_CallFunctionName(sc->getGlobalContext(), sc->getGlobalObject(), name, argc, argv, &res); delete [] argv; return res ; }
void js_register_coolexp_ErayUIHelper(JSContext *cx, JS::HandleObject global) { jsb_ErayUIHelper_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_ErayUIHelper_class->name = "ErayUIHelper"; jsb_ErayUIHelper_class->addProperty = JS_PropertyStub; jsb_ErayUIHelper_class->delProperty = JS_DeletePropertyStub; jsb_ErayUIHelper_class->getProperty = JS_PropertyStub; jsb_ErayUIHelper_class->setProperty = JS_StrictPropertyStub; jsb_ErayUIHelper_class->enumerate = JS_EnumerateStub; jsb_ErayUIHelper_class->resolve = JS_ResolveStub; jsb_ErayUIHelper_class->convert = JS_ConvertStub; jsb_ErayUIHelper_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("log", js_coolexp_ErayUIHelper_log, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; jsb_ErayUIHelper_prototype = JS_InitClass( cx, global, JS::NullPtr(), jsb_ErayUIHelper_class, dummy_constructor<ErayUIHelper>, 0, // no constructor properties, funcs, NULL, // no static properties st_funcs); JS::RootedObject proto(cx, jsb_ErayUIHelper_prototype); JS::RootedValue className(cx, std_string_to_jsval(cx, "ErayUIHelper")); JS_SetProperty(cx, proto, "_className", className); JS_SetProperty(cx, proto, "__nativeObj", JS::TrueHandleValue); JS_SetProperty(cx, proto, "__is_ref", JS::FalseHandleValue); // add the proto and JSClass to the type->js info hash table jsb_register_class<ErayUIHelper>(cx, jsb_ErayUIHelper_class, proto, JS::NullPtr()); }
bool js_cocos2dx_nativehelper_NativeHelper_setPacketAssembler(JSContext *cx, uint32_t argc, jsval *vp) { JS::CallArgs args = JS::CallArgsFromVp(argc, vp); bool ok = true; JS::RootedObject obj(cx, args.thisv().toObjectOrNull()); js_proxy_t *proxy = jsb_get_js_proxy(obj); cocos2d::NativeHelper* cobj = (cocos2d::NativeHelper *)(proxy ? proxy->ptr : NULL); JSB_PRECONDITION2( cobj, cx, false, "js_cocos2dx_nativehelper_NativeHelper_setPacketAssembler : Invalid Native Object"); if (argc == 1) { std::function<void (std::basic_string<char>, int)> arg0; do { if(JS_TypeOfValue(cx, args.get(0)) == JSTYPE_FUNCTION) { std::shared_ptr<JSFunctionWrapper> func(new JSFunctionWrapper(cx, args.thisv().toObjectOrNull(), args.get(0))); auto lambda = [=](std::basic_string<char> larg0, int larg1) -> void { JSB_AUTOCOMPARTMENT_WITH_GLOBAL_OBJCET jsval largv[2]; largv[0] = std_string_to_jsval(cx, larg0); largv[1] = int32_to_jsval(cx, larg1); JS::RootedValue rval(cx); bool ok = func->invoke(2, &largv[0], &rval); if (!ok && JS_IsExceptionPending(cx)) { JS_ReportPendingException(cx); } }; arg0 = lambda; } else { arg0 = nullptr; } } while(0) ; JSB_PRECONDITION2(ok, cx, false, "js_cocos2dx_nativehelper_NativeHelper_setPacketAssembler : Error processing arguments"); cobj->setPacketAssembler(arg0); args.rval().setUndefined(); return true; } JS_ReportError(cx, "js_cocos2dx_nativehelper_NativeHelper_setPacketAssembler : wrong number of arguments: %d, was expecting %d", argc, 1); return false; }
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 } }
// Arguments: char* // Ret value: const char* bool JSB_localStorageGetItem(JSContext *cx, uint32_t argc, jsval *vp) { JSB_PRECONDITION2( argc == 1, cx, false, "Invalid number of arguments" ); JS::CallArgs args = JS::CallArgsFromVp(argc, vp); bool ok = true; std::string arg0; ok &= jsval_to_std_string( cx, args.get(0), &arg0 ); JSB_PRECONDITION2(ok, cx, false, "Error processing arguments"); std::string ret_val; ok = localStorageGetItem(arg0, &ret_val); if (ok) { jsval ret_jsval = std_string_to_jsval(cx, ret_val); args.rval().set(ret_jsval); } else { args.rval().set(JSVAL_NULL); } return true; }