⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jsapi.h

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 H
📖 第 1 页 / 共 5 页
字号:
#define JS_DestroyRuntime   JS_Finish#define JS_LockRuntime      JS_Lock#define JS_UnlockRuntime    JS_Unlockextern JS_PUBLIC_API(JSRuntime *)JS_NewRuntime(uint32 maxbytes);extern JS_PUBLIC_API(void)JS_DestroyRuntime(JSRuntime *rt);extern JS_PUBLIC_API(void)JS_ShutDown(void);JS_PUBLIC_API(void *)JS_GetRuntimePrivate(JSRuntime *rt);JS_PUBLIC_API(void)JS_SetRuntimePrivate(JSRuntime *rt, void *data);#ifdef JS_THREADSAFEextern JS_PUBLIC_API(void)JS_BeginRequest(JSContext *cx);extern JS_PUBLIC_API(void)JS_EndRequest(JSContext *cx);/* Yield to pending GC operations, regardless of request depth */extern JS_PUBLIC_API(void)JS_YieldRequest(JSContext *cx);extern JS_PUBLIC_API(jsrefcount)JS_SuspendRequest(JSContext *cx);extern JS_PUBLIC_API(void)JS_ResumeRequest(JSContext *cx, jsrefcount saveDepth);#endif /* JS_THREADSAFE */extern JS_PUBLIC_API(void)JS_Lock(JSRuntime *rt);extern JS_PUBLIC_API(void)JS_Unlock(JSRuntime *rt);extern JS_PUBLIC_API(JSContext *)JS_NewContext(JSRuntime *rt, size_t stackChunkSize);extern JS_PUBLIC_API(void)JS_DestroyContext(JSContext *cx);extern JS_PUBLIC_API(void)JS_DestroyContextNoGC(JSContext *cx);extern JS_PUBLIC_API(void)JS_DestroyContextMaybeGC(JSContext *cx);extern JS_PUBLIC_API(void *)JS_GetContextPrivate(JSContext *cx);extern JS_PUBLIC_API(void)JS_SetContextPrivate(JSContext *cx, void *data);extern JS_PUBLIC_API(JSRuntime *)JS_GetRuntime(JSContext *cx);extern JS_PUBLIC_API(JSContext *)JS_ContextIterator(JSRuntime *rt, JSContext **iterp);extern JS_PUBLIC_API(JSVersion)JS_GetVersion(JSContext *cx);extern JS_PUBLIC_API(JSVersion)JS_SetVersion(JSContext *cx, JSVersion version);extern JS_PUBLIC_API(const char *)JS_VersionToString(JSVersion version);extern JS_PUBLIC_API(JSVersion)JS_StringToVersion(const char *string);/* * JS options are orthogonal to version, and may be freely composed with one * another as well as with version. * * JSOPTION_VAROBJFIX is recommended -- see the comments associated with the * prototypes for JS_ExecuteScript, JS_EvaluateScript, etc. */#define JSOPTION_STRICT         JS_BIT(0)       /* warn on dubious practice */#define JSOPTION_WERROR         JS_BIT(1)       /* convert warning to error */#define JSOPTION_VAROBJFIX      JS_BIT(2)       /* make JS_EvaluateScript use                                                   the last object on its 'obj'                                                   param's scope chain as the                                                   ECMA 'variables object' */#define JSOPTION_PRIVATE_IS_NSISUPPORTS \                                JS_BIT(3)       /* context private data points                                                   to an nsISupports subclass */extern JS_PUBLIC_API(uint32)JS_GetOptions(JSContext *cx);extern JS_PUBLIC_API(uint32)JS_SetOptions(JSContext *cx, uint32 options);extern JS_PUBLIC_API(uint32)JS_ToggleOptions(JSContext *cx, uint32 options);extern JS_PUBLIC_API(const char *)JS_GetImplementationVersion(void);extern JS_PUBLIC_API(JSObject *)JS_GetGlobalObject(JSContext *cx);extern JS_PUBLIC_API(void)JS_SetGlobalObject(JSContext *cx, JSObject *obj);/* * Initialize standard JS class constructors, prototypes, and any top-level * functions and constants associated with the standard classes (e.g. isNaN * for Number). * * NB: This sets cx's global object to obj if it was null. */extern JS_PUBLIC_API(JSBool)JS_InitStandardClasses(JSContext *cx, JSObject *obj);/* * Resolve id, which must contain either a string or an int, to a standard * class name in obj if possible, defining the class's constructor and/or * prototype and storing true in *resolved.  If id does not name a standard * class or a top-level property induced by initializing a standard class, * store false in *resolved and just return true.  Return false on error, * as usual for JSBool result-typed API entry points. * * This API can be called directly from a global object class's resolve op, * to define standard classes lazily.  The class's enumerate op should call * JS_EnumerateStandardClasses(cx, obj), to define eagerly during for..in * loops any classes not yet resolved lazily. */extern JS_PUBLIC_API(JSBool)JS_ResolveStandardClass(JSContext *cx, JSObject *obj, jsval id,                        JSBool *resolved);extern JS_PUBLIC_API(JSBool)JS_EnumerateStandardClasses(JSContext *cx, JSObject *obj);extern JS_PUBLIC_API(JSObject *)JS_GetScopeChain(JSContext *cx);extern JS_PUBLIC_API(void *)JS_malloc(JSContext *cx, size_t nbytes);extern JS_PUBLIC_API(void *)JS_realloc(JSContext *cx, void *p, size_t nbytes);extern JS_PUBLIC_API(void)JS_free(JSContext *cx, void *p);extern JS_PUBLIC_API(char *)JS_strdup(JSContext *cx, const char *s);extern JS_PUBLIC_API(jsdouble *)JS_NewDouble(JSContext *cx, jsdouble d);extern JS_PUBLIC_API(JSBool)JS_NewDoubleValue(JSContext *cx, jsdouble d, jsval *rval);extern JS_PUBLIC_API(JSBool)JS_NewNumberValue(JSContext *cx, jsdouble d, jsval *rval);/* * A JS GC root is a pointer to a JSObject *, JSString *, or jsdouble * that * itself points into the GC heap (more recently, we support this extension: * a root may be a pointer to a jsval v for which JSVAL_IS_GCTHING(v) is true). * * Therefore, you never pass JSObject *obj to JS_AddRoot(cx, obj).  You always * call JS_AddRoot(cx, &obj), passing obj by reference.  And later, before obj * or the structure it is embedded within goes out of scope or is freed, you * must call JS_RemoveRoot(cx, &obj). * * Also, use JS_AddNamedRoot(cx, &structPtr->memberObj, "structPtr->memberObj") * in preference to JS_AddRoot(cx, &structPtr->memberObj), in order to identify * roots by their source callsites.  This way, you can find the callsite while * debugging if you should fail to do JS_RemoveRoot(cx, &structPtr->memberObj) * before freeing structPtr's memory. */extern JS_PUBLIC_API(JSBool)JS_AddRoot(JSContext *cx, void *rp);extern JS_PUBLIC_API(JSBool)JS_AddNamedRoot(JSContext *cx, void *rp, const char *name);extern JS_PUBLIC_API(JSBool)JS_AddNamedRootRT(JSRuntime *rt, void *rp, const char *name);extern JS_PUBLIC_API(JSBool)JS_RemoveRoot(JSContext *cx, void *rp);extern JS_PUBLIC_API(JSBool)JS_RemoveRootRT(JSRuntime *rt, void *rp);/* * The last GC thing of each type (object, string, double, external string * types) created on a given context is kept alive until another thing of the * same type is created, using a newborn root in the context.  These newborn * roots help native code protect newly-created GC-things from GC invocations * activated before those things can be rooted using local or global roots. * * However, the newborn roots can also entrain great gobs of garbage, so the * JS_GC entry point clears them for the context on which GC is being forced. * Embeddings may need to do likewise for all contexts. * * XXXbe See bug 40757 (http://bugzilla.mozilla.org/show_bug.cgi?id=40757), * which proposes switching (with an #ifdef, alas, if we want to maintain API * compatibility) to a JNI-like extensible local root frame stack model. */extern JS_PUBLIC_API(void)JS_ClearNewbornRoots(JSContext *cx);#ifdef DEBUGextern JS_PUBLIC_API(void)JS_DumpNamedRoots(JSRuntime *rt,                  void (*dump)(const char *name, void *rp, void *data),                  void *data);#endif/* * Call JS_MapGCRoots to map the GC's roots table using map(rp, name, data). * The root is pointed at by rp; if the root is unnamed, name is null; data is * supplied from the third parameter to JS_MapGCRoots. * * The map function should return JS_MAP_GCROOT_REMOVE to cause the currently * enumerated root to be removed.  To stop enumeration, set JS_MAP_GCROOT_STOP * in the return value.  To keep on mapping, return JS_MAP_GCROOT_NEXT.  These * constants are flags; you can OR them together. * * This function acquires and releases rt's GC lock around the mapping of the * roots table, so the map function should run to completion in as few cycles * as possible.  Of course, map cannot call JS_GC, JS_MaybeGC, JS_BeginRequest, * or any JS API entry point that acquires locks, without double-tripping or * deadlocking on the GC lock. * * JS_MapGCRoots returns the count of roots that were successfully mapped. */#define JS_MAP_GCROOT_NEXT      0       /* continue mapping entries */#define JS_MAP_GCROOT_STOP      1       /* stop mapping entries */#define JS_MAP_GCROOT_REMOVE    2       /* remove and free the current entry */typedef intN(* JS_DLL_CALLBACK JSGCRootMapFun)(void *rp, const char *name, void *data);extern JS_PUBLIC_API(uint32)JS_MapGCRoots(JSRuntime *rt, JSGCRootMapFun map, void *data);extern JS_PUBLIC_API(JSBool)JS_LockGCThing(JSContext *cx, void *thing);extern JS_PUBLIC_API(JSBool)JS_UnlockGCThing(JSContext *cx, void *thing);/* * For implementors of JSObjectOps.mark, to mark a GC-thing reachable via a * property or other strong ref identified for debugging purposes by name. * The name argument's storage needs to live only as long as the call to * this routine. * * The final arg is used by GC_MARK_DEBUG code to build a ref path through * the GC's live thing graph.  Implementors of JSObjectOps.mark should pass * its final arg through to this function when marking all GC-things that are * directly reachable from the object being marked. * * See the JSMarkOp typedef in jspubtd.h, and the JSObjectOps struct below. */extern JS_PUBLIC_API(void)JS_MarkGCThing(JSContext *cx, void *thing, const char *name, void *arg);extern JS_PUBLIC_API(void)JS_GC(JSContext *cx);extern JS_PUBLIC_API(void)JS_MaybeGC(JSContext *cx);extern JS_PUBLIC_API(JSGCCallback)JS_SetGCCallback(JSContext *cx, JSGCCallback cb);extern JS_PUBLIC_API(JSGCCallback)JS_SetGCCallbackRT(JSRuntime *rt, JSGCCallback cb);extern JS_PUBLIC_API(JSBool)JS_IsAboutToBeFinalized(JSContext *cx, void *thing);/* * Add an external string finalizer, one created by JS_NewExternalString (see * below) using a type-code returned from this function, and that understands * how to free or release the memory pointed at by JS_GetStringChars(str). * * Return a nonnegative type index if there is room for finalizer in the * global GC finalizers table, else return -1.  If the engine is compiled * JS_THREADSAFE and used in a multi-threaded environment, this function must * be invoked on the primordial thread only, at startup -- or else the entire * program must single-thread itself while loading a module that calls this * function. */extern JS_PUBLIC_API(intN)JS_AddExternalStringFinalizer(JSStringFinalizeOp finalizer);/* * Remove finalizer from the global GC finalizers table, returning its type * code if found, -1 if not found. * * As with JS_AddExternalStringFinalizer, there is a threading restriction * if you compile the engine JS_THREADSAFE: this function may be called for a * given finalizer pointer on only one thread; different threads may call to * remove distinct finalizers safely. * * You must ensure that all strings with finalizer's type have been collected * before calling this function.  Otherwise, string data will be leaked by the * GC, for want of a finalizer to call. */extern JS_PUBLIC_API(intN)JS_RemoveExternalStringFinalizer(JSStringFinalizeOp finalizer);/* * Create a new JSString whose chars member refers to external memory, i.e., * memory requiring special, type-specific finalization.  The type code must * be a nonnegative return value from JS_AddExternalStringFinalizer. */extern JS_PUBLIC_API(JSString *)JS_NewExternalString(JSContext *cx, jschar *chars, size_t length, intN type);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -