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