1#ifndef COIN_GLUE_SPIDERMONKEY_H
2#define COIN_GLUE_SPIDERMONKEY_H
36#include <Inventor/C/basic.h>
52#ifndef JSVERSION_IS_ECMA
59typedef intptr_t jsword;
63typedef unsigned int uintN;
64typedef uint16_t jschar;
66typedef int32_t jsrefcount;
67typedef uint8_t jsbytecode;
68typedef uint32_t JSHashNumber;
69typedef uint32_t jsatomid;
81typedef enum JSAccessMode {
91typedef enum JSGCStatus {
103typedef void JSRuntime;
104typedef void JSContext;
105typedef void JSObject;
106typedef void JSObjectOps;
107typedef void JSXDRState;
108typedef void JSString;
111typedef int JSVersion;
112typedef void JSFunction;
115typedef void JSScript;
117#define JS_DLL_CALLBACK
119typedef JSBool (* JS_DLL_CALLBACK JSPropertyOp)(JSContext *, JSObject *, jsval, jsval *);
120typedef JSBool (* JS_DLL_CALLBACK JSEnumerateOp)(JSContext *, JSObject *);
121typedef JSBool (* JS_DLL_CALLBACK JSResolveOp)(JSContext *, JSObject *, jsval);
122typedef JSBool (* JS_DLL_CALLBACK JSConvertOp)(JSContext *, JSObject *, JSType, jsval *);
123typedef void (* JS_DLL_CALLBACK JSFinalizeOp)(JSContext *, JSObject *);
124typedef JSObjectOps * (* JS_DLL_CALLBACK JSGetObjectOps)(JSContext *,
JSClass *);
125typedef JSBool (* JS_DLL_CALLBACK JSCheckAccessOp)(JSContext *, JSObject *, jsval, JSAccessMode, jsval *);
126typedef JSBool (* JS_DLL_CALLBACK JSNative)(JSContext *, JSObject *, uintN, jsval *, jsval *);
127typedef JSBool (* JS_DLL_CALLBACK JSXDRObjectOp)(JSXDRState *, JSObject **);
128typedef JSBool (* JS_DLL_CALLBACK JSHasInstanceOp)(JSContext *, JSObject *, jsval, JSBool *);
129typedef uint32_t (* JS_DLL_CALLBACK JSMarkOp)(JSContext *, JSObject *,
void *);
134 JSPropertyOp addProperty;
135 JSPropertyOp delProperty;
136 JSPropertyOp getProperty;
137 JSPropertyOp setProperty;
138 JSEnumerateOp enumerate;
141 JSFinalizeOp finalize;
142 JSGetObjectOps getObjectOps;
143 JSCheckAccessOp checkAccess;
146 JSXDRObjectOp xdrObject;
147 JSHasInstanceOp hasInstance;
169 const char * filename;
171 const char * linebuf;
172 const char * tokenptr;
173 const jschar * uclinebuf;
174 const jschar * uctokenptr;
177 const jschar * ucmessage;
178 const jschar ** messageArgs;
184#define JSVAL_OBJECT 0x0
186#define JSVAL_DOUBLE 0x2
187#define JSVAL_STRING 0x4
188#define JSVAL_BOOLEAN 0x6
190#define JS_BIT(n) ((uint32_t)1 << (n))
191#define JS_BITMASK(n) (JS_BIT(n) - 1)
193#define JSVAL_TAGBITS 3
194#define JSVAL_TAGMASK JS_BITMASK(JSVAL_TAGBITS)
195#define JSVAL_TAG(v) ((v) & JSVAL_TAGMASK)
196#define JSVAL_SETTAG(v,t) ((v) | (t))
197#define JSVAL_CLRTAG(v) ((v) & ~(jsval)JSVAL_TAGMASK)
199#define JSVAL_IS_PRIMITIVE(v) (!JSVAL_IS_OBJECT(v) || JSVAL_IS_NULL(v))
200#define JSVAL_IS_OBJECT(v) (JSVAL_TAG(v) == JSVAL_OBJECT)
201#define JSVAL_IS_NUMBER(v) (JSVAL_IS_INT(v) || JSVAL_IS_DOUBLE(v))
202#define JSVAL_IS_INT(v) (((v) & JSVAL_INT) && (v) != JSVAL_VOID)
203#define JSVAL_IS_DOUBLE(v) (JSVAL_TAG(v) == JSVAL_DOUBLE)
204#define JSVAL_IS_STRING(v) (JSVAL_TAG(v) == JSVAL_STRING)
205#define JSVAL_IS_BOOLEAN(v) (JSVAL_TAG(v) == JSVAL_BOOLEAN)
206#define JSVAL_IS_NULL(v) ((v) == JSVAL_NULL)
207#define JSVAL_IS_VOID(v) ((v) == JSVAL_VOID)
209#define BOOLEAN_TO_JSVAL(b) JSVAL_SETTAG((jsval)(b) << JSVAL_TAGBITS, JSVAL_BOOLEAN)
210#define JSVAL_TO_BOOLEAN(v) ((JSBool)((v) >> JSVAL_TAGBITS))
212#define JSVAL_INT_BITS 31
213#define JSVAL_INT_POW2(n) ((jsval)1 << (n))
214#define JSVAL_INT_MIN ((jsval)1 - JSVAL_INT_POW2(30))
215#define JSVAL_INT_MAX (JSVAL_INT_POW2(30) - 1)
216#define INT_FITS_IN_JSVAL(i) ((uint32_t)((i)+JSVAL_INT_MAX) <= 2*JSVAL_INT_MAX)
217#define JSVAL_TO_INT(v) ((int32_t)(v) >> 1)
218#define INT_TO_JSVAL(i) (((jsval)(i) << 1) | JSVAL_INT)
220#define JSVAL_TO_GCTHING(v) ((void *)JSVAL_CLRTAG(v))
221#define JSVAL_TO_OBJECT(v) ((JSObject *)JSVAL_TO_GCTHING(v))
222#define JSVAL_TO_DOUBLE(v) ((double *)JSVAL_TO_GCTHING(v))
223#define JSVAL_TO_STRING(v) ((JSString *)JSVAL_TO_GCTHING(v))
224#define OBJECT_TO_JSVAL(obj) ((jsval)(obj))
225#define DOUBLE_TO_JSVAL(dp) JSVAL_SETTAG((jsval)(dp), JSVAL_DOUBLE)
226#define STRING_TO_JSVAL(str) JSVAL_SETTAG((jsval)(str), JSVAL_STRING)
227#define JSVAL_TO_PRIVATE(v) ((void *)((v) & ~JSVAL_INT))
228#define PRIVATE_TO_JSVAL(p) ((jsval)(p) | JSVAL_INT)
230#define JSPROP_ENUMERATE 0x01
231#define JSPROP_READONLY 0x02
232#define JSPROP_PERMANENT 0x04
233#define JSPROP_EXPORTED 0x08
234#define JSPROP_GETTER 0x10
235#define JSPROP_SETTER 0x20
236#define JSPROP_SHARED 0x40
237#define JSPROP_INDEX 0x80
239#define JS_FALSE (int)0
240#define JS_TRUE (int)1
242#define JSVAL_VOID INT_TO_JSVAL(0 - JSVAL_INT_POW2(30))
243#define JSVAL_NULL OBJECT_TO_JSVAL(0)
244#define JSVAL_ZERO INT_TO_JSVAL(0)
245#define JSVAL_ONE INT_TO_JSVAL(1)
246#define JSVAL_FALSE BOOLEAN_TO_JSVAL(JS_FALSE)
247#define JSVAL_TRUE BOOLEAN_TO_JSVAL(JS_TRUE)
249#define JSCLASS_HAS_PRIVATE (1<<0)
250#define JSCLASS_NEW_ENUMERATE (1<<1)
251#define JSCLASS_NEW_RESOLVE (1<<2)
252#define JSCLASS_PRIVATE_IS_NSISUPPORTS (1<<3)
253#define JSCLASS_SHARE_ALL_PROPERTIES (1<<4)
254#define JSCLASS_NEW_RESOLVE_GETS_START (1<<5)
256#define JSFUN_BOUND_METHOD 0x40
258#define JSOPTION_STRICT JS_BIT(0)
259#define JSOPTION_WERROR JS_BIT(1)
260#define JSOPTION_VAROBJFIX JS_BIT(2)
261#define JSOPTION_PRIVATE_IS_NSISUPPORTS JS_BIT(3)
262#define JSOPTION_COMPILE_N_GO JS_BIT(4)
267typedef void (* JS_DLL_CALLBACK JSErrorReporter)(JSContext *,
const char *,
JSErrorReport *);
268typedef JSBool (* JS_DLL_CALLBACK JSGCCallback)(JSContext *, JSGCStatus);
272typedef JSBool (* JS_EvaluateScript_t)(JSContext *, JSObject *,
const char *, uintN,
const char *, uintN, jsval *);
273typedef JSString * (* JS_ValueToString_t)(JSContext *, jsval);
274typedef char * (* JS_GetStringBytes_t)(JSString *);
275typedef JSBool (* JS_SetProperty_t)(JSContext *, JSObject *,
const char *, jsval *);
276typedef JSBool (* JS_GetProperty_t)(JSContext *, JSObject *,
const char *, jsval *);
277typedef JSBool (* JS_CallFunctionName_t)(JSContext *, JSObject *,
const char *, uintN, jsval *, jsval *);
278typedef JSBool (* JS_CallFunctionValue_t)(JSContext *, JSObject *, jsval, uintN, jsval *, jsval *);
279typedef JSObject * (* JS_ConstructObjectWithArguments_t)(JSContext *,
JSClass *, JSObject *, JSObject *, uintN, jsval *);
280typedef JSRuntime * (* JS_NewRuntime_t)(uint32_t);
281typedef void (* JS_DestroyRuntime_t)(JSRuntime *);
282typedef JSContext * (* JS_NewContext_t)(JSRuntime *, size_t);
283typedef void (* JS_DestroyContext_t)(JSContext *);
284typedef void (* JS_ShutDown_t)(void);
285typedef JSObject * (* JS_NewObject_t)(JSContext *,
JSClass *, JSObject *, JSObject *);
286typedef JSBool (* JS_InitStandardClasses_t)(JSContext *, JSObject *);
287typedef JSErrorReporter (* JS_SetErrorReporter_t)(JSContext *, JSErrorReporter);
288typedef JSBool (* JS_PropertyStub_t)(JSContext *, JSObject *, jsval, jsval *);
289typedef JSBool (* JS_EnumerateStub_t)(JSContext *, JSObject *);
290typedef JSBool (* JS_ResolveStub_t)(JSContext *, JSObject *, jsval);
291typedef JSBool (* JS_ConvertStub_t)(JSContext *, JSObject *, JSType, jsval *);
292typedef void (* JS_FinalizeStub_t)(JSContext *, JSObject *);
293typedef const char * (* JS_GetImplementationVersion_t)(void);
294typedef void * (* JS_GetPrivate_t)(JSContext *, JSObject *);
295typedef JSBool (* JS_SetPrivate_t)(JSContext *, JSObject *,
void *);
296typedef JSFunction * (* JS_NewFunction_t)(JSContext *, JSNative, uintN, uintN flags, JSObject *,
const char *);
297typedef JSObject * (* JS_GetFunctionObject_t)(JSFunction *);
298typedef JSObject * (* JS_DefineObject_t)(JSContext *, JSObject *,
const char *,
JSClass *, JSObject *, uintN);
299typedef JSBool (* JS_DefineProperties_t)(JSContext *, JSObject *,
JSPropertySpec *);
300typedef JSObject * (* JS_GetParent_t)(JSContext *, JSObject *);
301typedef JSBool (* JS_SetParent_t)(JSContext *, JSObject *, JSObject *);
302typedef JSBool (* JS_DefineFunctions_t)(JSContext *, JSObject *,
JSFunctionSpec *);
303typedef JSString * (* JS_NewStringCopyZ_t)(JSContext *,
const char *);
304typedef JSType (* JS_TypeOfValue_t)(JSContext *, jsval);
305typedef const char * (* JS_GetTypeName_t)(JSContext *, JSType);
306typedef JSBool (* JS_InstanceOf_t)(JSContext *, JSObject *,
JSClass *, jsval *);
307typedef JSObject * (* JS_InitClass_t)(JSContext *, JSObject *, JSObject *,
JSClass *,
310typedef JSBool (* JS_NewDoubleValue_t)(JSContext *, double, jsval *);
311typedef void * (* JS_GetContextPrivate_t)(JSContext *);
312typedef void (* JS_SetContextPrivate_t)(JSContext *,
void *);
313typedef JSBool (* JS_ValueToBoolean_t)(JSContext *, jsval, JSBool *);
314typedef JSBool (* JS_ValueToNumber_t)(JSContext *, jsval,
double *);
315typedef JSObject * (* JS_NewArrayObject_t)(JSContext *, int32_t, jsval *);
316typedef JSBool (* JS_GetArrayLength_t)(JSContext *, JSObject *, uint32_t *);
317typedef JSBool (* JS_SetArrayLength_t)(JSContext *, JSObject *, uint32_t);
318typedef JSBool (* JS_HasArrayLength_t)(JSContext *, JSObject *, uint32_t *);
319typedef JSBool (* JS_GetElement_t)(JSContext *, JSObject *, int32_t, jsval *);
320typedef JSBool (* JS_SetElement_t)(JSContext *, JSObject *, int32_t, jsval *);
321typedef JSBool (* JS_AddRoot_t)(JSContext *,
void *);
322typedef JSBool (* JS_RemoveRoot_t)(JSContext *,
void *);
323typedef size_t (* JS_GetStringLength_t)(JSString *);
324typedef JSBool (* JS_LookupProperty_t)(JSContext *, JSObject *,
const char *, jsval *);
325typedef JSBool (* JS_DefineProperty_t)(JSContext *, JSObject *,
const char *, jsval, JSPropertyOp, JSPropertyOp, uintN);
326typedef JSScript * (* JS_CompileFile_t)(JSContext *, JSObject *,
const char *);
327typedef JSBool (* JS_ValueToObject_t)(JSContext *, jsval, JSObject **);
328typedef JSBool (* JS_ExecuteScript_t)(JSContext *, JSObject *, JSScript *, jsval *);
329typedef JSBool (* JS_IsExceptionPending_t)(JSContext *);
330typedef JSBool (* JS_GetPendingException_t)(JSContext *, jsval *);
331typedef void (* JS_SetPendingException_t)(JSContext *, jsval);
332typedef void (* JS_ClearPendingException_t)(JSContext *);
333typedef double * (* JS_NewDouble_t)(JSContext *, double);
334typedef JSBool (* JS_CallFunction_t)(JSContext *, JSObject *, JSFunction *, uintN, jsval *, jsval *);
335typedef JSFunction * (* JS_ValueToFunction_t)(JSContext *, jsval);
336typedef void (* JS_ReportError_t)(JSContext *,
const char *, ...);
337typedef JSBool (* JS_IsArrayObject_t)(JSContext *, JSObject *);
338typedef JSBool (* JS_ObjectIsFunction_t)(JSContext *, JSObject *);
339typedef JSBool (* JS_ValueToECMAInt32_t)(JSContext *, jsval, int32_t *);
340typedef JSFunction * (* JS_DefineFunction_t)(JSContext *, JSObject *,
const char *, JSNative, uintN, uintN);
341typedef JSObject * (* JS_GetGlobalObject_t)(JSContext *);
342typedef JSGCCallback (* JS_SetGCCallback_t)(JSContext *, JSGCCallback);
343typedef void (* JS_GC_t)(JSContext *);
344typedef void (* JS_MaybeGC_t)(JSContext *);
345typedef JSBool (* JS_IsRunning_t)(JSContext *);
346typedef JSBool (* JS_DeleteProperty_t)(JSContext *, JSObject *,
const char *);
347typedef JSScript * (* JS_CompileScript_t)(JSContext *, JSObject *,
348 const char *, size_t,
349 const char *, uintN);
350typedef jsval (* JS_GetNaNValue_t)(JSContext *);
351typedef jsval (* JS_GetNegativeInfinityValue_t)(JSContext *);
352typedef jsval (* JS_GetPositiveInfinityValue_t)(JSContext *);
353typedef jsval (* JS_GetEmptyStringValue_t)(JSContext *);
354typedef JSBool (* JS_SetPropertyAttributes_t)(JSContext *, JSObject *,
const char *, uintN, JSBool *);
355typedef JSBool (* JS_GetPropertyAttributes_t)(JSContext *, JSObject *,
const char *, uintN *, JSBool *);
356typedef JSClass * (* JS_GetClass_t)(JSObject *);
357typedef JSObject * (* JS_GetPrototype_t)(JSContext *, JSObject *);
358typedef JSObject * (* JS_SetPrototype_t)(JSContext *, JSObject *, JSObject *);
359typedef intN (* JS_CompareStrings_t)(JSString *, JSString *);
360typedef uint32_t (* JS_GetOptions_t)(JSContext *);
361typedef uint32_t (* JS_SetOptions_t)(JSContext *, uint32_t);
362typedef uint32_t (* JS_ToggleOptions_t)(JSContext *, uint32_t);
363typedef struct JSIdArray * (* JS_Enumerate_t)(JSContext *, JSObject *);
364typedef JSBool (* JS_IdToValue_t)(JSContext *, jsid, jsval *);
365typedef const char * (* JS_GetFunctionName_t)(JSFunction *);
366typedef JSObject * (* JS_GetConstructor_t)(JSContext *, JSObject *);
367typedef void (* JS_DestroyIdArray_t)(JSContext *,
struct JSIdArray *);
375 JS_CallFunctionName_t JS_CallFunctionName;
376 JS_CallFunctionValue_t JS_CallFunctionValue;
377 JS_ConstructObjectWithArguments_t JS_ConstructObjectWithArguments;
378 JS_ConvertStub_t JS_ConvertStub;
379 JS_DestroyContext_t JS_DestroyContext;
380 JS_DestroyRuntime_t JS_DestroyRuntime;
381 JS_EnumerateStub_t JS_EnumerateStub;
382 JS_EvaluateScript_t JS_EvaluateScript;
383 JS_FinalizeStub_t JS_FinalizeStub;
384 JS_GetClass_t JS_GetClass;
385 JS_GetImplementationVersion_t JS_GetImplementationVersion;
386 JS_GetProperty_t JS_GetProperty;
387 JS_GetStringBytes_t JS_GetStringBytes;
388 JS_InitStandardClasses_t JS_InitStandardClasses;
389 JS_NewContext_t JS_NewContext;
390 JS_NewObject_t JS_NewObject;
391 JS_NewRuntime_t JS_NewRuntime;
392 JS_PropertyStub_t JS_PropertyStub;
393 JS_ResolveStub_t JS_ResolveStub;
394 JS_SetErrorReporter_t JS_SetErrorReporter;
395 JS_SetProperty_t JS_SetProperty;
396 JS_ShutDown_t JS_ShutDown;
397 JS_ValueToString_t JS_ValueToString;
398 JS_DefineObject_t JS_DefineObject;
399 JS_DefineProperties_t JS_DefineProperties;
400 JS_GetPrivate_t JS_GetPrivate;
401 JS_SetPrivate_t JS_SetPrivate;
402 JS_NewFunction_t JS_NewFunction;
403 JS_GetFunctionObject_t JS_GetFunctionObject;
404 JS_GetParent_t JS_GetParent;
405 JS_SetParent_t JS_SetParent;
406 JS_DefineFunctions_t JS_DefineFunctions;
407 JS_NewStringCopyZ_t JS_NewStringCopyZ;
408 JS_TypeOfValue_t JS_TypeOfValue;
409 JS_GetTypeName_t JS_GetTypeName;
410 JS_InstanceOf_t JS_InstanceOf;
411 JS_InitClass_t JS_InitClass;
412 JS_NewDoubleValue_t JS_NewDoubleValue;
413 JS_GetContextPrivate_t JS_GetContextPrivate;
414 JS_SetContextPrivate_t JS_SetContextPrivate;
415 JS_ValueToBoolean_t JS_ValueToBoolean;
416 JS_ValueToNumber_t JS_ValueToNumber;
417 JS_NewArrayObject_t JS_NewArrayObject;
418 JS_GetArrayLength_t JS_GetArrayLength;
419 JS_SetArrayLength_t JS_SetArrayLength;
420 JS_HasArrayLength_t JS_HasArrayLength;
421 JS_GetElement_t JS_GetElement;
422 JS_SetElement_t JS_SetElement;
423 JS_AddRoot_t JS_AddRoot;
424 JS_RemoveRoot_t JS_RemoveRoot;
425 JS_GetStringLength_t JS_GetStringLength;
426 JS_LookupProperty_t JS_LookupProperty;
427 JS_DefineProperty_t JS_DefineProperty;
428 JS_CompileFile_t JS_CompileFile;
429 JS_ValueToObject_t JS_ValueToObject;
430 JS_ExecuteScript_t JS_ExecuteScript;
431 JS_IsExceptionPending_t JS_IsExceptionPending;
432 JS_GetPendingException_t JS_GetPendingException;
433 JS_SetPendingException_t JS_SetPendingException;
434 JS_ClearPendingException_t JS_ClearPendingException;
435 JS_NewDouble_t JS_NewDouble;
436 JS_CallFunction_t JS_CallFunction;
437 JS_ValueToFunction_t JS_ValueToFunction;
438 JS_ReportError_t JS_ReportError;
439 JS_IsArrayObject_t JS_IsArrayObject;
440 JS_ObjectIsFunction_t JS_ObjectIsFunction;
444 JS_ValueToECMAInt32_t JS_ValueToECMAInt32;
445 JS_DefineFunction_t JS_DefineFunction;
446 JS_GetGlobalObject_t JS_GetGlobalObject;
447 JS_SetGCCallback_t JS_SetGCCallback;
449 JS_MaybeGC_t JS_MaybeGC;
450 JS_IsRunning_t JS_IsRunning;
451 JS_DeleteProperty_t JS_DeleteProperty;
452 JS_CompileScript_t JS_CompileScript;
453 JS_GetNaNValue_t JS_GetNaNValue;
454 JS_GetNegativeInfinityValue_t JS_GetNegativeInfinityValue;
455 JS_GetPositiveInfinityValue_t JS_GetPositiveInfinityValue;
456 JS_GetEmptyStringValue_t JS_GetEmptyStringValue;
457 JS_SetPropertyAttributes_t JS_SetPropertyAttributes;
458 JS_GetPropertyAttributes_t JS_GetPropertyAttributes;
459 JS_GetPrototype_t JS_GetPrototype;
460 JS_SetPrototype_t JS_SetPrototype;
461 JS_CompareStrings_t JS_CompareStrings;
462 JS_GetOptions_t JS_GetOptions;
463 JS_SetOptions_t JS_SetOptions;
464 JS_ToggleOptions_t JS_ToggleOptions;
465 JS_Enumerate_t JS_Enumerate;
466 JS_IdToValue_t JS_IdToValue;
467 JS_GetFunctionName_t JS_GetFunctionName;
468 JS_GetConstructor_t JS_GetConstructor;
469 JS_DestroyIdArray_t JS_DestroyIdArray;
Definition: spidermonkey.h:131
Definition: spidermonkey.h:168
Definition: spidermonkey.h:160
Definition: spidermonkey.h:98
Definition: spidermonkey.h:152
Definition: spidermonkey.h:372