FreeWRL / FreeX3D 4.3.0
jsVRMLClasses.h
1/*
2
3
4Complex VRML nodes as Javascript classes.
5
6*/
7
8/****************************************************************************
9 This file is part of the FreeWRL/FreeX3D Distribution.
10
11 Copyright 2009 CRC Canada. (http://www.crc.gc.ca)
12
13 FreeWRL/FreeX3D is free software: you can redistribute it and/or modify
14 it under the terms of the GNU Lesser Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 FreeWRL/FreeX3D is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 GNU General Public License for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with FreeWRL/FreeX3D. If not, see <http://www.gnu.org/licenses/>.
25****************************************************************************/
26
27
28#ifndef __FREEWRL_JS_VRML_CLASSES_H__
29#define __FREEWRL_JS_VRML_CLASSES_H__
30
31#ifndef UNUSED
32#define UNUSED(v) ((void) v)
33#endif
34
35#define INIT_ARGC_NODE 1
36#define INIT_ARGC 0
37
38/* tie a node into the root. Currently not required, as we do a better job
39of garbage collection
40... NOTE! JS_AddRoot and JS_RemoveRoot is DEPRECATED as of JS_VERSION 185*/
41#define ADD_ROOT(a,b) \
42 /* printf ("adding root cx %u pointer %u value %u\n",a,&b,b); \
43 if (JS_AddRoot(a,&b) != JS_TRUE) { \
44 printf ("JA_AddRoot failed at %s:%d\n",__FILE__,__LINE__); \
45 return JS_FALSE; \
46 } */
47
48#define REMOVE_ROOT(a,b) \
49 /* printf ("removing root %u\n",b); \
50 JS_RemoveRoot(a,&b); */
51
52//#define MF_LENGTH_FIELD "mf_len"
53#define MF_LENGTH_FIELD "length"
54
55#define DEFINE_LENGTH(this_context,this_object,this_length) \
56 {jsval zimbo = INT_TO_JSVAL(this_length);\
57 /* printf ("defining length to %d for %d %d\n",this_length,this_context,this_object);*/ \
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__); \
60 return JS_FALSE;\
61 }}
62
63#define DEFINE_LENGTH_NORV(this_context,this_object,this_length) \
64 {jsval zimbo = INT_TO_JSVAL(this_length);\
65 /* printf ("defining length to %d for %d %d\n",this_length,this_context,this_object);*/ \
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__); \
68 return;\
69 }}
70
71#define DEFINE_MF_ECMA_HAS_CHANGED \
72 {jsval zimbo = INT_TO_JSVAL(0); \
73 /* printf ("defining property for MF_ECMA_HAS_CHANGED... %d %d ",cx,obj); */ \
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__); \
76 /* printf ("myThread is %u\n",pthread_self()); */ \
77 return JS_FALSE; \
78 }}
79
80#define SET_MF_ECMA_HAS_CHANGED { jsval myv; \
81 myv = INT_TO_JSVAL(1); \
82 /* printf ("setting property for MF_ECMA_has_changed %d %d\n",cx,obj); */ \
83 if (!JS_SetProperty(cx, obj, "MF_ECMA_has_changed", &myv)) { \
84 printf( "JS_SetProperty failed for \"MF_ECMA_has_changed\" in doMFSetProperty.\n"); \
85 return JS_FALSE; \
86 }}
87
88
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__); \
93 return; \
94 }}
95
96#if JS_VERSION < 185
97#define COMPILE_FUNCTION_IF_NEEDED(tnfield) \
98 if (JSparamnames[tnfield].eventInFunction == NULL) { \
99 sprintf (scriptline,"%s(__eventIn_Value_%s,__eventInTickTime)", JSparamnames[tnfield].name,JSparamnames[tnfield].name); \
100 /* printf ("compiling function %s\n",scriptline); */ \
101 JSparamnames[tnfield].eventInFunction = (void *) JS_CompileScript( \
102 cx, obj, scriptline, strlen(scriptline), "compile eventIn",1); \
103 }
104#else
105#define COMPILE_FUNCTION_IF_NEEDED(tnfield) \
106 if (JSparamnames[tnfield].eventInFunction == NULL) { \
107 sprintf (scriptline,"%s%s(%s%s,__eventInTickTime)", "",JSparamnames[tnfield].name,"__eventIn_Value_",JSparamnames[tnfield].name); \
108 /* printf ("compiling function %s for type %d\n",scriptline,JSparamnames[tnfield].type); */ \
109 JSparamnames[tnfield].eventInFunction = (void*)JS_CompileScript( \
110 cx, obj, scriptline, strlen(scriptline), "compile eventIn",1); \
111 if (!JS_AddObjectRoot(cx,(JSObject**)(&JSparamnames[tnfield].eventInFunction))) { \
112 printf( "JS_AddObjectRoot failed for compilation of script \"%s\" at %s:%d.\n",scriptline,__FILE__,__LINE__); \
113 return; \
114 } \
115 }
116#define COMPILE_FUNCTION_IF_NEEDED_SET(tnfield,kind) \
117 if (JSparamnames[tnfield].eventInFunction == NULL) { \
118 if(kind == PKW_inputOutput) \
119 sprintf (scriptline,"set_%s(%s,__eventInTickTime)", JSparamnames[tnfield].name,JSparamnames[tnfield].name); \
120 else /* PKW_inputOnly */ \
121 sprintf (scriptline,"%s(%s%s,__eventInTickTime)", JSparamnames[tnfield].name,"__eventIn_Value_",JSparamnames[tnfield].name); \
122 /* printf ("compiling function %s for type %d\n",scriptline,JSparamnames[tnfield].type); */ \
123 JSparamnames[tnfield].eventInFunction = (void*)JS_CompileScript( \
124 cx, obj, scriptline, strlen(scriptline), "compile eventIn",1); \
125 if (!JS_AddObjectRoot(cx,(JSObject**)(&JSparamnames[tnfield].eventInFunction))) { \
126 printf( "JS_AddObjectRoot failed for compilation of script \"%s\" at %s:%d.\n",scriptline,__FILE__,__LINE__); \
127 return; \
128 } \
129 }
130#endif
131#define RUN_FUNCTION(tnfield) \
132 {jsval zimbo; \
133 if (!JS_ExecuteScript(cx, obj, JSparamnames[tnfield].eventInFunction, &zimbo)) { \
134 printf ("eventIn %s failed to complete successfully, in FreeWRL code %s:%d\n",JSparamnames[tnfield].name,__FILE__,__LINE__); \
135 /* printf ("myThread is %u\n",pthread_self());*/ \
136 }}
137
138
139#define SET_LENGTH(cx,newMFObject,length) \
140 { jsval lenval; \
141 lenval = INT_TO_JSVAL(length); \
142 if (!JS_SetProperty(cx, newMFObject, MF_LENGTH_FIELD, &lenval)) { \
143 printf( "JS_SetProperty failed for \"%s\" at %s:%d\n", MF_LENGTH_FIELD,__FILE__,__LINE__); \
144 return; \
145 }}
146
147#define SET_EVENTIN_VALUE(cx,obj,nameIndex,newObj) \
148 { char scriptline[100]; \
149 sprintf (scriptline,"__eventIn_Value_%s", JSparamnames[nameIndex].name); \
150 if (!JS_DefineProperty(cx,obj, scriptline, OBJECT_TO_JSVAL(newObj), JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB2, JSPROP_PERMANENT)) { \
151 printf( "JS_DefineProperty failed for \"ECMA in\" at %s:%d.\n",__FILE__,__LINE__); \
152 /* printf ("myThread is %u\n",pthread_self()); */ \
153 return; \
154 } }
155
156
157/*
158 * The following VRML field types don't need JS classes:
159 * (ECMAScript native datatypes, see JS.pm):
160 *
161 * * SFBool
162 * * SFFloat
163 * * SFInt32
164 * * SFString
165 * * SFTime
166 *
167 * VRML field types that are implemented here as Javascript classes
168 * are:
169 *
170 * * SFColor, MFColor
171 * * MFFloat
172 * * SFImage -- not supported currently
173 * * MFInt32
174 * * SFNode (special case - must be supported perl (see JS.pm), MFNode
175 * * SFRotation, MFRotation
176 * * MFString
177 * * MFTime
178 * * SFVec2f, MFVec2f
179 * * SFVec3f, MFVec3f
180 * * SFVec3d
181 *
182 * These (single value) fields have struct types defined elsewhere
183 * (see Structs.h) that are stored by Javascript classes as private data.
184 *
185 * Some of the computations for SFVec3f, SFRotation are now defined
186 * elsewhere (see LinearAlgebra.h) to avoid duplication.
187 */
188
189
190/* helper functions */
191#if JS_VERSION < 186
192void JS_MY_Finalize(JSContext *cx, JSObject *obj);
193#else
194void JS_MY_Finalize(JSFreeOp *fop, JSObject *obj);
195#endif
196
197JSBool doMFToString(JSContext *cx, JSObject *obj, const char *className, jsval *rval);
198#if JS_VERSION < 185
199JSBool doMFAddProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp, char *name);
200JSBool doMFSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp, int type);
201#else
202JSBool doMFAddProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp, char *name);
203JSBool doMFSetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp, int type);
204#endif
205JSBool getBrowser(JSContext *context, JSObject *obj, BrowserNative **brow);
206JSBool doMFStringUnquote(JSContext *cx, jsval *vp);
207
208
209/* class functions */
210
211#if JS_VERSION < 185
212JSBool globalResolve(JSContext *cx, JSObject *obj, jsval id);
213#elif JS_VERSION == 185
214JSBool globalResolve(JSContext *cx, JSObject *obj, jsid id);
215#else
216JSBool globalResolve(JSContext *cx, JSHandleObject hobj, JSHandleId hiid);
217#endif
218
219JSBool
220loadVrmlClasses(JSContext *context,
221 JSObject *globalObj);
222
223
224
225#if JS_VERSION < 185
226JSBool getECMANative(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
227#elif JS_VERSION == 185
228JSBool getECMANative(JSContext *cx, JSObject *obj, jsid iid, jsval *vp);
229#else
230JSBool getECMANative(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
231#endif
232
233#if JS_VERSION < 185
234JSBool setECMANative(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
235#elif JS_VERSION == 185
236JSBool setECMANative(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp);
237#else
238JSBool setECMANative(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
239#endif
240
241
242#if JS_VERSION < 185
243JSBool getAssignProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
244#elif JS_VERSION == 185
245JSBool getAssignProperty(JSContext *cx, JSObject *obj, jsid iid, jsval *vp);
246#else
247JSBool getAssignProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
248#endif
249
250#if JS_VERSION < 185
251JSBool setAssignProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
252#elif JS_VERSION == 185
253JSBool setAssignProperty(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp);
254#else
255JSBool setAssignProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
256#endif
257
258#if JS_VERSION < 185
259JSBool
260SFColorGetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
261
262JSBool
263SFColorSetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
264
265JSBool
266SFColorToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
267
268JSBool
269SFColorAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
270
271JSBool
272SFColorConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
273#else
274JSBool SFColorGetHSV(JSContext *cx, uintN argc, jsval *vp);
275JSBool SFColorSetHSV(JSContext *cx, uintN argc, jsval *vp);
276JSBool SFColorToString(JSContext *cx, uintN argc, jsval *vp);
277JSBool SFColorAssign(JSContext *cx, uintN argc, jsval *vp);
278JSBool SFColorConstr(JSContext *cx, uintN argc, jsval *vp);
279#endif
280
281#if JS_VERSION < 185
282JSBool SFColorGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
283JSBool SFColorSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
284#elif JS_VERSION == 185
285JSBool SFColorGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
286JSBool SFColorSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
287#else
288JSBool SFColorGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
289JSBool SFColorSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
290#endif
291
292#if JS_VERSION < 185
293JSBool
294SFColorRGBAGetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
295
296JSBool
297SFColorRGBASetHSV(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
298
299JSBool
300SFColorRGBAToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
301
302JSBool
303SFColorRGBAAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
304
305JSBool
306SFColorRGBAConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
307#else
308JSBool SFColorRGBAGetHSV(JSContext *cx, uintN argc, jsval *vp);
309JSBool SFColorRGBASetHSV(JSContext *cx, uintN argc, jsval *vp);
310JSBool SFColorRGBAToString(JSContext *cx, uintN argc, jsval *vp);
311JSBool SFColorRGBAAssign(JSContext *cx, uintN argc, jsval *vp);
312JSBool SFColorRGBAConstr(JSContext *cx, uintN argc, jsval *vp);
313#endif
314
315#if JS_VERSION < 185
316JSBool SFColorRGBAGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
317JSBool SFColorRGBASetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
318#elif JS_VERSION == 185
319JSBool SFColorRGBAGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
320JSBool SFColorRGBASetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
321#else
322JSBool SFColorRGBAGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
323JSBool SFColorRGBASetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
324#endif
325
326#if JS_VERSION < 185
327JSBool
328SFImageToString(JSContext *cx,
329 JSObject *obj,
330 uintN argc,
331 jsval *argv,
332 jsval *rval);
333
334JSBool
335SFImageAssign(JSContext *cx,
336 JSObject *obj,
337 uintN argc,
338 jsval *argv,
339 jsval *rval);
340
341
342JSBool
343SFImageConstr(JSContext *cx,
344 JSObject *obj,
345 uintN argc,
346 jsval *argv,
347 jsval *rval);
348#else
349JSBool SFImageToString(JSContext *cx, uintN argc,jsval *vp);
350JSBool SFImageAssign(JSContext *cx, uintN argc, jsval *vp);
351JSBool SFImageConstr(JSContext *cx, uintN argc, jsval *vp);
352#endif
353
354
355
356#if JS_VERSION < 185
357JSBool SFImageGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
358JSBool SFImageSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
359#elif JS_VERSION == 185
360JSBool SFImageGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
361JSBool SFImageSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
362#else
363JSBool SFImageGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
364JSBool SFImageSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
365#endif
366
367
368#if JS_VERSION < 185
369JSBool
370SFNodeToString(JSContext *cx,
371 JSObject *obj,
372 uintN argc,
373 jsval *argv,
374 jsval *rval);
375JSBool
376SFNodeValueOf(JSContext *cx,
377 JSObject *obj,
378 uintN argc,
379 jsval *argv,
380 jsval *rval);
381JSBool
382SFNodeAssign(JSContext *cx, JSObject *obj,
383 uintN argc,
384 jsval *argv,
385 jsval *rval);
386JSBool
387SFNodeEquals(JSContext *cx, JSObject *obj,
388 uintN argc,
389 jsval *argv,
390 jsval *rval);
391
392JSBool
393SFNodeConstr(JSContext *cx,
394 JSObject *obj,
395 uintN argc,
396 jsval *argv,
397 jsval *rval);
398#else
399JSBool SFNodeToString(JSContext *cx, uintN argc, jsval *vp);
400JSBool SFNodeValueOf(JSContext *cx, uintN argc, jsval *vp);
401JSBool SFNodeAssign(JSContext *cx, uintN argc, jsval *vp);
402JSBool SFNodeEquals(JSContext *cx, uintN argc, jsval *vp);
403JSBool SFNodeConstr(JSContext *cx, uintN argc, jsval *vp);
404#endif
405
406#if JS_VERSION < 186
407void SFNodeFinalize(JSContext *cx, JSObject *obj);
408#else
409void SFNodeFinalize(JSFreeOp *fop, JSObject *obj);
410#endif
411
412#if JS_VERSION < 185
413JSBool SFNodeGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
414JSBool SFNodeSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
415#elif JS_VERSION == 185
416JSBool SFNodeGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
417JSBool SFNodeSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
418#else
419JSBool SFNodeGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
420JSBool SFNodeSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
421#endif
422
423#if JS_VERSION < 185
424JSBool
425SFRotationGetAxis(JSContext *cx,
426 JSObject *obj,
427 uintN argc,
428 jsval *argv,
429 jsval *rval);
430
431/* not implemented */
432JSBool
433SFRotationInverse(JSContext *cx,
434 JSObject *obj,
435 uintN argc,
436 jsval *argv,
437 jsval *rval);
438
439JSBool
440SFRotationMultiply(JSContext *cx,
441 JSObject *obj,
442 uintN argc,
443 jsval *argv,
444 jsval *rval);
445JSBool
446SFRotationMultVec(JSContext *cx,
447 JSObject *obj,
448 uintN argc,
449 jsval *argv,
450 jsval *rval);
451
452JSBool
453SFRotationSetAxis(JSContext *cx,
454 JSObject *obj,
455 uintN argc,
456 jsval *argv,
457 jsval *rval);
458
459JSBool
460SFRotationSlerp(JSContext *cx,
461 JSObject *obj,
462 uintN argc,
463 jsval *argv,
464 jsval *rval);
465
466JSBool
467SFRotationToString(JSContext *cx,
468 JSObject *obj,
469 uintN argc,
470 jsval *argv,
471 jsval *rval);
472
473JSBool
474SFRotationAssign(JSContext *cx,
475 JSObject *obj,
476 uintN argc,
477 jsval *argv,
478 jsval *rval);
479
480JSBool
481SFRotationConstr(JSContext *cx,
482 JSObject *obj,
483 uintN argc,
484 jsval *argv,
485 jsval *rval);
486
487#else
488JSBool SFRotationGetAxis(JSContext *cx, uintN argc, jsval *vp);
489JSBool SFRotationInverse(JSContext *cx, uintN argc, jsval *vp); /* not implemented */
490JSBool SFRotationMultiply(JSContext *cx, uintN argc, jsval *vp);
491JSBool SFRotationMultVec(JSContext *cx, uintN argc, jsval *vp);
492JSBool SFRotationSetAxis(JSContext *cx, uintN argc, jsval *vp);
493JSBool SFRotationSlerp(JSContext *cx, uintN argc, jsval *vp);
494JSBool SFRotationToString(JSContext *cx, uintN argc, jsval *vp);
495JSBool SFRotationAssign(JSContext *cx, uintN argc, jsval *vp);
496JSBool SFRotationConstr(JSContext *cx, uintN argc, jsval *vp);
497#endif
498
499
500
501#if JS_VERSION < 185
502JSBool SFRotationGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
503JSBool SFRotationSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
504#elif JS_VERSION == 185
505JSBool SFRotationGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
506JSBool SFRotationSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
507#else
508JSBool SFRotationGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
509JSBool SFRotationSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
510#endif
511
512#if JS_VERSION < 185
513JSBool
514SFVec2fAdd(JSContext *cx,
515 JSObject *obj,
516 uintN argc,
517 jsval *argv,
518 jsval *rval);
519
520JSBool
521SFVec2fDivide(JSContext *cx,
522 JSObject *obj,
523 uintN argc,
524 jsval *argv,
525 jsval *rval);
526
527JSBool
528SFVec2fDot(JSContext *cx,
529 JSObject *obj,
530 uintN argc,
531 jsval *argv,
532 jsval *rval);
533
534JSBool
535SFVec2fLength(JSContext *cx,
536 JSObject *obj,
537 uintN argc,
538 jsval *argv,
539 jsval *rval);
540
541JSBool
542SFVec2fMultiply(JSContext *cx,
543 JSObject *obj,
544 uintN argc,
545 jsval *argv,
546 jsval *rval);
547
548/* JSBool
549SFVec2fNegate(JSContext *cx,
550 JSObject *obj,
551 uintN argc,
552 jsval *argv,
553 jsval *rval);
554*/
555
556JSBool
557SFVec2fNormalize(JSContext *cx,
558 JSObject *obj,
559 uintN argc,
560 jsval *argv,
561 jsval *rval);
562
563JSBool
564SFVec2fSubtract(JSContext *cx,
565 JSObject *obj,
566 uintN argc,
567 jsval *argv,
568 jsval *rval);
569
570JSBool
571SFVec2fToString(JSContext *cx,
572 JSObject *obj,
573 uintN argc,
574 jsval *argv,
575 jsval *rval);
576
577JSBool
578SFVec2fAssign(JSContext *cx,
579 JSObject *obj,
580 uintN argc,
581 jsval *argv,
582 jsval *rval);
583
584JSBool
585SFVec2fConstr(JSContext *cx,
586 JSObject *obj,
587 uintN argc,
588 jsval *argv,
589 jsval *rval);
590#else
591JSBool SFVec2fAdd(JSContext *cx, uintN argc, jsval *vp);
592JSBool SFVec2fDivide(JSContext *cx, uintN argc, jsval *vp);
593JSBool SFVec2fDot(JSContext *cx, uintN argc, jsval *vp);
594JSBool SFVec2fLength(JSContext *cx, uintN argc, jsval *vp);
595JSBool SFVec2fMultiply(JSContext *cx, uintN argc, jsval *vp);
596/* JSBool SFVec2fNegate(JSContext *cx, uintN argc, jsval *vp); */
597JSBool SFVec2fNormalize(JSContext *cx, uintN argc, jsval *vp);
598JSBool SFVec2fSubtract(JSContext *cx, uintN argc, jsval *vp);
599JSBool SFVec2fToString(JSContext *cx, uintN argc, jsval *vp);
600JSBool SFVec2fAssign(JSContext *cx, uintN argc, jsval *vp);
601JSBool SFVec2fConstr(JSContext *cx, uintN argc, jsval *vp);
602#endif
603
604#if JS_VERSION < 185
605JSBool SFVec2fGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
606JSBool SFVec2fSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
607#elif JS_VERSION == 185
608JSBool SFVec2fGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
609JSBool SFVec2fSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
610#else //186 aka 17
611JSBool SFVec2fGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
612JSBool SFVec2fSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
613#endif
614
615#if JS_VERSION < 185
616JSBool SFVec3fAdd(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
617JSBool SFVec3fCross(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
618JSBool SFVec3fDivide(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
619JSBool SFVec3fDot(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
620JSBool SFVec3fLength(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
621JSBool SFVec3fMultiply(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
622JSBool SFVec3fNegate(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
623JSBool SFVec3fNormalize(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
624JSBool SFVec3fSubtract(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
625JSBool SFVec3fToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
626JSBool SFVec3fAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
627JSBool SFVec3fConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
628JSBool SFVec3fGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
629JSBool SFVec3fSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
630#else
631JSBool SFVec3fAdd(JSContext *cx, uintN argc, jsval *vp);
632JSBool SFVec3fCross(JSContext *cx, uintN argc, jsval *vp);
633JSBool SFVec3fDivide(JSContext *cx, uintN argc, jsval *vp);
634JSBool SFVec3fDot(JSContext *cx, uintN argc, jsval *vp);
635JSBool SFVec3fLength(JSContext *cx, uintN argc, jsval *vp);
636JSBool SFVec3fMultiply(JSContext *cx, uintN argc, jsval *vp);
637JSBool SFVec3fNegate(JSContext *cx, uintN argc, jsval *vp);
638JSBool SFVec3fNormalize(JSContext *cx, uintN argc, jsval *vp);
639JSBool SFVec3fSubtract(JSContext *cx, uintN argc, jsval *vp);
640JSBool SFVec3fToString(JSContext *cx, uintN argc, jsval *vp);
641JSBool SFVec3fAssign(JSContext *cx, uintN argc, jsval *vp);
642JSBool SFVec3fConstr(JSContext *cx, uintN argc, jsval *vp);
643#if JS_VERSION == 185
644JSBool SFVec3fGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
645JSBool SFVec3fSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
646#else //186 aka 17
647JSBool SFVec3fGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
648JSBool SFVec3fSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
649#endif
650#endif
651
652#if JS_VERSION < 185
653JSBool SFVec3dAdd(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
654JSBool SFVec3dCross(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
655JSBool SFVec3dDivide(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
656JSBool SFVec3dDot(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
657JSBool SFVec3dLength(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
658JSBool SFVec3dMultiply(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
659JSBool SFVec3dNegate(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
660JSBool SFVec3dNormalize(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
661JSBool SFVec3dSubtract(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
662JSBool SFVec3dToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
663JSBool SFVec3dAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
664JSBool SFVec3dConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
665JSBool SFVec3dGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
666JSBool SFVec3dSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
667#else
668JSBool SFVec3dAdd(JSContext *cx, uintN argc, jsval *vp);
669JSBool SFVec3dCross(JSContext *cx, uintN argc, jsval *vp);
670JSBool SFVec3dDivide(JSContext *cx, uintN argc, jsval *vp);
671JSBool SFVec3dDot(JSContext *cx, uintN argc, jsval *vp);
672JSBool SFVec3dLength(JSContext *cx, uintN argc, jsval *vp);
673JSBool SFVec3dMultiply(JSContext *cx, uintN argc, jsval *vp);
674JSBool SFVec3dNegate(JSContext *cx, uintN argc, jsval *vp);
675JSBool SFVec3dNormalize(JSContext *cx, uintN argc, jsval *vp);
676JSBool SFVec3dSubtract(JSContext *cx, uintN argc, jsval *vp);
677JSBool SFVec3dToString(JSContext *cx, uintN argc, jsval *vp);
678JSBool SFVec3dAssign(JSContext *cx, uintN argc, jsval *vp);
679JSBool SFVec3dConstr(JSContext *cx, uintN argc, jsval *vp);
680#if JS_VERSION == 185
681JSBool SFVec3dGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
682JSBool SFVec3dSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
683#else //186 aka 17
684JSBool SFVec3dGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
685JSBool SFVec3dSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
686#endif
687#endif
688
689
690#if JS_VERSION < 185
691JSBool SFVec4fToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
692JSBool SFVec4fAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
693JSBool SFVec4fConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
694JSBool SFVec4fGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
695JSBool SFVec4fSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
696JSBool SFVec4dToString(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
697JSBool SFVec4dAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
698JSBool SFVec4dConstr(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
699JSBool SFVec4dGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
700JSBool SFVec4dSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
701#else
702JSBool SFVec4fToString(JSContext *cx, uintN argc, jsval *vp);
703JSBool SFVec4fAssign(JSContext *cx, uintN argc, jsval *vp);
704JSBool SFVec4fConstr(JSContext *cx, uintN argc, jsval *vp);
705#if JS_VERSION == 185
706JSBool SFVec4fGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
707JSBool SFVec4fSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
708#else //186 aka 17
709JSBool SFVec4fGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
710JSBool SFVec4fSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
711#endif
712JSBool SFVec4dToString(JSContext *cx, uintN argc, jsval *vp);
713JSBool SFVec4dAssign(JSContext *cx, uintN argc, jsval *vp);
714JSBool SFVec4dConstr(JSContext *cx, uintN argc, jsval *vp);
715#if JS_VERSION == 185
716JSBool SFVec4dGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
717JSBool SFVec4dSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
718#else //186 aka 17
719JSBool SFVec4dGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
720JSBool SFVec4dSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
721#endif
722#endif
723
724#if JS_VERSION < 185
725JSBool
726MFColorToString(JSContext *cx,
727 JSObject *obj,
728 uintN argc,
729 jsval *argv,
730 jsval *rval);
731
732JSBool
733MFColorAssign(JSContext *cx,
734 JSObject *obj,
735 uintN argc,
736 jsval *argv,
737 jsval *rval);
738
739JSBool
740MFColorConstr(JSContext *cx,
741 JSObject *obj,
742 uintN argc,
743 jsval *argv,
744 jsval *rval);
745#else
746JSBool MFColorToString(JSContext *cx, uintN argc, jsval *vp);
747JSBool MFColorAssign(JSContext *cx, uintN argc, jsval *vp);
748JSBool MFColorConstr(JSContext *cx, uintN argc, jsval *vp);
749JSBool MFColorConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
750#endif
751
752#if JS_VERSION < 185
753JSBool MFColorAddProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
754JSBool MFColorGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
755JSBool MFColorSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
756#elif JS_VERSION == 185
757JSBool MFColorAddProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
758JSBool MFColorGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
759JSBool MFColorSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
760#else //186 aka 17
761JSBool MFColorAddProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
762JSBool MFColorGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
763JSBool MFColorSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
764#endif
765
766#if JS_VERSION < 185
767JSBool
768MFFloatToString(JSContext *cx,
769 JSObject *obj,
770 uintN argc,
771 jsval *argv,
772 jsval *rval);
773
774JSBool
775MFFloatAssign(JSContext *cx,
776 JSObject *obj,
777 uintN argc,
778 jsval *argv,
779 jsval *rval);
780
781JSBool
782MFFloatConstr(JSContext *cx,
783 JSObject *obj,
784 uintN argc,
785 jsval *argv,
786 jsval *rval);
787#else
788JSBool MFFloatToString(JSContext *cx, uintN argc, jsval *vp);
789JSBool MFFloatAssign(JSContext *cx, uintN argc, jsval *vp);
790JSBool MFFloatConstr(JSContext *cx, uintN argc, jsval *vp);
791JSBool MFFloatConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
792#endif
793
794
795#if JS_VERSION < 185
796JSBool MFFloatAddProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
797JSBool MFFloatGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
798JSBool MFFloatSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
799#elif JS_VERSION == 185
800JSBool MFFloatAddProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
801JSBool MFFloatGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
802JSBool MFFloatSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
803#else //186 aka 17
804JSBool MFFloatAddProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
805JSBool MFFloatGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
806JSBool MFFloatSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
807#endif
808
809#if JS_VERSION < 185
810JSBool
811MFInt32ToString(JSContext *cx,
812 JSObject *obj,
813 uintN argc,
814 jsval *argv,
815 jsval *rval);
816
817JSBool
818MFInt32Assign(JSContext *cx,
819 JSObject *obj,
820 uintN argc,
821 jsval *argv,
822 jsval *rval);
823
824JSBool
825MFInt32Constr(JSContext *cx,
826 JSObject *obj,
827 uintN argc,
828 jsval *argv,
829 jsval *rval);
830#else
831JSBool MFInt32ToString(JSContext *cx, uintN argc, jsval *vp);
832JSBool MFInt32Assign(JSContext *cx, uintN argc, jsval *vp);
833JSBool MFInt32Constr(JSContext *cx, uintN argc, jsval *vp);
834JSBool MFInt32ConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
835#endif
836
837#if JS_VERSION < 185
838JSBool MFInt32AddProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
839JSBool MFInt32GetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
840JSBool MFInt32SetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
841#elif JS_VERSION == 185
842JSBool MFInt32AddProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
843JSBool MFInt32GetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
844JSBool MFInt32SetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
845#else //186 aka 17
846JSBool MFInt32AddProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
847JSBool MFInt32GetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
848JSBool MFInt32SetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
849#endif
850
851#if JS_VERSION < 185
852JSBool
853MFNodeToString(JSContext *cx,
854 JSObject *obj,
855 uintN argc,
856 jsval *argv,
857 jsval *rval);
858
859JSBool
860MFNodeAssign(JSContext *cx,
861 JSObject *obj,
862 uintN argc,
863 jsval *argv,
864 jsval *rval);
865
866JSBool
867MFNodeConstr(JSContext *cx,
868 JSObject *obj,
869 uintN argc,
870 jsval *argv,
871 jsval *rval);
872#else
873JSBool MFNodeToString(JSContext *cx, uintN argc, jsval *vp);
874JSBool MFNodeAssign(JSContext *cx, uintN argc, jsval *vp);
875JSBool MFNodeConstr(JSContext *cx, uintN argc, jsval *vp);
876JSBool MFNodeConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
877#endif
878
879
880#if JS_VERSION < 185
881JSBool MFNodeAddProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
882JSBool MFNodeGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
883JSBool MFNodeSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
884#elif JS_VERSION == 185
885JSBool MFNodeAddProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
886JSBool MFNodeGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
887JSBool MFNodeSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
888#else //186 aka 17
889JSBool MFNodeAddProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
890JSBool MFNodeGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
891JSBool MFNodeSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
892#endif
893
894#if JS_VERSION < 185
895JSBool
896MFRotationToString(JSContext *cx,
897 JSObject *obj,
898 uintN argc,
899 jsval *argv,
900 jsval *rval);
901
902JSBool
903MFRotationAssign(JSContext *cx,
904 JSObject *obj,
905 uintN argc,
906 jsval *argv,
907 jsval *rval);
908
909JSBool
910MFRotationConstr(JSContext *cx,
911 JSObject *obj,
912 uintN argc,
913 jsval *argv,
914 jsval *rval);
915#else
916JSBool MFRotationToString(JSContext *cx, uintN argc, jsval *vp);
917JSBool MFRotationAssign(JSContext *cx, uintN argc, jsval *vp);
918JSBool MFRotationConstr(JSContext *cx, uintN argc, jsval *vp);
919JSBool MFRotationConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
920#endif
921
922#if JS_VERSION < 185
923JSBool MFRotationAddProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
924JSBool MFRotationGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
925JSBool MFRotationSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
926#elif JS_VERSION == 185
927JSBool MFRotationAddProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
928JSBool MFRotationGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
929JSBool MFRotationSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
930#else //186 aka 17
931JSBool MFRotationAddProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
932JSBool MFRotationGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
933JSBool MFRotationSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
934#endif
935
936#if JS_VERSION < 185
937JSBool
938MFStringToString(JSContext *cx,
939 JSObject *obj,
940 uintN argc,
941 jsval *argv,
942 jsval *rval);
943
944JSBool
945MFStringAssign(JSContext *cx,
946 JSObject *obj,
947 uintN argc,
948 jsval *argv,
949 jsval *rval);
950
951JSBool
952MFStringConstr(JSContext *cx,
953 JSObject *obj,
954 uintN argc,
955 jsval *argv,
956 jsval *rval);
957#else
958JSBool MFStringToString(JSContext *cx, uintN argc, jsval *vp);
959JSBool MFStringAssign(JSContext *cx, uintN argc, jsval *vp);
960JSBool MFStringConstr(JSContext *cx, uintN argc, jsval *vp);
961JSBool MFStringConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
962#endif
963
964
965
966#if JS_VERSION < 186
967JSBool MFStringConvertProperty(JSContext *cx, JSObject *obj, JSType type, jsval *vp) ;
968JSBool MFStringEnumerateProperty(JSContext *cx, JSObject *obj) ;
969#else
970JSBool MFStringConvertProperty(JSContext *cx, JSHandleObject hobj, JSType type, JSMutableHandleValue hvp);
971JSBool MFStringEnumerateProperty(JSContext *cx, JSHandleObject hobj);
972#endif
973
974#if JS_VERSION < 185
975JSBool MFStringAddProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
976JSBool MFStringDeleteProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
977JSBool MFStringGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
978JSBool MFStringSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
979JSBool MFStringResolveProperty(JSContext *cx, JSObject *obj, jsval id) ;
980#elif JS_VERSION == 185
981JSBool MFStringAddProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
982JSBool MFStringDeleteProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
983JSBool MFStringGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
984JSBool MFStringSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
985JSBool MFStringResolveProperty(JSContext *cx, JSObject *obj, jsid id) ;
986#else //186 aka 17
987JSBool MFStringAddProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
988JSBool MFStringDeleteProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
989JSBool MFStringGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
990JSBool MFStringSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
991JSBool MFStringResolveProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid);
992#endif
993
994#if JS_VERSION < 185
995JSBool
996MFTimeToString(JSContext *cx,
997 JSObject *obj,
998 uintN argc,
999 jsval *argv,
1000 jsval *rval);
1001
1002JSBool
1003MFTimeAssign(JSContext *cx,
1004 JSObject *obj,
1005 uintN argc,
1006 jsval *argv,
1007 jsval *rval);
1008
1009JSBool
1010MFTimeConstr(JSContext *cx,
1011 JSObject *obj,
1012 uintN argc,
1013 jsval *argv,
1014 jsval *rval);
1015#else
1016JSBool MFTimeToString(JSContext *cx, uintN argc, jsval *vp);
1017JSBool MFTimeAssign(JSContext *cx, uintN argc, jsval *vp);
1018JSBool MFTimeConstr(JSContext *cx, uintN argc, jsval *vp);
1019JSBool MFTimeConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
1020#endif
1021
1022#if JS_VERSION < 185
1023JSBool MFTimeAddProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
1024JSBool MFTimeGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
1025JSBool MFTimeSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
1026#elif JS_VERSION == 185
1027JSBool MFTimeAddProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
1028JSBool MFTimeGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
1029JSBool MFTimeSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
1030#else //186 aka 17
1031JSBool MFTimeAddProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
1032JSBool MFTimeGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
1033JSBool MFTimeSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
1034#endif
1035
1036#if JS_VERSION < 185
1037JSBool
1038MFVec2fToString(JSContext *cx,
1039 JSObject *obj,
1040 uintN argc,
1041 jsval *argv,
1042 jsval *rval);
1043
1044JSBool
1045MFVec2fAssign(JSContext *cx,
1046 JSObject *obj,
1047 uintN argc,
1048 jsval *argv,
1049 jsval *rval);
1050
1051JSBool
1052MFVec2fConstr(JSContext *cx,
1053 JSObject *obj,
1054 uintN argc,
1055 jsval *argv,
1056 jsval *rval);
1057#else
1058JSBool MFVec2fToString(JSContext *cx, uintN argc, jsval *vp);
1059JSBool MFVec2fAssign(JSContext *cx, uintN argc, jsval *vp);
1060JSBool MFVec2fConstr(JSContext *cx, uintN argc, jsval *vp);
1061JSBool MFVec2fConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
1062#endif
1063
1064#if JS_VERSION < 185
1065JSBool MFVec2fAddProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
1066JSBool MFVec2fGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
1067JSBool MFVec2fSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
1068#elif JS_VERSION == 185
1069JSBool MFVec2fAddProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
1070JSBool MFVec2fGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
1071JSBool MFVec2fSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
1072#else //186 aka 17
1073JSBool MFVec2fAddProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
1074JSBool MFVec2fGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
1075JSBool MFVec2fSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
1076#endif
1077
1078#if JS_VERSION < 185
1079JSBool
1080MFVec3fToString(JSContext *cx,
1081 JSObject *obj,
1082 uintN argc,
1083 jsval *argv,
1084 jsval *rval);
1085
1086JSBool
1087MFVec3fAssign(JSContext *cx,
1088 JSObject *obj,
1089 uintN argc,
1090 jsval *argv,
1091 jsval *rval);
1092
1093JSBool
1094MFVec3fConstr(JSContext *cx,
1095 JSObject *obj,
1096 uintN argc,
1097 jsval *argv,
1098 jsval *rval);
1099#else
1100JSBool MFVec3fToString(JSContext *cx, uintN argc, jsval *vp);
1101JSBool MFVec3fAssign(JSContext *cx, uintN argc, jsval *vp);
1102JSBool MFVec3fConstr(JSContext *cx, uintN argc, jsval *vp);
1103JSBool MFVec3fConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
1104#endif
1105
1106
1107#if JS_VERSION < 185
1108JSBool MFVec3fAddProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
1109JSBool MFVec3fGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
1110JSBool MFVec3fSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
1111#elif JS_VERSION == 185
1112JSBool MFVec3fAddProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
1113JSBool MFVec3fGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
1114JSBool MFVec3fSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
1115#else //186 aka 17
1116JSBool MFVec3fAddProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
1117JSBool MFVec3fGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
1118JSBool MFVec3fSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
1119#endif
1120
1121#if JS_VERSION < 185
1122JSBool
1123VrmlMatrixToString(JSContext *cx,
1124 JSObject *obj,
1125 uintN argc,
1126 jsval *argv,
1127 jsval *rval);
1128
1129JSBool
1130VrmlMatrixAssign(JSContext *cx,
1131 JSObject *obj,
1132 uintN argc,
1133 jsval *argv,
1134 jsval *rval);
1135
1136
1137JSBool VrmlMatrixsetTransform(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
1138JSBool VrmlMatrixgetTransform(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
1139JSBool VrmlMatrixinverse(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
1140JSBool VrmlMatrixtranspose(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
1141JSBool VrmlMatrixmultLeft(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
1142JSBool VrmlMatrixmultRight(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
1143JSBool VrmlMatrixmultVecMatrix(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
1144JSBool VrmlMatrixmultMatrixVec(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
1145
1146JSBool
1147VrmlMatrixConstr(JSContext *cx,
1148 JSObject *obj,
1149 uintN argc,
1150 jsval *argv,
1151 jsval *rval);
1152#else
1153JSBool VrmlMatrixToString(JSContext *cx, uintN argc, jsval *vp);
1154JSBool VrmlMatrixAssign(JSContext *cx, uintN argc, jsval *vp);
1155JSBool VrmlMatrixsetTransform(JSContext *cx, uintN argc, jsval *vp);
1156JSBool VrmlMatrixgetTransform(JSContext *cx, uintN argc, jsval *vp);
1157JSBool VrmlMatrixinverse(JSContext *cx, uintN argc, jsval *vp);
1158JSBool VrmlMatrixtranspose(JSContext *cx, uintN argc, jsval *vp);
1159JSBool VrmlMatrixmultLeft(JSContext *cx, uintN argc, jsval *vp);
1160JSBool VrmlMatrixmultRight(JSContext *cx, uintN argc, jsval *vp);
1161JSBool VrmlMatrixmultVecMatrix(JSContext *cx, uintN argc, jsval *vp);
1162JSBool VrmlMatrixmultMatrixVec(JSContext *cx, uintN argc, jsval *vp);
1163JSBool VrmlMatrixConstr(JSContext *cx, uintN argc, jsval *vp);
1164JSBool VrmlMatrixConstrInternals(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
1165#endif
1166
1167#if JS_VERSION < 185
1168JSBool VrmlMatrixAddProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
1169JSBool VrmlMatrixGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
1170JSBool VrmlMatrixSetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp);
1171#elif JS_VERSION == 185
1172JSBool VrmlMatrixAddProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
1173JSBool VrmlMatrixGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp);
1174JSBool VrmlMatrixSetProperty(JSContext *cx, JSObject *obj, jsid id, JSBool strict, jsval *vp);
1175#else //186 aka 17
1176JSBool VrmlMatrixAddProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
1177JSBool VrmlMatrixGetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSMutableHandleValue hvp);
1178JSBool VrmlMatrixSetProperty(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
1179#endif
1180
1181JSBool _standardMFAssign(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval, JSClass *myClass, int type);
1182#if JS_VERSION < 185
1183JSBool _standardMFGetProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp, char *makeNewElement, int type);
1184#else
1185JSBool _standardMFGetProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp, char *makeNewElement, int type);
1186#endif
1187void printJSNodeType (JSContext *context, JSObject *myobj);
1188
1189extern JSClass SFColorClass;
1190extern JSPropertySpec (SFColorProperties)[];
1191extern JSFunctionSpec (SFColorFunctions)[];
1192extern JSClass SFColorRGBAClass;
1193extern JSPropertySpec (SFColorRGBAProperties)[];
1194extern JSFunctionSpec (SFColorRGBAFunctions)[];
1195extern JSClass SFImageClass;
1196extern JSPropertySpec (SFImageProperties)[];
1197extern JSFunctionSpec (SFImageFunctions)[];
1198extern JSClass SFNodeClass;
1199extern JSPropertySpec (SFNodeProperties)[];
1200extern JSFunctionSpec (SFNodeFunctions)[];
1201extern JSClass SFRotationClass;
1202extern JSPropertySpec (SFRotationProperties)[];
1203extern JSFunctionSpec (SFRotationFunctions)[];
1204extern JSClass SFVec2fClass;
1205extern JSPropertySpec (SFVec2fProperties)[];
1206extern JSFunctionSpec (SFVec2fFunctions)[];
1207extern JSClass SFVec3fClass;
1208extern JSPropertySpec (SFVec3fProperties)[];
1209extern JSFunctionSpec (SFVec3fFunctions)[];
1210extern JSClass SFVec3dClass;
1211extern JSPropertySpec (SFVec3dProperties)[];
1212extern JSFunctionSpec (SFVec3dFunctions)[];
1213
1214
1215extern JSClass SFVec4fClass;
1216extern JSPropertySpec (SFVec4fProperties)[];
1217extern JSFunctionSpec (SFVec4fFunctions)[];
1218extern JSClass SFVec4dClass;
1219extern JSPropertySpec (SFVec4dProperties)[];
1220extern JSFunctionSpec (SFVec4dFunctions)[];
1221
1222extern JSClass MFColorClass;
1223extern JSFunctionSpec (MFColorFunctions)[];
1224extern JSClass MFFloatClass;
1225extern JSFunctionSpec (MFFloatFunctions)[];
1226extern JSClass MFBoolClass;
1227extern JSFunctionSpec (MFBoolFunctions)[];
1228extern JSClass MFInt32Class;
1229extern JSFunctionSpec (MFInt32Functions)[];
1230extern JSClass MFNodeClass;
1231extern JSFunctionSpec (MFNodeFunctions)[];
1232extern JSClass MFRotationClass;
1233extern JSFunctionSpec (MFRotationFunctions)[];
1234extern JSClass MFStringClass;
1235extern JSFunctionSpec (MFStringFunctions)[];
1236extern JSClass MFTimeClass;
1237extern JSPropertySpec (MFTimeProperties)[] ;
1238extern JSFunctionSpec (MFTimeFunctions)[];
1239extern JSClass MFVec2fClass;
1240extern JSFunctionSpec (MFVec2fFunctions)[];
1241extern JSClass MFVec3fClass;
1242extern JSFunctionSpec (MFVec3fFunctions)[];
1243extern JSClass VrmlMatrixClass;
1244extern JSFunctionSpec (VrmlMatrixFunctions)[];
1245
1246#if JS_VERSION < 185
1247JSBool js_GetPropertyDebug (JSContext *context, JSObject *obj, jsval id, jsval *vp);
1248JSBool js_SetPropertyCheck (JSContext *context, JSObject *obj, jsval id, jsval *vp);
1249JSBool js_SetPropertyDebug1 (JSContext *context, JSObject *obj, jsval id, jsval *vp);
1250JSBool js_SetPropertyDebug2 (JSContext *context, JSObject *obj, jsval id, jsval *vp);
1251JSBool js_SetPropertyDebug3 (JSContext *context, JSObject *obj, jsval id, jsval *vp);
1252JSBool js_SetPropertyDebug4 (JSContext *context, JSObject *obj, jsval id, jsval *vp);
1253JSBool js_SetPropertyDebug5 (JSContext *context, JSObject *obj, jsval id, jsval *vp);
1254JSBool js_SetPropertyDebug6 (JSContext *context, JSObject *obj, jsval id, jsval *vp);
1255JSBool js_SetPropertyDebug7 (JSContext *context, JSObject *obj, jsval id, jsval *vp);
1256JSBool js_SetPropertyDebug8 (JSContext *context, JSObject *obj, jsval id, jsval *vp);
1257JSBool js_SetPropertyDebug9 (JSContext *context, JSObject *obj, jsval id, jsval *vp);
1258#elif JS_VERSION == 185
1259JSBool js_GetPropertyDebug (JSContext *context, JSObject *obj, jsid id, jsval *vp);
1260JSBool js_SetPropertyCheck (JSContext *context, JSObject *obj, jsid id, JSBool strict, jsval *vp);
1261JSBool js_SetPropertyDebug1 (JSContext *context, JSObject *obj, jsid id, JSBool strict, jsval *vp);
1262JSBool js_SetPropertyDebug2 (JSContext *context, JSObject *obj, jsid id, JSBool strict, jsval *vp);
1263JSBool js_SetPropertyDebug3 (JSContext *context, JSObject *obj, jsid id, JSBool strict, jsval *vp);
1264JSBool js_SetPropertyDebug4 (JSContext *context, JSObject *obj, jsid id, JSBool strict, jsval *vp);
1265JSBool js_SetPropertyDebug5 (JSContext *context, JSObject *obj, jsid id, JSBool strict, jsval *vp);
1266JSBool js_SetPropertyDebug6 (JSContext *context, JSObject *obj, jsid id, JSBool strict, jsval *vp);
1267JSBool js_SetPropertyDebug7 (JSContext *context, JSObject *obj, jsid id, JSBool strict, jsval *vp);
1268JSBool js_SetPropertyDebug8 (JSContext *context, JSObject *obj, jsid id, JSBool strict, jsval *vp);
1269JSBool js_SetPropertyDebug9 (JSContext *context, JSObject *obj, jsid id, JSBool strict, jsval *vp);
1270#else //186 aka 17
1271JSBool js_SetPropertyCheck(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
1272JSBool js_SetPropertyDebug5(JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
1273JSBool js_SetPropertyDebug6 (JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
1274JSBool js_SetPropertyDebug3 (JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
1275JSBool js_SetPropertyDebug8 (JSContext *cx, JSHandleObject hobj, JSHandleId hiid, JSBool strict, JSMutableHandleValue hvp);
1276
1277#endif
1278
1279#endif /* JS_VRML_CLASSES */