31 #if !(defined(JAVASCRIPT_STUB) || defined(JAVASCRIPT_DUK))
35 #include <libFreeWRL.h>
37 #include "../vrml_parser/Structs.h"
38 #include "../main/headers.h"
39 #include "../vrml_parser/CParseGeneral.h"
40 #include "../main/Snapshot.h"
41 #include "../scenegraph/Collision.h"
42 #include "../scenegraph/quaternion.h"
43 #include "../scenegraph/Viewer.h"
44 #include "../input/EAIHelpers.h"
45 #include "../input/SensInterps.h"
46 #include "../x3d_parser/Bindable.h"
52 #include "jsVRMLClasses.h"
61 #include "../scenegraph/ringbuf.h"
63 #define TRACK_FIFO_MSG 0
66 #define TRACK_FIFO_MSG 0
69 extern void dump_scene (FILE *fp,
int level,
struct X3D_Node* node);
70 extern char *parser_getNameFromNode(
struct X3D_Node *ptr) ;
85 JSBool reportWarnings;
88 void *jsUtils_constructor(){
89 void *v = MALLOCV(
sizeof(
struct pjsUtils));
93 void jsUtils_init(
struct tjsUtils *t){
96 t->prv = jsUtils_constructor();
99 p->insetSFStr = FALSE;
100 p->reportWarnings = JS_TRUE;
106 static JSBool setSF_in_MF (JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
108 static JSBool setSF_in_MF (JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp) {
118 #if JS_VERSION >= 185
124 if (!JS_IdToValue(cx,iid,&
id)) {
125 printf(
"setSF_in_MF: JS_IdToValue failed.\n");
133 #ifdef JSVRMLCLASSESVERBOSE
134 printf (
"setSF_in_MF: already caught this value; this is our JS_SetElement call\n");
140 p->insetSFStr = TRUE;
142 if (JSVAL_IS_INT(
id)) {
143 if (!JS_ValueToInt32(cx,
id,&num)) {
144 printf (
"setSF_in_MF: error converting to number...\n");
148 if (!JS_GetElement(cx, obj, num, &ele)) {
149 printf (
"error getting child %d in setSF_in_MF\n",num);
154 if (!JS_SetElement(cx,obj,num,vp)) {
155 printf (
"can not set element %d in MFString\n",num);
159 printf (
"expect an integer id in setSF_in_MF\n");
166 par = JS_GetParent(cx, me);
167 while (par != NULL) {
168 #ifdef JSVRMLCLASSESVERBOSE
169 printf (
"for obj %u: ",me);
170 printJSNodeType(cx,me);
171 printf (
"... parent %u\n",par);
172 printJSNodeType(cx,par);
175 if (JS_InstanceOf (cx, par, &SFNodeClass, NULL)) {
176 #ifdef JSVRMLCLASSESVERBOSE
177 printf (
" the parent IS AN SFNODE - it is %u\n",par);
181 if (!JS_GetProperty(cx, obj,
"_parentField", &pf)) {
182 printf (
"doMFSetProperty, can not get parent field from this object\n");
186 nf = OBJECT_TO_JSVAL(me);
188 #ifdef JSVRMLCLASSESVERBOSE
190 printf (
"parentField is %u \"%s\"\n", pf, JS_GetStringBytes(JSVAL_TO_STRING(pf)));
192 tmp=JS_EncodeString(cx,JSVAL_TO_STRING(pf));
193 printf (
"parentField is %u \"%s\"\n", pf, tmp);
198 if (!JS_ValueToId(cx,pf,&oid)) {
199 printf(
"setSF_in_MF: JS_ValueToId failed.\n");
203 if (!setSFNodeField (cx, par, oid,
204 #
if JS_VERSION >= 185
208 printf (
"could not set field of SFNode\n");
213 par = JS_GetParent(cx, me);
215 p->insetSFStr = FALSE;
221 static void JS_ECMA_TO_X3D(JSContext *cx,
void *Data,
unsigned datalen,
int dataType, jsval *newval) {
226 #ifdef JSVRMLCLASSESVERBOSE
227 printf (
"calling JS_ECMA_TO_X3D on type %s\n",FIELDTYPES[dataType]);
232 case FIELDTYPE_SFFloat: {
233 if (!JS_ValueToNumber(cx,*newval,&dl)) {
234 printf (
"problems converting Javascript val to number\n");
238 memcpy (Data, (
void *) &fl, datalen);
241 case FIELDTYPE_SFDouble:
242 case FIELDTYPE_SFTime: {
243 if (!JS_ValueToNumber(cx,*newval,&dl)) {
244 printf (
"problems converting Javascript val to number\n");
247 memcpy (Data, (
void *) &dl, datalen);
250 case FIELDTYPE_SFBool: {
251 il = JSVAL_TO_BOOLEAN (*newval);
252 memcpy (Data, (
void *) &il, datalen);
256 case FIELDTYPE_SFInt32: {
257 il = JSVAL_TO_INT (*newval);
258 memcpy (Data, (
void *) &il, datalen);
262 case FIELDTYPE_SFString: {
267 _idStr = JS_ValueToString(cx, *newval);
269 _id_c = JS_GetStringBytes(_idStr);
271 _id_c = JS_EncodeString(cx,_idStr);
274 oldS = (
struct Uni_String *) *((intptr_t *)Data);
276 #ifdef JSVRMLCLASSESVERBOSE
277 printf (
"JS_ECMA_TO_X3D, replacing \"%s\" with \"%s\" \n", oldS->strptr, _id_c);
281 verify_Uni_String (oldS,_id_c);
282 #if JS_VERSION >= 185
287 default: { printf(
"WARNING: SHOULD NOT BE HERE in JS_ECMA_TO_X3D! %d\n",dataType); }
293 static void JS_SF_TO_X3D(JSContext *cx,
void *Data,
unsigned datalen,
int dataType, jsval *newval) {
303 #ifdef JSVRMLCLASSESVERBOSE
304 printf (
"calling JS_SF_TO_X3D on type %s\n",FIELDTYPES[dataType]);
308 if ((VPtr = JS_GetPrivate(cx, JSVAL_TO_OBJECT(*newval))) == NULL) {
309 printf(
"JS_GetPrivate failed in JS_SF_TO_X3D.\n");
315 case FIELDTYPE_SFColor:
317 memcpy (Data, (
void *)((Cptr->v).c), datalen);
319 case FIELDTYPE_SFVec3d:
321 memcpy (Data, (
void *)((V3dptr->v).c), datalen);
323 case FIELDTYPE_SFVec3f:
325 memcpy (Data, (
void *)((V3ptr->v).c), datalen);
327 case FIELDTYPE_SFVec2f:
329 memcpy (Data, (
void *)((V2ptr->v).c), datalen);
331 case FIELDTYPE_SFRotation:
333 memcpy (Data,(
void *)((VRptr->v).c), datalen);
335 case FIELDTYPE_SFNode:
337 memcpy (Data, (
void *)(VNptr->handle), datalen);
340 default: { printf(
"WARNING: SHOULD NOT BE HERE! %d\n",dataType); }
344 void getJSMultiNumType(JSContext *,
struct Multi_Vec3f *,
int);
347 static void JS_MF_TO_X3D(JSContext *cx, JSObject * obj,
void *Data,
int dataType, jsval *newval) {
349 #ifdef JSVRMLCLASSESVERBOSE
350 printf (
"calling JS_MF_TO_X3D on type %s\n",FIELDTYPES[dataType]);
351 printf (
"JS_MF_TO_X3D, we have object %u, newval %u\n",obj,*newval);
352 printf (
"JS_MF_TO_X3D, obj is an:\n");
353 if (JSVAL_IS_OBJECT(OBJECT_TO_JSVAL(obj))) { printf (
"JS_MF_TO_X3D - obj is an OBJECT\n"); }
354 if (JSVAL_IS_PRIMITIVE(OBJECT_TO_JSVAL(obj))) { printf (
"JS_MF_TO_X3D - obj is an PRIMITIVE\n"); }
355 printf (
"JS_MF_TO_X3D, obj is a "); printJSNodeType(cx,obj);
356 printf (
"JS_MF_TO_X3D, vp is an:\n");
357 if (JSVAL_IS_OBJECT(*newval)) { printf (
"JS_MF_TO_X3D - vp is an OBJECT\n"); }
358 if (JSVAL_IS_PRIMITIVE(*newval)) { printf (
"JS_MF_TO_X3D - vp is an PRIMITIVE\n"); }
359 printf (
"JS_MF_TO_X3D, vp is a "); printJSNodeType(cx,JSVAL_TO_OBJECT(*newval));
362 *(jsval *)tg->JScript.JSglobal_return_val = *newval;
363 getJSMultiNumType (cx, (
struct Multi_Vec3f*) Data, convertToSFType(dataType));
371 void X3D_ECMA_TO_JS(JSContext *cx,
void *Data,
int datalen,
int dataType, jsval *newval) {
378 #ifdef JSVRMLCLASSESVERBOSE
379 printf (
"calling X3D_ECMA_TO_JS on type %s\n",FIELDTYPES[dataType]);
384 case FIELDTYPE_SFFloat: {
385 memcpy ((
void *) &fl, Data, datalen);
386 JS_NewNumberValue(cx,(
double)fl,newval);
389 case FIELDTYPE_SFDouble:
390 case FIELDTYPE_SFTime: {
391 memcpy ((
void *) &dl, Data, datalen);
392 JS_NewNumberValue(cx,dl,newval);
395 case FIELDTYPE_SFBool:
396 case FIELDTYPE_SFInt32: {
397 memcpy ((
void *) &il,Data, datalen);
398 *newval = INT_TO_JSVAL(il);
402 case FIELDTYPE_SFString: {
408 memcpy((
void *) &ms,Data,
sizeof(
void *));
409 *newval = STRING_TO_JSVAL(JS_NewStringCopyZ(cx,ms->strptr));
412 default: { printf(
"WARNING: SHOULD NOT BE HERE in X3D_ECMA_TO_JS! %d\n",dataType); }
418 static void X3D_SF_TO_JS(JSContext *cx, JSObject *obj,
void *Data,
unsigned datalen,
int dataType, jsval *newval) {
432 #ifdef JSVRMLCLASSESVERBOSE
433 printf (
"calling X3D_SF_TO_JS on type %s, newval %u\n",FIELDTYPES[dataType],*newval);
436 if (!JSVAL_IS_OBJECT(*newval)) {
439 case FIELDTYPE_SFVec3f: script =
"new SFVec3f()";
break;
440 case FIELDTYPE_SFVec3d: script =
"new SFVec3d()";
break;
441 case FIELDTYPE_SFColor: script =
"new SFColor()";
break;
442 case FIELDTYPE_SFNode: script =
"new SFNode()";
break;
443 case FIELDTYPE_SFVec2f: script =
"new SFVec2f()";
break;
444 case FIELDTYPE_SFRotation: script =
"new SFRotation()";
break;
445 default: printf (
"invalid type in X3D_SF_TO_JS\n");
return;
451 #ifdef JSVRMLCLASSESVERBOSE
452 printf (
"X3D_SF_TO_JS, have to run script to make new object: \"%s\"\n",script);
455 if (!JS_EvaluateScript(cx, obj, script, (
int) strlen(script), FNAME_STUB, LINENO_STUB, &rval)) {
456 printf (
"error creating the new object in X3D_SF_TO_JS, script :%s:\n",script);
463 #ifdef JSVRMLCLASSESVERBOSE
464 printf (
"X3D_SF_TO_JS, so, newval now is %u\n",*newval);
469 if ((VPtr = JS_GetPrivate(cx, JSVAL_TO_OBJECT(*newval))) == NULL) {
470 printf(
"JS_GetPrivate failed in X3D_SF_TO_JS.\n");
477 case FIELDTYPE_SFColor:
479 memcpy ((
void *)((Cptr->v).c), Data, datalen);
480 Cptr->valueChanged = 1;
482 case FIELDTYPE_SFVec3f:
484 memcpy ((
void *)((V3ptr->v).c), Data, datalen);
485 V3ptr->valueChanged = 1;
487 case FIELDTYPE_SFVec3d:
489 memcpy ((
void *)((V3dptr->v).c), Data, datalen);
490 V3dptr->valueChanged = 1;
492 case FIELDTYPE_SFVec2f:
494 memcpy ((
void *)((V2ptr->v).c), Data, datalen);
495 V2ptr->valueChanged = 1;
497 case FIELDTYPE_SFRotation:
499 memcpy ((
void *)((VRptr->v).c), Data, datalen);
500 VRptr->valueChanged = 1;
502 case FIELDTYPE_SFNode:
504 memcpy ((
void *)(&(VNptr->handle)), Data, datalen);
505 VNptr->valueChanged = 1;
508 default: { printf(
"WARNING: SHOULD NOT BE HERE! %d\n",dataType); }
513 static void X3D_MF_TO_JS(JSContext *cx, JSObject *obj,
void *Data,
int dataType, jsval *newval,
char *fieldName) {
520 jsval fieldNameAsJSVAL;
526 #ifdef JSVRMLCLASSESVERBOSE
527 printf (
"calling X3D_MF_TO_JS on type %s\n",FIELDTYPES[dataType]);
528 printf (
"X3D_MF_TO_JS, we have object %u, newval %u\n",obj,*newval);
529 printf (
"X3D_MF_TO_JS, obj is an:\n");
530 if (JSVAL_IS_OBJECT(OBJECT_TO_JSVAL(obj))) { printf (
"X3D_MF_TO_JS - obj is an OBJECT\n");
531 printf (
"X3D_MF_TO_JS, obj is a "); printJSNodeType(cx,obj);
533 if (JSVAL_IS_PRIMITIVE(OBJECT_TO_JSVAL(obj))) { printf (
"X3D_MF_TO_JS - obj is an PRIMITIVE\n"); }
534 printf (
"X3D_MF_TO_JS, vp is an:\n");
535 if (JSVAL_IS_OBJECT(*newval)) { printf (
"X3D_MF_TO_JS - newval is an OBJECT\n");
536 printf (
"X3D_MF_TO_JS, newval is a "); printJSNodeType(cx,JSVAL_TO_OBJECT(*newval));
538 if (JSVAL_IS_PRIMITIVE(*newval)) { printf (
"X3D_MF_TO_JS - newval is an PRIMITIVE\n"); }
542 #ifdef JSVRMLCLASSESVERBOSE
543 printf (
"X3D_MF_TO_JS - is this already expanded? \n");
548 if ((VNptr = JS_GetPrivate(cx, obj)) == NULL) {
549 printf(
"JS_GetPrivate failed in X3D_MF_TO_JS.\n");
552 if (VNptr->fieldsExpanded) printf (
"FIELDS EXPANDED\n");
553 else printf (
"FIELDS NOT EXPANDED\n");
558 if (!JSVAL_IS_OBJECT(*newval)) {
559 #ifdef JSVRMLCLASSESVERBOSE
560 printf (
"X3D_MF_TO_JS - have to create empty MF type \n");
565 case FIELDTYPE_MFString: script =
"new MFString()";
break;
566 case FIELDTYPE_MFFloat: script =
"new MFFloat()";
break;
567 case FIELDTYPE_MFTime: script =
"new MFTime()";
break;
568 case FIELDTYPE_MFInt32: script =
"new MFInt32()";
break;
569 case FIELDTYPE_SFImage: script =
"new SFImage()";
break;
570 case FIELDTYPE_MFVec3f: script =
"new MFVec3f()";
break;
571 case FIELDTYPE_MFColor: script =
"new MFColor()";
break;
572 case FIELDTYPE_MFNode: script =
"new MFNode()";
break;
573 case FIELDTYPE_MFVec2f: script =
"new MFVec2f()";
break;
574 case FIELDTYPE_MFRotation: script =
"new MFRotation()";
break;
575 default: printf (
"invalid type in X3D_MF_TO_JS\n");
return;
578 if (!JS_EvaluateScript(cx, obj, script, (
int) strlen(script), FNAME_STUB, LINENO_STUB, &rval)) {
579 printf (
"error creating the new object in X3D_MF_TO_JS\n");
587 #ifdef JSVRMLCLASSESVERBOSE
588 printf (
"setting parent for %u to %u\n", *newval, obj);
596 if (!JS_SetParent (cx, JSVAL_TO_OBJECT(*newval), obj)) {
597 printf (
"X3D_MF_TO_JS - can not set parent!\n");
600 #ifdef JSVRMLCLASSESVERBOSE
601 printf (
"telling %u that it is a child \"%s\" of parent %u\n",*newval, fieldName, obj);
604 fieldNameAsJSVAL = STRING_TO_JSVAL(JS_NewStringCopyZ(cx,fieldName));
606 if (!JS_DefineProperty(cx, JSVAL_TO_OBJECT(*newval),
"_parentField", fieldNameAsJSVAL,
607 JS_GET_PROPERTY_STUB, JS_SET_PROPERTY_STUB5, JSPROP_READONLY)) {
608 printf(
"JS_DefineProperty failed for \"%s\" in X3D_MF_TO_JS.\n", fieldName);
613 #ifdef JSVRMLCLASSESVERBOSE
614 printf (
"X3D_MF_TO_JS - object is %u, copying over data\n",*newval);
620 case FIELDTYPE_MFInt32:
622 for (i=0; i<MIptr->n; i++) {
623 if (!JS_DefineElement(cx, JSVAL_TO_OBJECT(*newval), (jsint) i, INT_TO_JSVAL(MIptr->p[i]),
624 JS_GET_PROPERTY_STUB, setSF_in_MF, JSPROP_ENUMERATE)) {
625 printf(
"JS_DefineElement failed for arg %u in MFInt32Constr.\n", i);
630 case FIELDTYPE_MFFloat:
632 for (i=0; i<MFptr->n; i++) {
633 if (!JS_DefineElement(cx, JSVAL_TO_OBJECT(*newval), (jsint) i, INT_TO_JSVAL(MFptr->p[i]),
634 JS_GET_PROPERTY_STUB, setSF_in_MF, JSPROP_ENUMERATE)) {
635 printf(
"JS_DefineElement failed for arg %u in MFFloatConstr.\n", i);
640 case FIELDTYPE_MFTime:
642 for (i=0; i<MTptr->n; i++) {
643 if (!JS_DefineElement(cx, JSVAL_TO_OBJECT(*newval), (jsint) i, INT_TO_JSVAL(MTptr->p[i]),
644 JS_GET_PROPERTY_STUB, setSF_in_MF, JSPROP_ENUMERATE)) {
645 printf(
"JS_DefineElement failed for arg %u in MFTimeConstr.\n", i);
650 case FIELDTYPE_MFColor:
651 case FIELDTYPE_MFVec3f: {
657 for (i=0; i<MCptr->n; i++) {
658 if (dataType == FIELDTYPE_MFColor)
659 sprintf (newline,
"new SFColor(%f, %f, %f)", MCptr->p[i].c[0], MCptr->p[i].c[1], MCptr->p[i].c[2]);
661 sprintf (newline,
"new SFColor(%f, %f, %f)", MCptr->p[i].c[0], MCptr->p[i].c[1], MCptr->p[i].c[2]);
662 if (!JS_EvaluateScript(cx, JSVAL_TO_OBJECT(*newval), newline, (
int) strlen(newline), FNAME_STUB, LINENO_STUB, &xf)) {
663 printf (
"error creating the new object in X3D_MF_TO_JS string :%s:\n",newline);
666 if (!JS_DefineElement(cx, JSVAL_TO_OBJECT(*newval), (jsint) i, xf,
667 JS_GET_PROPERTY_STUB, setSF_in_MF, JSPROP_ENUMERATE)) {
668 printf(
"JS_DefineElement failed for arg %u .\n", i);
674 case FIELDTYPE_MFVec2f: {
680 for (i=0; i<MCptr->n; i++) {
681 sprintf (newline,
"new SFVec2f(%f, %f)", MCptr->p[i].c[0], MCptr->p[i].c[1]);
682 if (!JS_EvaluateScript(cx, JSVAL_TO_OBJECT(*newval), newline, (
int) strlen(newline), FNAME_STUB, LINENO_STUB, &xf)) {
683 printf (
"error creating the new object in X3D_MF_TO_JS string :%s:\n",newline);
686 if (!JS_DefineElement(cx, JSVAL_TO_OBJECT(*newval), (jsint) i, xf,
687 JS_GET_PROPERTY_STUB, setSF_in_MF, JSPROP_ENUMERATE)) {
688 printf(
"JS_DefineElement failed for arg %u .\n", i);
693 case FIELDTYPE_MFRotation: {
699 for (i=0; i<MCptr->n; i++) {
700 sprintf (newline,
"new SFRotation(%f, %f, %f, %f)", MCptr->p[i].c[0], MCptr->p[i].c[1], MCptr->p[i].c[2], MCptr->p[i].c[3]);
701 if (!JS_EvaluateScript(cx, JSVAL_TO_OBJECT(*newval), newline, (
int) strlen(newline), FNAME_STUB, LINENO_STUB, &xf)) {
702 printf (
"error creating the new object in X3D_MF_TO_JS string :%s:\n",newline);
705 if (!JS_DefineElement(cx, JSVAL_TO_OBJECT(*newval), (jsint) i, xf,
706 JS_GET_PROPERTY_STUB, setSF_in_MF, JSPROP_ENUMERATE)) {
707 printf(
"JS_DefineElement failed for arg %u .\n", i);
713 case FIELDTYPE_MFNode: {
720 for (i=0; i<MCptr->n; i++) {
722 if (MCptr->p[i] != NULL) {
723 sprintf (newline,
"new SFNode(\"%p\")", MCptr->p[i]);
725 if (!JS_EvaluateScript(cx, JSVAL_TO_OBJECT(*newval), newline, (
int) strlen(newline), FNAME_STUB, LINENO_STUB, &xf)) {
726 printf (
"error creating the new object in X3D_MF_TO_JS string :%s:\n",newline);
729 if (!JS_DefineElement(cx, JSVAL_TO_OBJECT(*newval), (jsint) i, xf,
730 JS_GET_PROPERTY_STUB, setSF_in_MF, JSPROP_ENUMERATE)) {
731 printf(
"JS_DefineElement failed for arg %u .\n", i);
741 case FIELDTYPE_MFString: {
747 for (i=0; i<MCptr->n; i++) {
748 #ifdef JSVRMLCLASSESVERBOSE
749 printf (
"X3D_MF_TO_JS, working on %d of %d, p %u\n",i, MCptr->n, MCptr->p[i]);
752 if (((
struct Uni_String *)MCptr->p[i])->strptr != NULL)
753 sprintf (newline,
"new String('%s')", ((
struct Uni_String *)MCptr->p[i])->strptr);
754 else sprintf (newline,
"new String('(NULL)')");
756 #ifdef JSVRMLCLASSESVERBOSE
757 printf (
"X3D_MF_TO_JS, we have a new script to evaluate: \"%s\"\n",newline);
760 if (!JS_EvaluateScript(cx, JSVAL_TO_OBJECT(*newval), newline, (
int) strlen(newline), FNAME_STUB, LINENO_STUB, &xf)) {
761 printf (
"error creating the new object in X3D_MF_TO_JS string :%s:\n",newline);
764 if (!JS_DefineElement(cx, JSVAL_TO_OBJECT(*newval), (jsint) i, xf,
765 JS_GET_PROPERTY_STUB, setSF_in_MF, JSPROP_ENUMERATE)) {
766 printf(
"JS_DefineElement failed for arg %u .\n", i);
772 case FIELDTYPE_SFImage: {
779 sprintf (newline,
"new SFImage(");
781 for (i=0; i<MCptr->n; i++) {
783 sprintf (sl,
"0x%x ", MCptr->p[i]);
786 if (i != ((MCptr->n)-1)) strcat (newline,
",");
787 if (i == 2) strcat (newline,
" new MFInt32(");
790 strcat (newline,
"))");
792 if (!JS_EvaluateScript(cx, JSVAL_TO_OBJECT(*newval), newline, (
int) strlen(newline), FNAME_STUB, LINENO_STUB, &xf)) {
793 printf (
"error creating the new object in X3D_MF_TO_JS string :%s:\n",newline);
798 default: { printf(
"WARNING: SHOULD NOT BE HERE! %d\n",dataType); }
801 #ifdef JSVRMLCLASSESVERBOSE
802 printf (
"returning from X3D_MF_TO_JS\n");
809 p->reportWarnings = JS_TRUE;
814 reportWarningsOff() {
816 p->reportWarnings = JS_FALSE;
821 errorReporter(JSContext *context,
const char *message, JSErrorReport *report)
823 char *errorReport = 0;
824 int len = 0, charPtrSize = (int)
sizeof(
char *);
830 fprintf(stderr,
"%s\n", message);
835 if (JSREPORT_IS_WARNING(report->flags) && !p->reportWarnings) {
839 if (report->filename == NULL) {
840 len = (int) (strlen(message) + 1);
842 len = (int) ((strlen(report->filename) + 1) + (strlen(message) + 1));
845 errorReport = (
char *) JS_malloc(context, (len + STRING) * charPtrSize);
851 if (JSREPORT_IS_WARNING(report->flags)) {
853 "%swarning in %s at line %u:\n\t%s\n",
854 JSREPORT_IS_STRICT(report->flags) ?
"strict " :
"",
855 report->filename ? report->filename :
"",
856 report->lineno ? report->lineno : 0,
857 message ? message :
"No message.");
860 "error in %s at line %u:\n\t%s\n",
861 report->filename ? report->filename :
"",
862 report->lineno ? report->lineno : 0,
863 message ? message :
"No message.");
866 fprintf(stderr,
"Javascript -- %s", errorReport);
868 JS_free(context, errorReport);
873 static int *getFOP (
struct X3D_Node *node,
const char *str) {
874 int *fieldOffsetsPtr;
878 #ifdef JSVRMLCLASSESVERBOSE
879 printf (
"...getFOP... it is a %s\n",stringNodeType(node->_nodeType));
882 fieldOffsetsPtr = (
int *) NODE_OFFSETS[node->_nodeType];
888 while (*fieldOffsetsPtr != -1) {
889 #ifdef JSVRMLCLASSESVERBOSE
890 printf (
"getFOP, looking at field %s type %s to match %s\n",FIELDNAMES[*fieldOffsetsPtr],FIELDTYPES[*(fieldOffsetsPtr+2)],str);
895 if (strcmp(str,FIELDNAMES[*fieldOffsetsPtr]) == 0) {
896 #ifdef JSVRMLCLASSESVERBOSE
897 printf (
"getFOP, found entry for %s, it is %u (%p)\n",str,fieldOffsetsPtr,fieldOffsetsPtr);
899 return fieldOffsetsPtr;
901 fieldOffsetsPtr += 5;
906 printf (
"getFOP, could not find field \"%s\" in nodeType \"%s\"\n", str, stringNodeType(node->_nodeType));
909 printf (
"getFOP, passed in X3D node was NULL!\n");
916 static JSBool getSFNodeField (JSContext *context, JSObject *obj, jsid
id, jsval *vp) {
920 int *fieldOffsetsPtr;
932 _id_c = JS_GetStringBytes(JSVAL_TO_STRING(
id));
934 _id_c = JS_EncodeString(context,JSID_TO_STRING(
id));
938 #ifdef JSVRMLCLASSESVERBOSE
939 printf (
"\ngetSFNodeField called on name %s object %u\n",_id_c, obj);
942 if ((ptr = (
SFNodeNative *)JS_GetPrivate(context, obj)) == NULL) {
943 printf(
"JS_GetPrivate failed in getSFNodeField.\n");
944 #if JS_VERSION >= 185
945 JS_free(context,_id_c);
949 node = X3D_NODE(ptr->handle);
951 #ifdef JSVRMLCLASSESVERBOSE
952 printf (
"getSFNodeField, got node %u for field %s object %u\n",node,_id_c, obj);
953 printf (
"getSFNodeField, got node %p for field %s object %p\n",node,_id_c, obj);
957 printf (
"getSFNodeField, can not set field \"%s\", NODE is NULL!\n",_id_c);
958 #if JS_VERSION >= 185
959 JS_free(context,_id_c);
965 fieldOffsetsPtr = getFOP(ptr->handle,
"FIFOsize");
966 if (fieldOffsetsPtr == NULL) {
968 printf(
"getSFNodeField : This is not a ringBuffer type\n");
973 char *_id_buffer_c = NULL ;
981 printf(
"getSFNodeField : This could be a ringBuffer type (found FIFOsize)\n");
984 if (0 == strcmp(_id_c,
"int32Inp")) {
986 printf(
"getSFNodeField %d : ptr->handle=%p (which corresponds to realnode in scenegraph/Component_Networking.c,314) node=%p see X3D_NODE(ptr->handle)\n",__LINE__,ptr->handle , node);
989 buffer = (
RingBuffer *) OSCnode->_int32InpFIFO ;
991 printf(
"getSFNodeField %d : buffer=%p\n",__LINE__,buffer) ;
994 if (!RingBuffer_testEmpty(buffer)) {
995 _id_buffer_c =
"_int32InpFIFO" ;
996 iVal = RingBuffer_pullUnion(buffer)->i ;
998 printf(
"getSFNodeField %d : iVal=%d\n",__LINE__,iVal);
1001 *vp = INT_TO_JSVAL(iVal) ;
1005 printf(
"but the buffer is empty\n") ;
1008 }
else if (0 == strcmp(_id_c,
"floatInp")) {
1010 printf(
"getSFNodeField %d : ptr->handle=%p (which corresponds to realnode in scenegraph/Component_Networking.c,314) node=%p see X3D_NODE(ptr->handle)\n",__LINE__,ptr->handle , node);
1012 buffer = (
RingBuffer *) OSCnode->_floatInpFIFO ;
1014 printf(
"getSFNodeField %d : buffer=%p\n",__LINE__,buffer) ;
1017 if (!RingBuffer_testEmpty(buffer)) {
1018 _id_buffer_c =
"_floatInpFIFO" ;
1019 fVal = RingBuffer_pullUnion(buffer)->f ;
1021 printf(
"getSFNodeField %d : fVal=%d\n",__LINE__,fVal);
1024 JS_NewNumberValue(context,(
double)fVal,vp);
1028 printf(
"but the buffer is empty\n") ;
1031 }
else if (0 == strcmp(_id_c,
"stringInp")) {
1033 printf(
"getSFNodeField %d : ptr->handle=%p (which corresponds to realnode in scenegraph/Component_Networking.c,314) node=%p see X3D_NODE(ptr->handle)\n",__LINE__,ptr->handle , node);
1035 buffer = (
RingBuffer *) OSCnode->_stringInpFIFO ;
1037 printf(
"getSFNodeField %d : buffer=%p\n",__LINE__,buffer) ;
1040 if (!RingBuffer_testEmpty(buffer)) {
1041 _id_buffer_c =
"_stringInpFIFO" ;
1042 strPtr = (
char *) RingBuffer_pullUnion(buffer)->p ;
1044 printf(
"getSFNodeField %d : strPtr=%s\n",__LINE__,strPtr);
1047 *vp = STRING_TO_JSVAL(JS_NewStringCopyZ(context,strPtr));
1051 printf(
"but the buffer is empty\n") ;
1056 printf(
"but this variable itself (%s) is not a ring buffer item\n",_id_c) ;
1063 fieldOffsetsPtr = getFOP(ptr->handle,_id_c);
1064 if (fieldOffsetsPtr == NULL) {
1065 #if JS_VERSION >= 185
1066 JS_free(context,_id_c);
1070 #ifdef JSVRMLCLASSESVERBOSE
1071 printf (
"ptr=%p _id_c=%s node=%p node->_nodeType=%d stringNodeType=%s\n",ptr,_id_c,node,node->_nodeType,stringNodeType(node->_nodeType)) ;
1072 printf (
"getSFNodeField, fieldOffsetsPtr is %d for node %u, field %s\n",fieldOffsetsPtr, ptr->handle, _id_c);
1074 #if JS_VERSION >= 185
1075 JS_free(context,_id_c);
1085 switch (*(fieldOffsetsPtr+2)) {
1086 case FIELDTYPE_SFBool:
1087 case FIELDTYPE_SFFloat:
1088 case FIELDTYPE_SFTime:
1089 case FIELDTYPE_SFDouble:
1090 case FIELDTYPE_SFInt32:
1091 case FIELDTYPE_SFString:
1092 X3D_ECMA_TO_JS(context, offsetPointer_deref (
void *, node, *(fieldOffsetsPtr+1)),
1093 returnElementLength(*(fieldOffsetsPtr+2)), *(fieldOffsetsPtr+2), vp);
1095 case FIELDTYPE_SFColor:
1096 case FIELDTYPE_SFNode:
1097 case FIELDTYPE_SFVec2f:
1098 case FIELDTYPE_SFVec3f:
1099 case FIELDTYPE_SFVec3d:
1100 case FIELDTYPE_SFRotation:
1101 X3D_SF_TO_JS(context, obj, offsetPointer_deref (
void *, node, *(fieldOffsetsPtr+1)),
1102 returnElementLength(*(fieldOffsetsPtr+2)) * returnElementRowSize(*(fieldOffsetsPtr+2)) , *(fieldOffsetsPtr+2), vp);
1104 case FIELDTYPE_MFColor:
1105 case FIELDTYPE_MFVec3f:
1106 case FIELDTYPE_MFVec2f:
1107 case FIELDTYPE_MFFloat:
1108 case FIELDTYPE_MFTime:
1109 case FIELDTYPE_MFInt32:
1110 case FIELDTYPE_MFString:
1111 case FIELDTYPE_MFNode:
1112 case FIELDTYPE_MFRotation:
1113 case FIELDTYPE_SFImage:
1114 X3D_MF_TO_JS(context, obj, offsetPointer_deref (
void *, node, *(fieldOffsetsPtr+1)), *(fieldOffsetsPtr+2), vp,
1115 (
char *)FIELDNAMES[*(fieldOffsetsPtr+0)]);
1117 default: printf (
"unhandled type FIELDTYPE_ %d in getSFNodeField\n", *(fieldOffsetsPtr+2)) ;
1121 #ifdef JSVRMLCLASSESVERBOSE
1122 printf (
"end of getSFNodeField\n");
1129 #if JS_VERSION < 185
1130 JSBool setSFNodeField (JSContext *context, JSObject *obj, jsid
id, jsval *vp) {
1132 JSBool setSFNodeField (JSContext *context, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
1136 int *fieldOffsetsPtr;
1141 #if JS_VERSION < 185
1142 _id_c = JS_GetStringBytes(JSVAL_TO_STRING(
id));
1144 _id_c = JS_EncodeString(context,JSID_TO_STRING(
id));
1147 #ifdef JSVRMLCLASSESVERBOSE
1148 printf (
"\nsetSFNodeField called on name %s object %u, jsval %u\n",_id_c, obj, *vp);
1152 if ((ptr = (
SFNodeNative *)JS_GetPrivate(context, obj)) == NULL) {
1153 printf(
"JS_GetPrivate failed in setSFNodeField.\n");
1154 #if JS_VERSION >= 185
1155 JS_free(context,_id_c);
1161 node = (
struct X3D_Node *) ptr->handle;
1164 printf (
"setSFNodeField, can not set field \"%s\", NODE is NULL!\n",_id_c);
1165 #if JS_VERSION >= 185
1166 JS_free(context,_id_c);
1171 #ifdef JSVRMLCLASSESVERBOSE
1172 printf (
"so then, we have a node of type %s\n",stringNodeType(node->_nodeType));
1176 #ifdef JSVRMLCLASSESVERBOSE
1178 fieldOffsetsPtr = getFOP(ptr->handle,
"FIFOsize");
1180 if (fieldOffsetsPtr == NULL) {
1181 printf(
"setSFNodeField : This is not a ringBuffer type\n");
1183 printf(
"setSFNodeField : This is a ringBuffer type\n");
1190 fieldOffsetsPtr = getFOP(ptr->handle,_id_c);
1191 #if JS_VERSION >= 185
1192 JS_free(context,_id_c);
1194 if (fieldOffsetsPtr == NULL) {
1203 #ifdef JSVRMLCLASSESVERBOSE
1204 printf (
"and a field type of %s\n",FIELDTYPES[*(fieldOffsetsPtr+2)]);
1207 switch (*(fieldOffsetsPtr+2)) {
1208 case FIELDTYPE_SFBool:
1209 case FIELDTYPE_SFFloat:
1210 case FIELDTYPE_SFTime:
1211 case FIELDTYPE_SFDouble:
1212 case FIELDTYPE_SFInt32:
1213 case FIELDTYPE_SFString:
1214 JS_ECMA_TO_X3D(context, ((
void *)( ((
unsigned char *) node) + *(fieldOffsetsPtr+1))),
1215 returnElementLength(*(fieldOffsetsPtr+2)), *(fieldOffsetsPtr+2), vp);
1217 case FIELDTYPE_SFColor:
1218 case FIELDTYPE_SFNode:
1219 case FIELDTYPE_SFVec2f:
1220 case FIELDTYPE_SFVec3f:
1221 case FIELDTYPE_SFVec3d:
1222 case FIELDTYPE_SFRotation:
1223 JS_SF_TO_X3D(context, ((
void *)( ((
unsigned char *) node) + *(fieldOffsetsPtr+1))),
1224 returnElementLength(*(fieldOffsetsPtr+2)) * returnElementRowSize(*(fieldOffsetsPtr+2)) , *(fieldOffsetsPtr+2), vp);
1226 case FIELDTYPE_MFColor:
1227 case FIELDTYPE_MFVec3f:
1228 case FIELDTYPE_MFVec2f:
1229 case FIELDTYPE_MFFloat:
1230 case FIELDTYPE_MFTime:
1231 case FIELDTYPE_MFInt32:
1232 case FIELDTYPE_MFString:
1233 case FIELDTYPE_MFNode:
1234 case FIELDTYPE_MFRotation:
1235 case FIELDTYPE_SFImage:
1236 JS_MF_TO_X3D(context, obj, ((
void *)( ((
unsigned char *) node) + *(fieldOffsetsPtr+1))), *(fieldOffsetsPtr+2), vp);
1238 default: printf (
"unhandled type in setSFNodeField\n");
1245 #ifdef JSVRMLCLASSESVERBOSE
1246 printf (
"end of setSFNodeField\n");
1254 int JS_DefineSFNodeSpecificProperties (JSContext *context, JSObject *
object,
struct X3D_Node * ptr) {
1255 int *fieldOffsetsPtr;
1256 jsval rval = INT_TO_JSVAL(0);
1257 uintN attrs = JSPROP_PERMANENT
1259 #ifdef JSPROP_EXPORTED
1266 #ifdef JSVRMLCLASSESVERBOSE
1274 #ifdef JSVRMLCLASSESVERBOSE
1275 nodeName = parser_getNameFromNode(ptr) ;
1276 if (nodeName == NULL) {
1277 printf (
"\nStart of JS_DefineSFNodeSpecificProperties for '---' ... working on node %u object %u (%p,%p)\n",ptr,
object,ptr,
object);
1279 printf (
"\nStart of JS_DefineSFNodeSpecificProperties for '%s' ... working on node %u object %u (%p,%p)\n",nodeName,ptr,
object,ptr,
object);
1280 confirmNode = parser_getNodeFromName(nodeName);
1281 if (confirmNode == NULL) {
1282 printf(
"RoundTrip failed : ptr (%p) -> nodeName (%s) -----\n",ptr,nodeName) ;
1284 printf(
"RoundTrip OK : ptr (%p) -> nodeName (%s) -> confirmNode (%p)\n",ptr,nodeName,confirmNode) ;
1290 #ifdef JSVRMLCLASSESVERBOSE
1291 printf (
"...JS_DefineSFNodeSpecificProperties... it is a %s\n",stringNodeType(ptr->_nodeType));
1295 if ((nodeNative = (
SFNodeNative *)JS_GetPrivate(context,
object)) == NULL) {
1296 printf (
"JS_DefineSFNodeSpecificProperties, can not get private for a SFNode!\n");
1299 if (nodeNative->fieldsExpanded) {
1300 #ifdef JSVRMLCLASSESVERBOSE
1301 printf (
"JS_DefineSFNodeSpecificProperties, already done for node\n");
1307 fieldOffsetsPtr = (
int *) NODE_OFFSETS[ptr->_nodeType];
1313 while (*fieldOffsetsPtr != -1) {
1315 #ifdef JSVRMLCLASSESVERBOSE
1316 printf (
"looking at field %s type %s\n",FIELDNAMES[*fieldOffsetsPtr],FIELDTYPES[*(fieldOffsetsPtr+2)]);
1320 if( 0 == strcmp(
"FreeWRL_PROTOInterfaceNodes",FIELDNAMES[*fieldOffsetsPtr])) {
1322 #ifdef JSVRMLCLASSESVERBOSE
1323 printf (
"%s:%d Mangle %s before calling JS_DefineProperty ....\n",__FILE__,__LINE__,FIELDNAMES[*fieldOffsetsPtr]);
1327 char *saveptr1 = NULL;
1331 for (i=0; i < X3D_GROUP(ptr)->FreeWRL_PROTOInterfaceNodes.n; i++) {
1332 rval = INT_TO_JSVAL(*fieldOffsetsPtr);
1333 name = parser_getNameFromNode(X3D_GROUP(ptr)->FreeWRL_PROTOInterfaceNodes.p[i]);
1335 #ifdef JSVRMLCLASSESVERBOSE
1336 dump_scene(stdout,0,X3D_GROUP(ptr)->FreeWRL_PROTOInterfaceNodes.p[i]);
1337 printf (
"%s:%d dummy name=%s\n",__FILE__,__LINE__,name);
1340 str1 = MALLOC(
void *, 1+strlen(name));
1343 token = strtok_r(str1,
"_", &saveptr1);
1345 token = strtok_r(str1,
"_", &saveptr1);
1348 #ifdef JSVRMLCLASSESVERBOSE
1349 printf (
"%s:%d would call JS_DefineProperty on (context=%p, object=%p, name=%s, rval=%p), setting getSFNodeField, setSFNodeField\n",__FILE__,__LINE__,context,
object,name,rval);
1351 if (!JS_DefineProperty(context,
object, name, rval, getSFNodeField, setSFNodeField, attrs)) {
1352 printf(
"JS_DefineProperty failed for \"%s\" in JS_DefineSFNodeSpecificProperties.\n", name);
1356 }
else if (FIELDNAMES[*fieldOffsetsPtr][0] !=
'_') {
1358 if (FIELDNAMES[*fieldOffsetsPtr][0] !=
'_') {
1361 name = (
char *)FIELDNAMES[*fieldOffsetsPtr];
1362 rval = INT_TO_JSVAL(*fieldOffsetsPtr);
1369 #ifdef JSVRMLCLASSESVERBOSE
1370 printf (
"calling JS_DefineProperty on (context=%p, object=%p, name=%s, rval=%p), setting getSFNodeField, setSFNodeField\n",context,
object,name,rval);
1373 if (!JS_DefineProperty(context,
object, name, rval, getSFNodeField, setSFNodeField, attrs)) {
1374 printf(
"JS_DefineProperty failed for \"%s\" in JS_DefineSFNodeSpecificProperties.\n", name);
1378 fieldOffsetsPtr += 5;
1382 nodeNative->fieldsExpanded = TRUE;
1384 #ifdef JSVRMLCLASSESVERBOSE
1385 printf (
"JS_DefineSFNodeSpecificProperties, returning TRUE\n");
1416 #define SET_TOUCHED_TYPE_MF_A(thisMFtype,thisSFtype) \
1417 else if (JS_InstanceOf (cx, obj, &thisMFtype##Class, NULL)) {\
1419 thisSFtype##Native *ptr; \
1421 if (!JS_GetElement(cx, obj, num, &mainElement)) { \
1422 printf ("JS_GetElement failed for %d in get_valueChanged_flag\n",num); \
1426 if ((ptr = (thisSFtype##Native *)JS_GetPrivate(cx, JSVAL_TO_OBJECT(mainElement))) == NULL) {\
1427 printf( "JS_GetPrivate failed in assignCheck.\n"); \
1431 ptr->valueChanged++; \
1437 #if JS_VERSION < 185
1438 JSBool js_SetPropertyCheck (JSContext *cx, JSObject *obj, jsval
id, jsval *vp) {
1440 JSBool js_SetPropertyCheck(JSContext *cx, JSObject *obj, jsid iid, JSBool strict, jsval *vp) {
1443 #if JS_VERSION >= 185
1445 if (!JS_IdToValue(cx,iid,&
id)) {
1446 printf(
"js_SetPropertyCheck: JS_IdToValue failed.\n");
1451 #ifdef JAVASCRIPTVERBOSE
1452 char *_id_c =
"(no value in string)";
1454 if (JSVAL_IS_STRING(
id)) {
1462 }
else if (JSVAL_IS_DOUBLE(
id)) {
1463 #if JS_VERSION < 185
1464 _id_c = JS_GetStringBytes(JSVAL_TO_STRING(
id));
1466 _id_c = JS_EncodeString(cx,JSVAL_TO_STRING(
id));
1468 printf (
"\n...js_SetPropertyCheck called on double %s object %u, jsval %u\n",_id_c, obj, *vp);
1469 #if JS_VERSION >= 185
1472 }
else if (JSVAL_IS_INT(
id)) {
1473 num = JSVAL_TO_INT(
id);
1474 printf (
"\n...js_SetPropertyCheck called on number %d object %u, jsval %u\n",num, obj, *vp);
1476 printf (
"hmmm...js_SetPropertyCheck called on unknown type of object %u, jsval %u\n", obj, *vp);
1482 if (JS_InstanceOf (cx, obj, &MFStringClass, NULL)) {
1483 SET_MF_ECMA_HAS_CHANGED;
1486 else if (JS_InstanceOf (cx, obj, &MFFloatClass, NULL)) {
1487 SET_MF_ECMA_HAS_CHANGED;
1490 else if (JS_InstanceOf (cx, obj, &MFInt32Class, NULL)) {
1491 SET_MF_ECMA_HAS_CHANGED;
1496 else if (JS_InstanceOf (cx, obj, &MFBoolClass, NULL)) {
1497 SET_MF_ECMA_HAS_CHANGED;
1503 SET_TOUCHED_TYPE_MF_A(MFNode,SFNode)
1504 SET_TOUCHED_TYPE_MF_A(MFVec2f,
SFVec2f)
1505 SET_TOUCHED_TYPE_MF_A(MFVec3f,
SFVec3f)
1507 SET_TOUCHED_TYPE_MF_A(MFColor,
SFColor)
1511 #ifdef JSVRMLCLASSESVERBOSE
1512 printf (
"this is a class of "); printJSNodeType (cx,obj);
1521 #if JS_VERSION < 185
1522 JSBool js_GetPropertyDebug (JSContext *context, JSObject *obj, jsval
id, jsval *vp) {
1524 JSBool js_GetPropertyDebug (JSContext *context, JSObject *obj, jsid iid, jsval *vp) {
1526 #ifdef JSVRMLCLASSESVERBOSE
1527 char *_id_c =
"(no value in string)";
1530 #if JS_VERSION >= 185
1532 if (!JS_IdToValue(context,iid,&
id)) {
1533 printf(
"js_GetPropertyDebug: JS_IdToValue failed -- NOT returning false\n");
1537 if (JSVAL_IS_STRING(
id)) {
1538 #if JS_VERSION < 185
1539 _id_c = JS_GetStringBytes(JSVAL_TO_STRING(
id));
1541 _id_c = JS_EncodeString(context,JSVAL_TO_STRING(
id));
1543 printf (
"\n...js_GetPropertyDebug called on string \"%s\" object %u, jsval %lu\n",_id_c, (
unsigned int) obj, *vp);
1544 #if JS_VERSION >= 185
1545 JS_free(context,_id_c);
1547 }
else if (JSVAL_IS_INT(
id)) {
1548 num = JSVAL_TO_INT(
id);
1549 printf (
"\n...js_GetPropertyDebug called on number %d object %u, jsval %lu\n",num, (
unsigned int) obj, *vp);
1551 printf (
"\n...js_GetPropertyDebug called on unknown type of object %u, jsval %lu\n", (
unsigned int) obj, *vp);
1557 #ifdef JSVRMLCLASSESVERBOSE
1558 #if JS_VERSION < 185
1559 void js_SetPropertyDebugWrapped (JSContext *context, JSObject *obj, jsval
id, jsval *vp,
char *debugString) {
1561 void js_SetPropertyDebugWrapped (JSContext *context, JSObject *obj, jsid iid, jsval *vp,
char *debugString) {
1563 char *_id_c =
"(no value in string)";
1565 #if JS_VERSION >= 185
1567 if (!JS_IdToValue(context,iid,&
id)) {
1568 printf(
"js_GetPropertyDebug: JS_IdToValue failed\n");
1573 if (JSVAL_IS_STRING(
id)) {
1574 #if JS_VERSION < 185
1575 _id_c = JS_GetStringBytes(JSVAL_TO_STRING(
id));
1577 _id_c = JS_EncodeString(context,JSVAL_TO_STRING(
id));
1579 printf (
"\n...js_SetPropertyDebug%s called on string \"%s\" object %p, jsval %lu\n",debugString,_id_c, obj, *vp);
1580 #if JS_VERSION >= 185
1581 JS_free(context,_id_c);
1583 }
else if (JSVAL_IS_INT(
id)) {
1584 num = JSVAL_TO_INT(
id);
1585 printf (
"\n...js_SetPropertyDebug%s called on number %d object %p, jsval %lu\n",debugString,num, obj, *vp);
1587 printf (
"\n...js_SetPropertyDebug%s called on unknown type of object %p, jsval %lu\n",debugString, obj, *vp);
1592 #if JS_VERSION < 185
1593 JSBool js_SetPropertyDebug (JSContext *context, JSObject *obj, jsval
id, jsval *vp) {
1595 JSBool js_SetPropertyDebug (JSContext *context, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
1597 #ifdef JSVRMLCLASSESVERBOSE
1598 js_SetPropertyDebugWrapped(context,obj,
id,vp,
"");
1603 #if JS_VERSION < 185
1604 JSBool js_SetPropertyDebug1 (JSContext *context, JSObject *obj, jsval
id, jsval *vp) {
1606 JSBool js_SetPropertyDebug1 (JSContext *context, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
1608 #ifdef JSVRMLCLASSESVERBOSE
1609 js_SetPropertyDebugWrapped(context,obj,
id,vp,
"1");
1613 #if JS_VERSION < 185
1614 JSBool js_SetPropertyDebug2 (JSContext *context, JSObject *obj, jsval
id, jsval *vp) {
1616 JSBool js_SetPropertyDebug2 (JSContext *context, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
1618 #ifdef JSVRMLCLASSESVERBOSE
1619 js_SetPropertyDebugWrapped(context,obj,
id,vp,
"2");
1623 #if JS_VERSION < 185
1624 JSBool js_SetPropertyDebug3 (JSContext *context, JSObject *obj, jsval
id, jsval *vp) {
1626 JSBool js_SetPropertyDebug3 (JSContext *context, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
1628 #ifdef JSVRMLCLASSESVERBOSE
1629 js_SetPropertyDebugWrapped(context,obj,
id,vp,
"3");
1633 #if JS_VERSION < 185
1634 JSBool js_SetPropertyDebug4 (JSContext *context, JSObject *obj, jsval
id, jsval *vp) {
1636 JSBool js_SetPropertyDebug4 (JSContext *context, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
1638 #ifdef JSVRMLCLASSESVERBOSE
1639 js_SetPropertyDebugWrapped(context,obj,
id,vp,
"4");
1643 #if JS_VERSION < 185
1644 JSBool js_SetPropertyDebug5 (JSContext *context, JSObject *obj, jsval
id, jsval *vp) {
1646 JSBool js_SetPropertyDebug5 (JSContext *context, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
1648 #ifdef JSVRMLCLASSESVERBOSE
1649 js_SetPropertyDebugWrapped(context,obj,
id,vp,
"5");
1653 #if JS_VERSION < 185
1654 JSBool js_SetPropertyDebug6 (JSContext *context, JSObject *obj, jsval
id, jsval *vp) {
1656 JSBool js_SetPropertyDebug6 (JSContext *context, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
1658 #ifdef JSVRMLCLASSESVERBOSE
1659 js_SetPropertyDebugWrapped(context,obj,
id,vp,
"6");
1663 #if JS_VERSION < 185
1664 JSBool js_SetPropertyDebug7 (JSContext *context, JSObject *obj, jsval
id, jsval *vp) {
1666 JSBool js_SetPropertyDebug7 (JSContext *context, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
1668 #ifdef JSVRMLCLASSESVERBOSE
1669 js_SetPropertyDebugWrapped(context,obj,
id,vp,
"7");
1673 #if JS_VERSION < 185
1674 JSBool js_SetPropertyDebug8 (JSContext *context, JSObject *obj, jsval
id, jsval *vp) {
1676 JSBool js_SetPropertyDebug8 (JSContext *context, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
1678 #ifdef JSVRMLCLASSESVERBOSE
1679 js_SetPropertyDebugWrapped(context,obj,
id,vp,
"8");
1683 #if JS_VERSION < 185
1684 JSBool js_SetPropertyDebug9 (JSContext *context, JSObject *obj, jsval
id, jsval *vp) {
1686 JSBool js_SetPropertyDebug9 (JSContext *context, JSObject *obj, jsid
id, JSBool strict, jsval *vp) {
1688 #ifdef JSVRMLCLASSESVERBOSE
1689 js_SetPropertyDebugWrapped(context,obj,
id,vp,
"9");