void Engine::createPredefinedObjects(JSContext *cx,JSObject *obj,HttpServerRequest &httpRequest) { JSObject *predefinedObj = NULL; predefinedObj = JS_DefineObject(cx,obj,"response",JsHttpServerResponse::getJsClass(),NULL,JSPROP_PERMANENT|JSPROP_READONLY|JSPROP_ENUMERATE); if ( predefinedObj==NULL ) { LogManager::getInstance()->warning(LOGGER_CLASSNAME,"Failed to create predefined \"response\" object"); } predefinedObj = JS_DefineObject(cx,obj,"request",JsHttpServerRequest::getJsClass(),NULL,JSPROP_PERMANENT|JSPROP_READONLY|JSPROP_ENUMERATE); if ( predefinedObj==NULL ) { LogManager::getInstance()->warning(LOGGER_CLASSNAME,"Failed to create predefined \"request\" object"); } predefinedObj = JS_DefineObject(cx,obj,"server",JsServer::getJsClass(),NULL,JSPROP_PERMANENT|JSPROP_READONLY|JSPROP_ENUMERATE); if ( predefinedObj==NULL ) { LogManager::getInstance()->warning(LOGGER_CLASSNAME,"Failed to create predefined \"server\" object"); } if ( httpRequest.getSession()!=NULL ) { predefinedObj = JS_DefineObject(cx,obj,"session",JsHttpSession::getJsClass(),NULL,JSPROP_PERMANENT|JSPROP_READONLY|JSPROP_ENUMERATE); if ( predefinedObj==NULL ) { LogManager::getInstance()->warning(LOGGER_CLASSNAME,"Failed to create predefined \"session\" object"); } else { JS_SetPrivate(cx,predefinedObj,new HttpSession::Ptr(httpRequest.getSession())); } } else { if ( JS_DefineProperty(cx,obj,"session",JSVAL_NULL,NULL,NULL,JSPROP_PERMANENT|JSPROP_READONLY|JSPROP_ENUMERATE)==JS_FALSE ) { LogManager::getInstance()->warning(LOGGER_CLASSNAME,"Failed to create predefined \"session\" object"); } } if ( httpRequest.getSite()!=NULL ) { predefinedObj = JS_DefineObject(cx,obj,"site",JsSite::getJsClass(),NULL,JSPROP_PERMANENT|JSPROP_READONLY|JSPROP_ENUMERATE); if ( predefinedObj==NULL ) { LogManager::getInstance()->warning(LOGGER_CLASSNAME,"Failed to create predefined \"site\" object"); } else { JS_SetPrivate(cx,predefinedObj,httpRequest.getSite()); } } else { if ( JS_DefineProperty(cx,obj,"site",JSVAL_NULL,NULL,NULL,JSPROP_PERMANENT|JSPROP_READONLY|JSPROP_ENUMERATE)==JS_FALSE ) { LogManager::getInstance()->warning(LOGGER_CLASSNAME,"Failed to create predefined \"site\" object"); } } }
/* * "Steal" calls to netscape.security.PrivilegeManager.enablePrivilege, * et. al. so that code that worked with 4.0 can still work. */ NS_IMETHODIMP nsSecurityNameSet::InitializeNameSet(nsIScriptContext* aScriptContext) { JSContext *cx = (JSContext *) aScriptContext->GetNativeContext(); JSObject *global = JS_GetGlobalObject(cx); /* * Find Object.prototype's class by walking up the global object's * prototype chain. */ JSObject *obj = global; JSObject *proto; JSAutoRequest ar(cx); while ((proto = JS_GetPrototype(cx, obj)) != nsnull) obj = proto; JSClass *objectClass = JS_GET_CLASS(cx, obj); jsval v; if (!JS_GetProperty(cx, global, "netscape", &v)) return NS_ERROR_FAILURE; JSObject *securityObj; if (JSVAL_IS_OBJECT(v)) { /* * "netscape" property of window object exists; get the * "security" property. */ obj = JSVAL_TO_OBJECT(v); if (!JS_GetProperty(cx, obj, "security", &v) || !JSVAL_IS_OBJECT(v)) return NS_ERROR_FAILURE; securityObj = JSVAL_TO_OBJECT(v); } else { /* define netscape.security object */ obj = JS_DefineObject(cx, global, "netscape", objectClass, nsnull, 0); if (obj == nsnull) return NS_ERROR_FAILURE; securityObj = JS_DefineObject(cx, obj, "security", objectClass, nsnull, 0); if (securityObj == nsnull) return NS_ERROR_FAILURE; } /* Define PrivilegeManager object with the necessary "static" methods. */ obj = JS_DefineObject(cx, securityObj, "PrivilegeManager", objectClass, nsnull, 0); if (obj == nsnull) return NS_ERROR_FAILURE; return JS_DefineFunctions(cx, obj, PrivilegeManager_static_methods) ? NS_OK : NS_ERROR_FAILURE; }
void webInit(JSContext *cx){ curl_global_init(CURL_GLOBAL_DEFAULT); curlHandle = curl_multi_init(); if(!curlHandle){ fprint(stderr,"Unable to start curl\n"); exit(EXIT_FAILURE); } JSObject* object = NULL; object = JS_DefineObject(cx, JS_GetGlobalObject(cx),"web", NULL, NULL,0); if(object) { static JSFunctionSpec webFuncSpec[5]= { JS_FS("getRq", webGetRq,0,0), JS_FS("postRq", webPostRq,0,0), JS_FS("launchBrowser",webLaunchBrowser,0,0), JS_FS("monsterHash",webMonsterHash,0,0), JS_FS_END }; if(!JS_DefineFunctions(cx, object, webFuncSpec)) fprint(stderr,"Unable to create web object\n"); print("loaded module web\n"); } else { fprint(stderr,"Problem creating web object, perhaps oom\n EXITING\n"); exit(EXIT_FAILURE); } }
JSObject* xgg_new_nodelist(XJSECTX* pctxa, JSObject* poparent) { JSBool b1; #ifdef NODELISTISCLASS JSObject* pobjbase = 0; JSObject* pobj = JS_DefineObject(pctxa->pctx, poparent, pszobjname, &class_nodelist, pobjbase, JSPROP_PERMANENT | JSPROP_READONLY | JSPROP_ENUMERATE); #else //NODELISTISCLASS JSObject* pobj = JS_NewArrayObject(pctxa->pctx, 0, NULL); if(pobj == 0) { XJSE_TRACE("(E) JS_NewArrayObject() failed!"); goto failed; } #if 0 b1 = JS_DefineFunctions(pctxa->pctx, pobj, funcs_nodelist); if(b1 != JS_TRUE) goto failed; b1 = JS_DefineProperties(pctxa->pctx, pobj, props_nodelist); if(b1 != JS_TRUE) goto failed; #endif #endif //NODELISTISCLASS // b1 = xgg_nodelist_ctor(pctxa->pctx, pobj, 0, 0, 0); //args, rval if(b1 != JS_TRUE) { XJSE_TRACE("(E) xgg_nodelist_ctor failed!"); } // return pobj; failed: return 0; }
JSBool Output_initialize (JSContext* cx) { JSBool result = JS_FALSE; JS_BeginRequest(cx); JS_EnterLocalRootScope(cx); jsval property; JSObject* output = JS_DefineObject(cx, ((LCGIData*) JS_GetContextPrivate(cx))->global, "Output", &Output_class, NULL, 0 ); if (output) { property = INT_TO_JSVAL(1024); JS_SetProperty(cx, output, "limit", &property); property = JSVAL_FALSE; JS_SetProperty(cx, output, "buffered", &property); property = JS_GetEmptyStringValue(cx); JS_SetProperty(cx, output, "content", &property); result = JS_TRUE; } JS_LeaveLocalRootScope(cx); JS_EndRequest(cx); return result; }
static js_setting_t * jss_create(JSContext *cx, JSObject *obj, const char *id, jsval *rval, JSObject *func, js_setting_group_t *jsg, int persistent) { if(jsg->jsg_root == NULL) { JS_ReportError(cx, "Settings group has been destroyed"); return NULL; } if(!JS_ObjectIsFunction(cx, func)) { JS_ReportError(cx, "Callback is not a function"); return NULL; } js_setting_t *jss = calloc(1, sizeof(js_setting_t)); jss->jss_cx = cx; jss->jss_refcount = 1; jss->jss_jsg = jsg; jss->jss_key = persistent && jsg->jsg_kv_url ? strdup(id) : NULL; LIST_INSERT_HEAD(&jsg->jsg_settings, jss, jss_link); atomic_add(&jsg->jsg_refcount, 1); JS_AddNamedRoot(cx, &jss->jss_obj, "jss"); jss->jss_obj = OBJECT_TO_JSVAL(JS_DefineObject(cx, obj, id, &setting_class, NULL, 0)); *rval = jss->jss_obj; JS_SetPrivate(cx, JSVAL_TO_OBJECT(jss->jss_obj), jss); jsval v = OBJECT_TO_JSVAL(func); JS_SetProperty(cx, JSVAL_TO_OBJECT(jss->jss_obj), "callback", &v); return jss; }
JSObject * js_InitNavigatorClass(JSContext *cx, JSObject *obj) { JSObject *Navigator; Navigator = JS_DefineObject(cx, obj, "navigator", &navigator_class, NULL, 0); if (!Navigator) return NULL; if (!JS_DefineFunctions(cx, Navigator, navigator_static_methods)) return NULL; if (!JS_DefineProperties(cx, Navigator, navigator_properties)) return NULL; CMNavigator *cmNav; cmNav = JS_malloc(cx, sizeof *cmNav); if (!cmNav) return NULL; memset(cmNav, 0 , sizeof *cmNav); cmNav->appVersion = JS_malloc(cx, strlen("Firefox/2")); cmNav->appVersion = strdup("Firefox/2"); JS_SetPrivate(cx, Navigator, cmNav); return Navigator; }
static JSObject * define_JavaPackage(JSContext *cx, JSObject *parent_obj, const char *obj_name, const char *path, int flags, int access) { JSObject *package_obj; JavaPackage_Private *package; package_obj = JS_DefineObject(cx, parent_obj, obj_name, &JavaPackage_class, 0, JSPROP_PERMANENT | access); if (!package_obj) return NULL; /* Attach private, native data to the JS object */ package = (JavaPackage_Private *)JS_malloc(cx, sizeof(JavaPackage_Private)); JS_SetPrivate(cx, package_obj, (void *)package); if (path) package->path = JS_strdup(cx, path); else package->path = ""; package->flags = flags; /* Check for OOM */ if (!package->path) { JS_DeleteProperty(cx, parent_obj, obj_name); JS_free(cx, package); return NULL; } return package_obj; }
JSBool beforeTest(JSContext *cx) { JSObject *global=JS_GetGlobalObject(cx); JS_DefineObject(cx,global,"testobj",&testobj_class,NULL,JSPROP_ENUMERATE|JSFUN_CONSTRUCTOR); }
ScriptInterface_impl::ScriptInterface_impl(const char* nativeScopeName, const shared_ptr<ScriptRuntime>& runtime) : m_runtime(runtime), m_glob(runtime->m_rt), m_nativeScope(runtime->m_rt) { bool ok; m_cx = JS_NewContext(m_runtime->m_rt, STACK_CHUNK_SIZE); ENSURE(m_cx); JS_SetParallelIonCompilationEnabled(m_runtime->m_rt, true); // For GC debugging: // JS_SetGCZeal(m_cx, 2); JS_SetContextPrivate(m_cx, NULL); JS_SetErrorReporter(m_cx, ErrorReporter); JS_SetGlobalJitCompilerOption(m_runtime->m_rt, JSJITCOMPILER_ION_ENABLE, 1); JS_SetGlobalJitCompilerOption(m_runtime->m_rt, JSJITCOMPILER_BASELINE_ENABLE, 1); JS::ContextOptionsRef(m_cx).setExtraWarnings(1) .setWerror(0) .setVarObjFix(1) .setStrictMode(1); JS::CompartmentOptions opt; opt.setVersion(JSVERSION_LATEST); JSAutoRequest rq(m_cx); JS::RootedObject globalRootedVal(m_cx, JS_NewGlobalObject(m_cx, &global_class, NULL, JS::OnNewGlobalHookOption::FireOnNewGlobalHook, opt)); m_comp = JS_EnterCompartment(m_cx, globalRootedVal); ok = JS_InitStandardClasses(m_cx, globalRootedVal); ENSURE(ok); m_glob = globalRootedVal.get(); // Use the testing functions to globally enable gcPreserveCode. This brings quite a // big performance improvement. In future SpiderMonkey versions, we should probably // use the functions implemented here: https://bugzilla.mozilla.org/show_bug.cgi?id=1068697 JS::RootedObject testingFunctionsObj(m_cx, js::GetTestingFunctions(m_cx)); ENSURE(testingFunctionsObj); JS::RootedValue ret(m_cx); JS_CallFunctionName(m_cx, testingFunctionsObj, "gcPreserveCode", JS::HandleValueArray::empty(), &ret); JS_DefineProperty(m_cx, m_glob, "global", globalRootedVal, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT); m_nativeScope = JS_DefineObject(m_cx, m_glob, nativeScopeName, NULL, NULL, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT); JS_DefineFunction(m_cx, globalRootedVal, "print", ::print, 0, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT); JS_DefineFunction(m_cx, globalRootedVal, "log", ::logmsg, 1, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT); JS_DefineFunction(m_cx, globalRootedVal, "warn", ::warn, 1, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT); JS_DefineFunction(m_cx, globalRootedVal, "error", ::error, 1, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT); JS_DefineFunction(m_cx, globalRootedVal, "deepcopy", ::deepcopy, 1, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT); Register("ProfileStart", ::ProfileStart, 1); Register("ProfileStop", ::ProfileStop, 0); runtime->RegisterContext(m_cx); }
JSObject* xjse_xgg_new_pluginhelper(XJSECTX* pctxa, const char* pszobjname) { JSObject* pobj = JS_DefineObject(pctxa->pctx, pctxa->poglobal, pszobjname, &class_xgg_pluginhelper, 0, JSPROP_PERMANENT | JSPROP_READONLY | JSPROP_ENUMERATE); return pobj; }
JSBool JS_SqlInit(JSContext *cx, JSObject *global) { JS_Log(JS_LOG_INFO, "%s\n", VERSION_STR); JSObject *obj; obj = JS_DefineObject(cx, global, "DriverManager", &DriverManager_class, NULL, JSPROP_ENUMERATE); if (!obj) { JS_Log(JS_LOG_ERR, "Failed to create the DriverManager object\n"); return JS_FALSE; } if (!JS_DefineFunctions(cx, obj, DriverManager_functions)) return JS_FALSE; JSObject *drivers = JS_NewArrayObject(cx, 0, NULL); if (drivers == NULL) return JS_FALSE; if (JS_DefineProperty(cx, obj, "drivers", OBJECT_TO_JSVAL(drivers), NULL, NULL, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT) == JS_FALSE) { JS_Log(JS_LOG_ERR, "Failed define drivers property\n"); return JS_FALSE; } JSObject *statement; statement = JS_DefineObject(cx, global, "Statement", NULL, NULL, JSPROP_ENUMERATE); if (!statement) { JS_Log(JS_LOG_ERR, "Failed to create the Statement object\n"); return JS_FALSE; } if (JS_DefineProperty(cx, statement, "RETURN_GENERATED_KEYS", JSVAL_ONE, NULL, NULL, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT) == JS_FALSE) { JS_Log(JS_LOG_ERR, "Failed define RETURN_GENERATED_KEYS property\n"); return JS_FALSE; } if (JS_DefineProperty(cx, statement, "NO_GENERATED_KEYS", JSVAL_ZERO, NULL, NULL, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT) == JS_FALSE) { JS_Log(JS_LOG_ERR, "Failed define NO_GENERATED_KEYS property\n"); return JS_FALSE; } return JS_TRUE; }
void CG_JS_Sys_Cvar_Init(JSContext *ctx, JSObject *Sys) { JSObject *cvar = JS_DefineObject(ctx, Sys, "Cvar", &cvar_class, NULL, 0); if (!cvar) CG_Error("Failed to Define javascript Cvar object\n"); if (!JS_DefineFunctions(ctx, cvar, cvar_static_methods)) CG_Error("Failed to Define javascript Cvar functions\n"); }
static JSObject * define_JavaPackage(JSContext *cx, JSObject *parent_obj, const char *obj_name, const char *path, int flags, int access) { JSObject *package_obj, *obj; JavaPackage_Private *package; jsval v; /* * Expose the same JSObject for Packages.java and java. * "java" will be defined during the java package initialization stage. * "Packages.java" will be lazily resolved by JavaPackage_resolve. * Ditto for sun and netscape. * See bugzilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=248409. */ if (!strcmp(obj_name, path) && (obj = JS_GetParent(cx, parent_obj)) && JS_LookupProperty(cx, obj, obj_name, &v) && !JSVAL_IS_PRIMITIVE(v)) { if (!JS_DefineProperty(cx, parent_obj, obj_name, v, NULL, NULL, JSPROP_PERMANENT | access)) { return NULL; } package_obj = JSVAL_TO_OBJECT(v); return package_obj; } package_obj = JS_DefineObject(cx, parent_obj, obj_name, &JavaPackage_class, 0, JSPROP_PERMANENT | access); if (!package_obj) return NULL; /* Attach private, native data to the JS object */ package = (JavaPackage_Private *)JS_malloc(cx, sizeof(JavaPackage_Private)); if (!package) { JS_DeleteProperty(cx, parent_obj, obj_name); return NULL; } JS_SetPrivate(cx, package_obj, (void *)package); if (path) package->path = JS_strdup(cx, path); else package->path = ""; package->flags = flags; /* Check for OOM */ if (!package->path) { JS_DeleteProperty(cx, parent_obj, obj_name); JS_free(cx, package); return NULL; } return package_obj; }
/* JavaScript DSO class global initializer */ JSObject *js_InitDSOClass(JSContext *cx, JSObject *obj) { JSObject *DSO; if ((DSO = JS_DefineObject(cx, obj, "DSO", &dso_class, NULL, 0)) == NULL) return NULL; if (!JS_DefineFunctions(cx, DSO, dso_methods)) return NULL; return DSO; }
JSObject* js_CreateConioObject(JSContext* cx, JSObject* parent) { JSObject* obj; if((obj = JS_DefineObject(cx, parent, "conio", &js_conio_class, NULL ,JSPROP_ENUMERATE|JSPROP_READONLY))==NULL) return(NULL); return(obj); }
JSBool init(JSContext* cx, JSObject* scope) { JSObject* newObj = JS_DefineObject(cx, scope, "Strings", NULL, NULL, 0); if(!newObj) return false; if(!JS_DefineFunctions(cx, newObj, functionsDefs)) return false; return true; }
ScriptInterface_impl::ScriptInterface_impl(const char* nativeScopeName, const shared_ptr<ScriptRuntime>& runtime) : m_runtime(runtime), m_glob(runtime->m_rt), m_nativeScope(runtime->m_rt) { bool ok; m_cx = JS_NewContext(m_runtime->m_rt, STACK_CHUNK_SIZE); ENSURE(m_cx); JS_SetOffthreadIonCompilationEnabled(m_runtime->m_rt, true); // For GC debugging: // JS_SetGCZeal(m_cx, 2, JS_DEFAULT_ZEAL_FREQ); JS_SetContextPrivate(m_cx, NULL); JS_SetErrorReporter(m_runtime->m_rt, ErrorReporter); JS_SetGlobalJitCompilerOption(m_runtime->m_rt, JSJITCOMPILER_ION_ENABLE, 1); JS_SetGlobalJitCompilerOption(m_runtime->m_rt, JSJITCOMPILER_BASELINE_ENABLE, 1); JS::RuntimeOptionsRef(m_cx).setExtraWarnings(1) .setWerror(0) .setVarObjFix(1) .setStrictMode(1); JS::CompartmentOptions opt; opt.setVersion(JSVERSION_LATEST); // Keep JIT code during non-shrinking GCs. This brings a quite big performance improvement. opt.setPreserveJitCode(true); JSAutoRequest rq(m_cx); JS::RootedObject globalRootedVal(m_cx, JS_NewGlobalObject(m_cx, &global_class, NULL, JS::OnNewGlobalHookOption::FireOnNewGlobalHook, opt)); m_comp = JS_EnterCompartment(m_cx, globalRootedVal); ok = JS_InitStandardClasses(m_cx, globalRootedVal); ENSURE(ok); m_glob = globalRootedVal.get(); JS_DefineProperty(m_cx, m_glob, "global", globalRootedVal, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT); m_nativeScope = JS_DefineObject(m_cx, m_glob, nativeScopeName, nullptr, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT); JS_DefineFunction(m_cx, globalRootedVal, "print", ::print, 0, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT); JS_DefineFunction(m_cx, globalRootedVal, "log", ::logmsg, 1, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT); JS_DefineFunction(m_cx, globalRootedVal, "warn", ::warn, 1, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT); JS_DefineFunction(m_cx, globalRootedVal, "error", ::error, 1, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT); JS_DefineFunction(m_cx, globalRootedVal, "deepcopy", ::deepcopy, 1, JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT); Register("ProfileStart", ::ProfileStart, 1); Register("ProfileStop", ::ProfileStop, 0); Register("ProfileAttribute", ::ProfileAttribute, 1); runtime->RegisterContext(m_cx); }
void CJSRuntime::InitializePrototypes(void) { protoList.resize(JSP_COUNT); JSContext *cx = jsContext; JSObject *obj = jsGlobal; protoList[JSP_CHAR] = JS_InitClass(cx, obj, NULL, &UOXChar_class.base, NULL, 0, CCharacterProps, CChar_Methods, NULL, NULL); protoList[JSP_ITEM] = JS_InitClass(cx, obj, NULL, &UOXItem_class.base, NULL, 0, CItemProps, CItem_Methods, NULL, NULL); protoList[JSP_SPELL] = JS_InitClass(cx, obj, NULL, &UOXSpell_class, NULL, 0, CSpellProperties, NULL, NULL, NULL); protoList[JSP_SPELLS] = JS_InitClass(cx, obj, NULL, &UOXSpells_class, NULL, 0, NULL, NULL, NULL, NULL); protoList[JSP_SOCK] = JS_InitClass(cx, obj, NULL, &UOXSocket_class.base, NULL, 0, CSocketProps, CSocket_Methods, NULL, NULL); protoList[JSP_ACCOUNTS] = JS_InitClass(cx, obj, NULL, &UOXAccount_class, NULL, 0, CAccountProperties, CAccount_Methods, NULL, NULL); protoList[JSP_CONSOLE] = JS_InitClass(cx, obj, NULL, &UOXConsole_class, NULL, 0, CConsoleProperties, CConsole_Methods, NULL, NULL); protoList[JSP_REGION] = JS_InitClass(cx, obj, NULL, &UOXRegion_class, NULL, 0, CRegionProperties, NULL, NULL, NULL); protoList[JSP_RESOURCE] = JS_InitClass(cx, obj, NULL, &UOXResource_class, NULL, 0, CResourceProperties, NULL, NULL, NULL); protoList[JSP_RACE] = JS_InitClass(cx, obj, NULL, &UOXRace_class, NULL, 0, CRaceProperties, CRace_Methods, NULL, NULL); protoList[JSP_GUILD] = JS_InitClass(cx, obj, NULL, &UOXGuild_class, NULL, 0, CGuildProperties, CGuild_Methods, NULL, NULL); protoList[JSP_PARTY] = JS_InitClass(cx, obj, NULL, &UOXParty_class.base, NULL, 0, CPartyProperties, CParty_Methods, NULL, NULL); protoList[JSP_PACKET] = JS_InitClass(cx, obj, NULL, &UOXPacket_class, Packet, 0, NULL, NULL, NULL, NULL); protoList[JSP_GUMP] = JS_InitClass(cx, obj, NULL, &UOXGump_class, Gump, 0, NULL, NULL, NULL, NULL); protoList[JSP_FILE] = JS_InitClass(cx, obj, NULL, &UOXFile_class, UOXCFile, 0, NULL, NULL, NULL, NULL); spellsObj = JS_DefineObject(cx, obj, "Spells", &UOXSpells_class, protoList[JSP_SPELLS], 0); accountsObj = JS_DefineObject(cx, obj, "Accounts", &UOXAccount_class, protoList[JSP_ACCOUNTS], 0); consoleObj = JS_DefineObject(cx, obj, "Console", &UOXConsole_class, protoList[JSP_CONSOLE], 0); protoList[JSACT_SQL] = JS_InitClass(cx, obj, NULL, &UOXSQLM_class, NULL, 0, CSQLMProperties, CSQLM_Methods, NULL, NULL); sqlmObj = JS_DefineObject(cx, obj, "SQLM", &UOXSQLM_class, protoList[JSACT_SQL], 0); JS_LockGCThing(cx, sqlmObj); JS_LockGCThing(cx, spellsObj); //JS_AddRoot(cx, &spellsObj); JS_LockGCThing(cx, accountsObj); //JS_AddRoot(cx, &accountsObj); JS_LockGCThing(cx, consoleObj); //JS_AddRoot(cx, &consoleObj); for (size_t i = JSP_ITEM; i < JSP_COUNT; ++i) { JS_LockGCThing(cx, protoList[i]); //JS_AddRoot(cx, &protoList[i]); } }
void JsSimpleAudioEngineBinding::BindingOnEngine(JSContext *context, JSObject *global) { JSFunctionSpec methods[] = { JS_FN("playBackgroundMusic", PlayBackgroundMusic, 1, 0), JS_FN("stopBackgroundMusic", StopBackgroundMusic, 1, 0), JS_FN("pauseBackgroundMusic", PauseBackgroundMusic, 0, 0), JS_FN("resumeBackgroundMusic", ResumeBackgroundMusic, 0, 0), JS_FN("setBackgroundMusicVolume", SetBackgroundMusicVolume, 1, 0), JS_FN("playEffect", PlayEffect, 1, 0), JS_FS_END }; JSObject *audioObj = JS_DefineObject(context, global, "Audio", &clz, 0, JSPROP_ENUMERATE); JS_DefineFunctions(context, audioObj, methods); }
JSObject * js_InitMathClass(JSContext *cx, JSObject *obj) { JSObject *Math; Math = JS_DefineObject(cx, obj, "Math", &math_class, NULL, 0); if (!Math) return NULL; if (!JS_DefineFunctions(cx, Math, math_static_methods)) return NULL; if (!JS_DefineConstDoubles(cx, Math, math_constants)) return NULL; return Math; }
void CG_JS_Sys_Init(JSContext *ctx, JSObject *global) { JSObject *Sys; int len = strlen(GAME_VERSION); char *gv = (char *)JS_malloc(ctx, len+1); Sys = JS_DefineObject(ctx, global, "Sys", &sys_class, NULL, 0); if (!Sys) CG_Error("Failed to Define javascript Sys object\n"); if (!JS_DefineFunctions(ctx, Sys, sys_static_methods)) CG_Error("Failed to Define javascript Sys functions\n"); if (!JS_DefineConstDoubles(ctx, Sys, sys_constants)) CG_Error("Failed to Define javascript Sys constants\n"); CG_JS_Sys_Cvar_Init(ctx, Sys); }
JSObject *init_caudium(JSContext *ctx) { JSObject *c; caudium_prog.type = PIKE_T_UNKNOWN; c = JS_DefineObject(ctx, global, "Caudium", &caudium_class, NULL, 0); if (!c) return NULL; if (!JS_DefineFunctions(ctx, c, caudium_functions)) return NULL; return c; }
JSObject * js_InitScreenClass (JSContext * cx, JSObject * obj) { JSObject *Screen; Screen = JS_DefineObject (cx, obj, "screen", &screen_class, NULL, 0); if (!Screen) return NULL; if (!JS_DefineFunctions (cx, Screen, screen_static_methods)) return NULL; if (!JS_DefineProperties (cx, Screen, screen_properties)) return NULL; return Screen; }
void utilInit(JSContext *cx){ JSObject* object = NULL; object = JS_DefineObject(cx, JS_GetGlobalObject(cx),"util", NULL, NULL,0); if(object) { static const JSFunctionSpec utilFuncSpec[2] = { JS_FS("forceGC", utilForceGC,0,0), JS_FS_END }; if(!JS_DefineFunctions(cx, object, utilFuncSpec)) fprint(stderr,"Unable to create util object\n"); //print("loaded module util\n"); } else { fprint(stderr,"Problem creating util object, perhaps oom\n EXITING\n"); exit(EXIT_FAILURE); } }
JSObject* DLLCALL js_CreateUserObject(JSContext* cx, JSObject* parent, scfg_t* cfg, char* name ,user_t* user, client_t* client, BOOL global_user) { JSObject* userobj; private_t* p; jsval val; if(name==NULL) userobj = JS_NewObject(cx, &js_user_class, NULL, parent); else if(JS_GetProperty(cx,parent,name,&val) && val!=JSVAL_VOID) userobj = JSVAL_TO_OBJECT(val); /* Return existing user object */ else userobj = JS_DefineObject(cx, parent, name, &js_user_class , NULL, JSPROP_ENUMERATE|JSPROP_READONLY); if(userobj==NULL) return(NULL); if((p=JS_GetPrivate(cx, userobj)) == NULL) /* Uses existing private pointer: Fix memory leak? */ if((p=(private_t*)malloc(sizeof(private_t)))==NULL) return(NULL); memset(p,0,sizeof(private_t)); p->client = client; p->cached = FALSE; p->user = &p->storage; if(user!=NULL) { p->storage = *user; if(global_user) p->user = user; } JS_SetPrivate(cx, userobj, p); #ifdef BUILD_JSDOCS js_DescribeSyncObject(cx,userobj ,"Instance of <i>User</i> class, representing current user online" ,310); js_DescribeSyncConstructor(cx,userobj ,"To create a new user object: <tt>var u = new User(<i>number</i>)</tt>"); js_CreateArrayOfStrings(cx, userobj ,"_property_desc_list", user_prop_desc, JSPROP_READONLY); #endif return(userobj); }
/** * 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, JSObject *aObject, const char *aProperty) { jsval val; if (JS_GetProperty(cx, aObject, aProperty, &val) && !JSVAL_IS_VOID(val)) { if (JSVAL_IS_OBJECT(val)) { return JSVAL_TO_OBJECT(val); } else { JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_UNEXPECTED_TYPE, aProperty, "not an object"); return NULL; } } return JS_DefineObject(cx, aObject, aProperty, NULL, NULL, JSPROP_ENUMERATE); }
JSBool OpenGL_initialize (JSContext* cx) { JSObject* object = JS_DefineObject( cx, JS_GetGlobalObject(cx), OpenGL_class.name, &OpenGL_class, NULL, JSPROP_PERMANENT|JSPROP_READONLY|JSPROP_ENUMERATE ); if (object) { JS_DefineFunctions(cx, object, OpenGL_methods); return JS_TRUE; } return JS_FALSE; }
/** * 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, JSObject *aObject, const char *aProperty) { JS::Value val; if (!JS_GetProperty(cx, aObject, aProperty, &val)) { return NULL; } if (!val.isUndefined()) { if (val.isObject()) { return &val.toObject(); } JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL, JSMSG_UNEXPECTED_TYPE, aProperty, "not an object"); return NULL; } return JS_DefineObject(cx, aObject, aProperty, NULL, NULL, JSPROP_ENUMERATE); }
/** * 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, JSPROP_ENUMERATE); }