28#ifndef __FREEWRL_JS_VRML_CLASSES_H__
29#define __FREEWRL_JS_VRML_CLASSES_H__
32#define UNUSED(v) ((void) v)
35#define INIT_ARGC_NODE 1
41#define ADD_ROOT(a,b) \
48#define REMOVE_ROOT(a,b) \
53#define MF_LENGTH_FIELD "length"
55#define DEFINE_LENGTH(this_context,this_object,this_length) \
56 {jsval zimbo = INT_TO_JSVAL(this_length);\
58 if (!JS_DefineProperty(this_context, this_object, MF_LENGTH_FIELD, zimbo, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB2, JSPROP_PERMANENT)) { \
59 ConsoleMessage( "JS_DefineProperty failed for \"%s\" at %s:%d.\n",MF_LENGTH_FIELD,__FILE__,__LINE__); \
63#define DEFINE_LENGTH_NORV(this_context,this_object,this_length) \
64 {jsval zimbo = INT_TO_JSVAL(this_length);\
66 if (!JS_DefineProperty(this_context, this_object, MF_LENGTH_FIELD, zimbo, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB2, JSPROP_PERMANENT)) { \
67 ConsoleMessage( "JS_DefineProperty failed for \"%s\" at %s:%d.\n",MF_LENGTH_FIELD,__FILE__,__LINE__); \
71#define DEFINE_MF_ECMA_HAS_CHANGED \
72 {jsval zimbo = INT_TO_JSVAL(0); \
74 if (!JS_DefineProperty(cx, obj, "MF_ECMA_has_changed", zimbo, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB2, JSPROP_PERMANENT)) { \
75 printf( "JS_DefineProperty failed for \"MF_ECMA_has_changed\" at %s:%d.\n",__FILE__,__LINE__); \
80#define SET_MF_ECMA_HAS_CHANGED { jsval myv; \
81 myv = INT_TO_JSVAL(1); \
83 if (!JS_SetProperty(cx, obj, "MF_ECMA_has_changed", &myv)) { \
84 printf( "JS_SetProperty failed for \"MF_ECMA_has_changed\" in doMFSetProperty.\n"); \
89#define SET_JS_TICKTIME { jsval zimbo; \
90 JS_NewNumberValue(cx, TickTime(), &zimbo); \
91 if (!JS_DefineProperty(cx,obj, "__eventInTickTime", zimbo, JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB2, JSPROP_PERMANENT)) { \
92 printf( "JS_DefineProperty failed for \"__eventInTickTime\" at %s:%d.\n",__FILE__,__LINE__); \
96#define COMPILE_FUNCTION_IF_NEEDED(tnfield) \
97 if (JSparamnames[tnfield].eventInFunction == NULL) { \
98 sprintf (scriptline,"%s%s(%s%s,__eventInTickTime)", "",JSparamnames[tnfield].name,"__eventIn_Value_",JSparamnames[tnfield].name); \
100 JSparamnames[tnfield].eventInFunction = (void*)JS_CompileScript( \
101 cx, obj, scriptline, strlen(scriptline), "compile eventIn",1); \
102 if (!JS_AddObjectRoot(cx,(JSObject**)(&JSparamnames[tnfield].eventInFunction))) { \
103 printf( "JS_AddObjectRoot failed for compilation of script \"%s\" at %s:%d.\n",scriptline,__FILE__,__LINE__); \
107#define COMPILE_FUNCTION_IF_NEEDED_SET(tnfield,kind) \
108 if (JSparamnames[tnfield].eventInFunction == NULL) { \
109 if(kind == PKW_inputOutput) \
110 sprintf (scriptline,"set_%s(%s,__eventInTickTime)", JSparamnames[tnfield].name,JSparamnames[tnfield].name); \
112 sprintf (scriptline,"%s(%s%s,__eventInTickTime)", JSparamnames[tnfield].name,"__eventIn_Value_",JSparamnames[tnfield].name); \
114 JSparamnames[tnfield].eventInFunction = (void*)JS_CompileScript( \
115 cx, obj, scriptline, strlen(scriptline), "compile eventIn",1); \
116 if (!JS_AddObjectRoot(cx,(JSObject**)(&JSparamnames[tnfield].eventInFunction))) { \
117 printf( "JS_AddObjectRoot failed for compilation of script \"%s\" at %s:%d.\n",scriptline,__FILE__,__LINE__); \
122#define RUN_FUNCTION(tnfield) \
125 if (!JS_ExecuteScript(cx, obj, (JSScript*)JSparamnames[tnfield].eventInFunction, &zimbo)) { \
126 printf ("eventIn %s failed to complete successfully, in FreeWRL code %s:%d\n",JSparamnames[tnfield].name,__FILE__,__LINE__); \
132#define SET_LENGTH(cx,newMFObject,length) \
135 lenval = INT_TO_JSVAL(length); \
136 if (!JS_SetProperty(cx, newMFObject, MF_LENGTH_FIELD, &lenval)) { \
137 printf( "JS_SetProperty failed for \"%s\" at %s:%d\n", MF_LENGTH_FIELD,__FILE__,__LINE__); \
142#define SET_EVENTIN_VALUE(cx,obj,nameIndex,newObj) \
144 char scriptline[100]; \
145 sprintf (scriptline,"__eventIn_Value_%s", JSparamnames[nameIndex].name); \
146 if (!JS_DefineProperty(cx,obj, scriptline, OBJECT_TO_JSVAL(newObj), JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB2, JSPROP_PERMANENT)) { \
147 printf( "JS_DefineProperty failed for \"ECMA in\" at %s:%d.\n",__FILE__,__LINE__); \
188void JS_MY_Finalize(JSFreeOp *fop, JSObject *obj);
191JSBool doMFToString(JSContext *cx, JSObject *obj,
const char *className, jsval *rval);
193JSBool doMFAddProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp,
const char *name);
194JSBool doMFSetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp,
int type);
196JSBool getBrowser(JSContext *context, JSObject *obj,
BrowserNative **brow);
197JSBool doMFStringUnquote(JSContext *cx, jsval *vp);
203JSBool globalResolve(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid);
207loadVrmlClasses(JSContext *context,
208 JSObject *globalObj);
212JSBool getECMANative(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
214JSBool setECMANative(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
218JSBool getAssignProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
221JSBool setAssignProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
224JSBool SFColorGetHSV(JSContext *cx, uintN argc, jsval *vp);
225JSBool SFColorSetHSV(JSContext *cx, uintN argc, jsval *vp);
226JSBool SFColorToString(JSContext *cx, uintN argc, jsval *vp);
227JSBool SFColorAssign(JSContext *cx, uintN argc, jsval *vp);
228JSBool SFColorConstr(JSContext *cx, uintN argc, jsval *vp);
231JSBool SFColorGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
232JSBool SFColorSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
236JSBool SFColorRGBAGetHSV(JSContext *cx, uintN argc, jsval *vp);
237JSBool SFColorRGBASetHSV(JSContext *cx, uintN argc, jsval *vp);
238JSBool SFColorRGBAToString(JSContext *cx, uintN argc, jsval *vp);
239JSBool SFColorRGBAAssign(JSContext *cx, uintN argc, jsval *vp);
240JSBool SFColorRGBAConstr(JSContext *cx, uintN argc, jsval *vp);
243JSBool SFColorRGBAGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
244JSBool SFColorRGBASetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
247JSBool SFImageToString(JSContext *cx, uintN argc,jsval *vp);
248JSBool SFImageAssign(JSContext *cx, uintN argc, jsval *vp);
249JSBool SFImageConstr(JSContext *cx, uintN argc, jsval *vp);
254JSBool SFImageGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
255JSBool SFImageSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
259JSBool SFNodeToString(JSContext *cx, uintN argc, jsval *vp);
260JSBool SFNodeValueOf(JSContext *cx, uintN argc, jsval *vp);
261JSBool SFNodeAssign(JSContext *cx, uintN argc, jsval *vp);
262JSBool SFNodeEquals(JSContext *cx, uintN argc, jsval *vp);
263JSBool SFNodeConstr(JSContext *cx, uintN argc, jsval *vp);
267void SFNodeFinalize(JSFreeOp *fop, JSObject *obj);
269JSBool SFNodeGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
270JSBool SFNodeSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
273JSBool SFRotationGetAxis(JSContext *cx, uintN argc, jsval *vp);
274JSBool SFRotationInverse(JSContext *cx, uintN argc, jsval *vp);
275JSBool SFRotationMultiply(JSContext *cx, uintN argc, jsval *vp);
276JSBool SFRotationMultVec(JSContext *cx, uintN argc, jsval *vp);
277JSBool SFRotationSetAxis(JSContext *cx, uintN argc, jsval *vp);
278JSBool SFRotationSlerp(JSContext *cx, uintN argc, jsval *vp);
279JSBool SFRotationToString(JSContext *cx, uintN argc, jsval *vp);
280JSBool SFRotationAssign(JSContext *cx, uintN argc, jsval *vp);
281JSBool SFRotationConstr(JSContext *cx, uintN argc, jsval *vp);
286JSBool SFRotationGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
287JSBool SFRotationSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
291JSBool SFVec2fAdd(JSContext *cx, uintN argc, jsval *vp);
292JSBool SFVec2fDivide(JSContext *cx, uintN argc, jsval *vp);
293JSBool SFVec2fDot(JSContext *cx, uintN argc, jsval *vp);
294JSBool SFVec2fLength(JSContext *cx, uintN argc, jsval *vp);
295JSBool SFVec2fMultiply(JSContext *cx, uintN argc, jsval *vp);
297JSBool SFVec2fNormalize(JSContext *cx, uintN argc, jsval *vp);
298JSBool SFVec2fSubtract(JSContext *cx, uintN argc, jsval *vp);
299JSBool SFVec2fToString(JSContext *cx, uintN argc, jsval *vp);
300JSBool SFVec2fAssign(JSContext *cx, uintN argc, jsval *vp);
301JSBool SFVec2fConstr(JSContext *cx, uintN argc, jsval *vp);
304JSBool SFVec2fGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
305JSBool SFVec2fSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
308JSBool SFVec3fAdd(JSContext *cx, uintN argc, jsval *vp);
309JSBool SFVec3fCross(JSContext *cx, uintN argc, jsval *vp);
310JSBool SFVec3fDivide(JSContext *cx, uintN argc, jsval *vp);
311JSBool SFVec3fDot(JSContext *cx, uintN argc, jsval *vp);
312JSBool SFVec3fLength(JSContext *cx, uintN argc, jsval *vp);
313JSBool SFVec3fMultiply(JSContext *cx, uintN argc, jsval *vp);
314JSBool SFVec3fNegate(JSContext *cx, uintN argc, jsval *vp);
315JSBool SFVec3fNormalize(JSContext *cx, uintN argc, jsval *vp);
316JSBool SFVec3fSubtract(JSContext *cx, uintN argc, jsval *vp);
317JSBool SFVec3fToString(JSContext *cx, uintN argc, jsval *vp);
318JSBool SFVec3fAssign(JSContext *cx, uintN argc, jsval *vp);
319JSBool SFVec3fConstr(JSContext *cx, uintN argc, jsval *vp);
320JSBool SFVec3fGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
321JSBool SFVec3fSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
323JSBool SFVec3dAdd(JSContext *cx, uintN argc, jsval *vp);
324JSBool SFVec3dCross(JSContext *cx, uintN argc, jsval *vp);
325JSBool SFVec3dDivide(JSContext *cx, uintN argc, jsval *vp);
326JSBool SFVec3dDot(JSContext *cx, uintN argc, jsval *vp);
327JSBool SFVec3dLength(JSContext *cx, uintN argc, jsval *vp);
328JSBool SFVec3dMultiply(JSContext *cx, uintN argc, jsval *vp);
329JSBool SFVec3dNegate(JSContext *cx, uintN argc, jsval *vp);
330JSBool SFVec3dNormalize(JSContext *cx, uintN argc, jsval *vp);
331JSBool SFVec3dSubtract(JSContext *cx, uintN argc, jsval *vp);
332JSBool SFVec3dToString(JSContext *cx, uintN argc, jsval *vp);
333JSBool SFVec3dAssign(JSContext *cx, uintN argc, jsval *vp);
334JSBool SFVec3dConstr(JSContext *cx, uintN argc, jsval *vp);
336JSBool SFVec3dGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
337JSBool SFVec3dSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
342JSBool SFVec4fToString(JSContext *cx, uintN argc, jsval *vp);
343JSBool SFVec4fAssign(JSContext *cx, uintN argc, jsval *vp);
344JSBool SFVec4fConstr(JSContext *cx, uintN argc, jsval *vp);
346JSBool SFVec4fGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
347JSBool SFVec4fSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
349JSBool SFVec4dToString(JSContext *cx, uintN argc, jsval *vp);
350JSBool SFVec4dAssign(JSContext *cx, uintN argc, jsval *vp);
351JSBool SFVec4dConstr(JSContext *cx, uintN argc, jsval *vp);
353JSBool SFVec4dGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
354JSBool SFVec4dSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
358JSBool MFColorToString(JSContext *cx, uintN argc, jsval *vp);
359JSBool MFColorAssign(JSContext *cx, uintN argc, jsval *vp);
360JSBool MFColorConstr(JSContext *cx, uintN argc, jsval *vp);
361JSBool MFColorConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
363JSBool MFColorAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
364JSBool MFColorGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
365JSBool MFColorSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
368JSBool MFFloatToString(JSContext *cx, uintN argc, jsval *vp);
369JSBool MFFloatAssign(JSContext *cx, uintN argc, jsval *vp);
370JSBool MFFloatConstr(JSContext *cx, uintN argc, jsval *vp);
371JSBool MFFloatConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
374JSBool MFFloatAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
375JSBool MFFloatGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
376JSBool MFFloatSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
379JSBool MFInt32ToString(JSContext *cx, uintN argc, jsval *vp);
380JSBool MFInt32Assign(JSContext *cx, uintN argc, jsval *vp);
381JSBool MFInt32Constr(JSContext *cx, uintN argc, jsval *vp);
382JSBool MFInt32ConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
384JSBool MFInt32AddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
385JSBool MFInt32GetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
386JSBool MFInt32SetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
389JSBool MFNodeToString(JSContext *cx, uintN argc, jsval *vp);
390JSBool MFNodeAssign(JSContext *cx, uintN argc, jsval *vp);
391JSBool MFNodeConstr(JSContext *cx, uintN argc, jsval *vp);
392JSBool MFNodeConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
394JSBool MFNodeAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
395JSBool MFNodeGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
396JSBool MFNodeSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
399JSBool MFRotationToString(JSContext *cx, uintN argc, jsval *vp);
400JSBool MFRotationAssign(JSContext *cx, uintN argc, jsval *vp);
401JSBool MFRotationConstr(JSContext *cx, uintN argc, jsval *vp);
402JSBool MFRotationConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
405JSBool MFRotationAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
406JSBool MFRotationGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
407JSBool MFRotationSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
410JSBool MFStringToString(JSContext *cx, uintN argc, jsval *vp);
411JSBool MFStringAssign(JSContext *cx, uintN argc, jsval *vp);
412JSBool MFStringConstr(JSContext *cx, uintN argc, jsval *vp);
413JSBool MFStringConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
416JSBool MFStringConvertProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JSType type, JS::MutableHandle<JS::Value> hvp);
417JSBool MFStringEnumerateProperty(JSContext *cx, JS::Handle<JSObject*> hobj);
418JSBool MFStringDeleteProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool *succeeded);
420JSBool MFStringAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
421JSBool MFStringDeleteProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool *succeeded);
422JSBool MFStringGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
423JSBool MFStringSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
424JSBool MFStringResolveProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid);
428JSBool MFTimeToString(JSContext *cx, uintN argc, jsval *vp);
429JSBool MFTimeAssign(JSContext *cx, uintN argc, jsval *vp);
430JSBool MFTimeConstr(JSContext *cx, uintN argc, jsval *vp);
431JSBool MFTimeConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
435JSBool MFTimeAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
436JSBool MFTimeGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
437JSBool MFTimeSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
441JSBool MFVec2fToString(JSContext *cx, uintN argc, jsval *vp);
442JSBool MFVec2fAssign(JSContext *cx, uintN argc, jsval *vp);
443JSBool MFVec2fConstr(JSContext *cx, uintN argc, jsval *vp);
444JSBool MFVec2fConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
448JSBool MFVec2fAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
449JSBool MFVec2fGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
450JSBool MFVec2fSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
453JSBool MFVec3fToString(JSContext *cx, uintN argc, jsval *vp);
454JSBool MFVec3fAssign(JSContext *cx, uintN argc, jsval *vp);
455JSBool MFVec3fConstr(JSContext *cx, uintN argc, jsval *vp);
456JSBool MFVec3fConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
461JSBool MFVec3fAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
462JSBool MFVec3fGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
463JSBool MFVec3fSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
467JSBool VrmlMatrixToString(JSContext *cx, uintN argc, jsval *vp);
468JSBool VrmlMatrixAssign(JSContext *cx, uintN argc, jsval *vp);
469JSBool VrmlMatrixsetTransform(JSContext *cx, uintN argc, jsval *vp);
470JSBool VrmlMatrixgetTransform(JSContext *cx, uintN argc, jsval *vp);
471JSBool VrmlMatrixinverse(JSContext *cx, uintN argc, jsval *vp);
472JSBool VrmlMatrixtranspose(JSContext *cx, uintN argc, jsval *vp);
473JSBool VrmlMatrixmultLeft(JSContext *cx, uintN argc, jsval *vp);
474JSBool VrmlMatrixmultRight(JSContext *cx, uintN argc, jsval *vp);
475JSBool VrmlMatrixmultVecMatrix(JSContext *cx, uintN argc, jsval *vp);
476JSBool VrmlMatrixmultMatrixVec(JSContext *cx, uintN argc, jsval *vp);
477JSBool VrmlMatrixConstr(JSContext *cx, uintN argc, jsval *vp);
478JSBool VrmlMatrixConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
481JSBool VrmlMatrixAddProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
482JSBool VrmlMatrixGetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JS::MutableHandle<JS::Value> hvp);
483JSBool VrmlMatrixSetProperty(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
486JSBool _standardMFAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval, JSClass *myClass,
int type);
487JSBool _standardMFGetProperty(JSContext *cx, JSObject *obj, jsid
id, jsval *vp,
const char *makeNewElement,
int type);
489void printJSNodeType (JSContext *context, JSObject *myobj);
491extern JSClass SFColorClass;
492extern JSPropertySpec (SFColorProperties)[];
493extern JSFunctionSpec (SFColorFunctions)[];
494extern JSClass SFColorRGBAClass;
495extern JSPropertySpec (SFColorRGBAProperties)[];
496extern JSFunctionSpec (SFColorRGBAFunctions)[];
497extern JSClass SFImageClass;
498extern JSPropertySpec (SFImageProperties)[];
499extern JSFunctionSpec (SFImageFunctions)[];
500extern JSClass SFNodeClass;
501extern JSPropertySpec (SFNodeProperties)[];
502extern JSFunctionSpec (SFNodeFunctions)[];
503extern JSClass SFRotationClass;
504extern JSPropertySpec (SFRotationProperties)[];
505extern JSFunctionSpec (SFRotationFunctions)[];
506extern JSClass SFVec2fClass;
507extern JSPropertySpec (SFVec2fProperties)[];
508extern JSFunctionSpec (SFVec2fFunctions)[];
509extern JSClass SFVec3fClass;
510extern JSPropertySpec (SFVec3fProperties)[];
511extern JSFunctionSpec (SFVec3fFunctions)[];
512extern JSClass SFVec3dClass;
513extern JSPropertySpec (SFVec3dProperties)[];
514extern JSFunctionSpec (SFVec3dFunctions)[];
517extern JSClass SFVec4fClass;
518extern JSPropertySpec (SFVec4fProperties)[];
519extern JSFunctionSpec (SFVec4fFunctions)[];
520extern JSClass SFVec4dClass;
521extern JSPropertySpec (SFVec4dProperties)[];
522extern JSFunctionSpec (SFVec4dFunctions)[];
524extern JSClass MFColorClass;
525extern JSFunctionSpec (MFColorFunctions)[];
526extern JSClass MFFloatClass;
527extern JSFunctionSpec (MFFloatFunctions)[];
528extern JSClass MFBoolClass;
529extern JSFunctionSpec (MFBoolFunctions)[];
530extern JSClass MFInt32Class;
531extern JSFunctionSpec (MFInt32Functions)[];
532extern JSClass MFNodeClass;
533extern JSFunctionSpec (MFNodeFunctions)[];
534extern JSClass MFRotationClass;
535extern JSFunctionSpec (MFRotationFunctions)[];
536extern JSClass MFStringClass;
537extern JSFunctionSpec (MFStringFunctions)[];
538extern JSClass MFTimeClass;
539extern JSPropertySpec (MFTimeProperties)[] ;
540extern JSFunctionSpec (MFTimeFunctions)[];
541extern JSClass MFVec2fClass;
542extern JSFunctionSpec (MFVec2fFunctions)[];
543extern JSClass MFVec3fClass;
544extern JSFunctionSpec (MFVec3fFunctions)[];
545extern JSClass VrmlMatrixClass;
546extern JSFunctionSpec (VrmlMatrixFunctions)[];
549JSBool js_SetPropertyCheck(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
550JSBool js_SetPropertyDebug5(JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
551JSBool js_SetPropertyDebug6 (JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
552JSBool js_SetPropertyDebug3 (JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);
553JSBool js_SetPropertyDebug8 (JSContext *cx, JS::Handle<JSObject*> hobj, JS::Handle<jsid> hiid, JSBool strict, JS::MutableHandle<JS::Value> hvp);