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

📄 jsapi.h

📁 Swfdec still is development software, but has also followed a rigid no-crashes-allowed policy. I b
💻 H
📖 第 1 页 / 共 5 页
字号:
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);/* * Returns the external-string finalizer index for this string, or -1 if it is * an "internal" (native to JS engine) string. */extern JS_PUBLIC_API(intN)JS_GetExternalStringGCType(JSRuntime *rt, JSString *str);/* * Sets maximum (if stack grows upward) or minimum (downward) legal stack byte * address in limitAddr for the thread or process stack used by cx.  To disable * stack size checking, pass 0 for limitAddr. */extern JS_PUBLIC_API(void)JS_SetThreadStackLimit(JSContext *cx, jsuword limitAddr);/************************************************************************//* * Classes, objects, and properties. *//* For detailed comments on the function pointer types, see jspubtd.h. */struct JSClass {    const char          *name;    uint32              flags;    /* Mandatory non-null function pointer members. */    JSPropertyOp        addProperty;    JSPropertyOp        delProperty;    JSPropertyOp        getProperty;    JSPropertyOp        setProperty;    JSEnumerateOp       enumerate;    JSResolveOp         resolve;    JSConvertOp         convert;    JSFinalizeOp        finalize;    /* Optionally non-null members start here. */    JSGetObjectOps      getObjectOps;    JSCheckAccessOp     checkAccess;    JSNative            call;    JSNative            construct;    JSXDRObjectOp       xdrObject;    JSHasInstanceOp     hasInstance;    JSMarkOp            mark;    jsword              spare;};#define JSCLASS_HAS_PRIVATE             (1<<0)  /* objects have private slot */#define JSCLASS_NEW_ENUMERATE           (1<<1)  /* has JSNewEnumerateOp hook */#define JSCLASS_NEW_RESOLVE             (1<<2)  /* has JSNewResolveOp hook */#define JSCLASS_PRIVATE_IS_NSISUPPORTS  (1<<3)  /* private is (nsISupports *) */#define JSCLASS_SHARE_ALL_PROPERTIES    (1<<4)  /* all properties are SHARED */#define JSCLASS_NEW_RESOLVE_GETS_START  (1<<5)  /* JSNewResolveOp gets starting                                                   object in prototype chain                                                   passed in via *objp in/out                                                   parameter *//* * To reserve slots fetched and stored via JS_Get/SetReservedSlot, bitwise-or * JSCLASS_HAS_RESERVED_SLOTS(n) into the initializer for JSClass.flags, where * n is a constant in [1, 255].  Reserved slots are indexed from 0 to n-1. */#define JSCLASS_RESERVED_SLOTS_SHIFT    8       /* room for 8 flags below */#define JSCLASS_RESERVED_SLOTS_WIDTH    8       /* and 16 above this field */#define JSCLASS_RESERVED_SLOTS_MASK     JS_BITMASK(JSCLASS_RESERVED_SLOTS_WIDTH)#define JSCLASS_HAS_RESERVED_SLOTS(n)   (((n) & JSCLASS_RESERVED_SLOTS_MASK)   \                                         << JSCLASS_RESERVED_SLOTS_SHIFT)#define JSCLASS_RESERVED_SLOTS(clasp)   (((clasp)->flags                      \                                          >> JSCLASS_RESERVED_SLOTS_SHIFT)     \                                         & JSCLASS_RESERVED_SLOTS_MASK)/* Initializer for unused members of statically initialized JSClass structs. */#define JSCLASS_NO_OPTIONAL_MEMBERS     0,0,0,0,0,0,0,0/* For detailed comments on these function pointer types, see jspubtd.h. */struct JSObjectOps {    /* Mandatory non-null function pointer members. */    JSNewObjectMapOp    newObjectMap;    JSObjectMapOp       destroyObjectMap;    JSLookupPropOp      lookupProperty;    JSDefinePropOp      defineProperty;    JSPropertyIdOp      getProperty;    JSPropertyIdOp      setProperty;    JSAttributesOp      getAttributes;    JSAttributesOp      setAttributes;    JSPropertyIdOp      deleteProperty;    JSConvertOp         defaultValue;    JSNewEnumerateOp    enumerate;    JSCheckAccessIdOp   checkAccess;    /* Optionally non-null members start here. */    JSObjectOp          thisObject;    JSPropertyRefOp     dropProperty;    JSNative            call;    JSNative            construct;    JSXDRObjectOp       xdrObject;    JSHasInstanceOp     hasInstance;    JSSetObjectSlotOp   setProto;    JSSetObjectSlotOp   setParent;    JSMarkOp            mark;    JSFinalizeOp        clear;    JSGetRequiredSlotOp getRequiredSlot;    JSSetRequiredSlotOp setRequiredSlot;};/* * Classes that expose JSObjectOps via a non-null getObjectOps class hook may * derive a property structure from this struct, return a pointer to it from * lookupProperty and defineProperty, and use the pointer to avoid rehashing * in getAttributes and setAttributes. * * The jsid type contains either an int jsval (see JSVAL_IS_INT above), or an * internal pointer that is opaque to users of this API, but which users may * convert from and to a jsval using JS_ValueToId and JS_IdToValue. */struct JSProperty {    jsid id;};struct JSIdArray {    jsuint length;    jsid  vector[1];    /* actually, length jsid words */};extern JS_PUBLIC_API(void)JS_DestroyIdArray(JSContext *cx, JSIdArray *ida);extern JS_PUBLIC_API(JSBool)JS_ValueToId(JSContext *cx, jsval v, jsid *idp);extern JS_PUBLIC_API(JSBool)JS_IdToValue(JSContext *cx, jsid id, jsval *vp);#define JSRESOLVE_QUALIFIED     0x01    /* resolve a qualified property id */#define JSRESOLVE_ASSIGNING     0x02    /* resolve on the left of assignment */#define JSRESOLVE_DETECTING     0x04    /* 'if (o.p)...' or '(o.p) ?...:...' */#define JSRESOLVE_DECLARING     0x08    /* var, const, or function prolog op */#define JSRESOLVE_CLASSNAME     0x10    /* class name used when constructing */extern JS_PUBLIC_API(JSBool)JS_PropertyStub(JSContext *cx, JSObject *obj, jsval id, jsval *vp);extern JS_PUBLIC_API(JSBool)JS_EnumerateStub(JSContext *cx, JSObject *obj);extern JS_PUBLIC_API(JSBool)JS_ResolveStub(JSContext *cx, JSObject *obj, jsval id);extern JS_PUBLIC_API(JSBool)JS_ConvertStub(JSContext *cx, JSObject *obj, JSType type, jsval *vp);extern JS_PUBLIC_API(void)JS_FinalizeStub(JSContext *cx, JSObject *obj);struct JSConstDoubleSpec {    jsdouble        dval;    const char      *name;    uint8           flags;    uint8           spare[3];};/* * To define an array element rather than a named property member, cast the * element's index to (const char *) and initialize name with it, and set the * JSPROP_INDEX bit in flags. */struct JSPropertySpec {    const char      *name;    int8            tinyid;    uint8           flags;    JSPropertyOp    getter;    JSPropertyOp    setter;};struct JSFunctionSpec {    const char      *name;    JSNative        call;    uint8           nargs;    uint8           flags;    uint16          extra;      /* number of arg slots for local GC roots */};extern JS_PUBLIC_API(JSObject *)JS_InitClass(JSContext *cx, JSObject *obj, JSObject *parent_proto,             const JSClass *clasp, JSNative constructor, uintN nargs,             JSPropertySpec *ps, JSFunctionSpec *fs,             JSPropertySpec *static_ps, JSFunctionSpec *static_fs);#ifdef JS_THREADSAFEextern JS_PUBLIC_API(JSClass *)JS_GetClass(JSContext *cx, JSObject *obj);#define JS_GET_CLASS(cx,obj) JS_GetClass(cx, obj)#elseextern JS_PUBLIC_API(JSClass *)JS_GetClass(JSObject *obj);#define JS_GET_CLASS(cx,obj) JS_GetClass(obj)#endifextern JS_PUBLIC_API(JSBool)JS_InstanceOf(JSContext *cx, JSObject *obj, const JSClass *clasp, jsval *argv);extern JS_PUBLIC_API(void *)JS_GetPrivate(JSContext *cx, JSObject *obj);extern JS_PUBLIC_API(JSBool)JS_SetPrivate(JSContext *cx, JSObject *obj, void *data);extern JS_PUBLIC_API(void *)JS_GetInstancePrivate(JSContext *cx, JSObject *obj, JSClass *clasp,                      jsval *argv);extern JS_PUBLIC_API(JSObject *)JS_GetPrototype(JSContext *cx, JSObject *obj);extern JS_PUBLIC_API(JSBool)JS_SetPrototype(JSContext *cx, JSObject *obj, JSObject *proto);extern JS_PUBLIC_API(JSObject *)JS_GetParent(JSContext *cx, JSObject *obj);extern JS_PUBLIC_API(JSBool)JS_SetParent(JSContext *cx, JSObject *obj, JSObject *parent);extern JS_PUBLIC_API(JSObject *)JS_GetConstructor(JSContext *cx, JSObject *proto);/* * Get a unique identifier for obj, good for the lifetime of obj (even if it * is moved by a copying GC).  Return false on failure (likely out of memory), * and true with *idp containing the unique id on success. */extern JS_PUBLIC_API(JSBool)JS_GetObjectId(JSContext *cx, JSObject *obj, jsid *idp);extern JS_PUBLIC_API(JSObject *)JS_NewObject(JSContext *cx, const JSClass *clasp, JSObject *proto, JSObject *parent);extern JS_PUBLIC_API(JSBool)JS_SealObject(JSContext *cx, JSObject *obj, JSBool deep);extern JS_PUBLIC_API(JSObject *)JS_ConstructObject(JSContext *cx, JSClass *clasp, JSObject *proto,                   JSObject *parent);extern JS_PUBLIC_API(JSObject *)JS_ConstructObjectWithArguments(JSContext *cx, JSClass *clasp, JSObject *proto,                                JSObject *parent, uintN argc, jsval *argv);extern JS_PUBLIC_API(JSObject *)JS_DefineObject(JSContext *cx, JSObject *obj, const char *name, JSClass *clasp,                JSObject *proto, uintN attrs);extern JS_PUBLIC_API(JSBool)JS_DefineConstDoubles(JSContext *cx, JSObject *obj, JSConstDoubleSpec *cds);extern JS_PUBLIC_API(JSBool)JS_DefineProperties(JSContext *cx, JSObject *obj, JSPropertySpec *ps);extern JS_PUBLIC_API(JSBool)JS_DefineProperty(JSContext *cx, JSObject *obj, const char *name, jsval value,                  JSPropertyOp getter, JSPropertyOp setter, uintN attrs);/* * Determine the attributes (JSPROP_* flags) of a property on a given object. * * If the object does not have a property by that name, *foundp will be * JS_FALSE and the value of *attrsp is undefined. */extern JS_PUBLIC_API(JSBool)JS_GetPropertyAttributes(JSContext *cx, JSObject *obj, const char *name,                         uintN *attrsp, JSBool *foundp);/* * Set the attributes of a property on a given object. * * If the object does not have a property by that name, *foundp will be * JS_FALSE and nothing will be altered. */extern JS_PUBLIC_API(JSBool)JS_SetPropertyAttributes(JSContext *cx, JSObject *obj, const char *name,                         uintN attrs, JSBool *foundp);extern JS_PUBLIC_API(JSBool)JS_DefinePropertyWithTinyId(JSContext *cx, JSObject *obj, const char *name,                            int8 tinyid, jsval value,                            JSPropertyOp getter, JSPropertyOp setter,                            uintN attrs);extern JS_PUBLIC_API(JSBool)JS_AliasProperty(JSContext *cx, JSObject *obj, const char *name,                 const char *alias);extern JS_PUBLIC_API(JSBool)JS_HasProperty(JSContext *cx, JSObject *obj, const char *name, JSBool *foundp);extern JS_PUBLIC_API(JSBool)JS_LookupProperty(JSContext *cx, JSObject *obj, const char *name, jsval *vp);extern JS_PUBLIC_API(JSBool)JS_LookupPropertyWithFlags(JSContext *cx, JSObject *obj, const char *name,                           uintN flags, jsval *vp);extern JS_PUBLIC_API(JSBool)JS_GetProperty(JSContext *cx, JSObject *obj, const char *name, jsval *vp);extern JS_PUBLIC_API(JSBool)JS_SetProperty(JSContext *cx, JSObject *obj, const char *name, jsval *vp);extern JS_PUBLIC_API(JSBool)JS_DeleteProperty(JSContext *cx, JSObject *obj, const char *name);extern JS_PUBLIC_API(JSBool)JS_DeleteProperty2(JSContext *cx, JSObject *obj, const char *name,                   jsval *rval);extern JS_PUBLIC_API(JSBool)JS_DefineUCProperty(JSContext *cx, JSObject *obj,                    const jschar *name, size_t namelen, jsval value,                    JSPropertyOp getter, JSPropertyOp setter,                    uintN attrs);/* * Determine the attributes (JSPROP_* flags) of a property on a given object. * * If the object does not have a property by that name, *foundp will be * JS_FALSE and the value of *attrsp is undefined. */extern JS_PUBLIC_API(JSBool)JS_GetUCPropertyAttributes(JSContext *cx, JSObject *obj,

⌨️ 快捷键说明

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