26 void X3D_freeEventIn(X3DEventIn* ev) {
31 void X3D_freeEventOut(X3DEventOut* ev) {
36 void X3D_freeNode(
X3DNode* node) {
40 printf(
"TRYING TO FREE NULL PTR\n");
45 case FIELDTYPE_SFVec3f:
46 case FIELDTYPE_SFVec3d:
47 case FIELDTYPE_SFVec2f:
48 case FIELDTYPE_SFColor:
49 case FIELDTYPE_SFFloat:
50 case FIELDTYPE_SFRotation:
51 case FIELDTYPE_SFColorRGBA:
52 case FIELDTYPE_SFBool:
53 case FIELDTYPE_SFInt32:
54 case FIELDTYPE_SFTime:
58 case FIELDTYPE_SFString:
59 free(node->X3D_SFString.strptr);
64 case FIELDTYPE_MFString:
65 for (i = 0; i < node->X3D_MFString.n; i++) {
66 free(node->X3D_MFString.p[i].strptr);
68 free(node->X3D_MFString.p);
72 case FIELDTYPE_MFFloat:
73 case FIELDTYPE_MFVec3f:
74 case FIELDTYPE_MFVec3d:
75 case FIELDTYPE_MFVec2f:
76 case FIELDTYPE_MFRotation:
77 case FIELDTYPE_MFColor:
78 case FIELDTYPE_MFBool:
79 case FIELDTYPE_MFColorRGBA:
80 case FIELDTYPE_MFInt32:
81 free(node->X3D_MFInt32.p);
92 X3DNode *X3D_newSFVec3f (
float a,
float b,
float c) {
94 retval = malloc (
sizeof(
X3DNode));
95 retval->X3D_SFVec3f.type = FIELDTYPE_SFVec3f;
96 retval->X3D_SFVec3f.c[0] = a;
97 retval->X3D_SFVec3f.c[1] = b;
98 retval->X3D_SFVec3f.c[2] = c;
102 void X3D_getSFVec3f(
X3DNode* node,
float* value) {
103 if (node->X3D_SFVec3f.type != FIELDTYPE_SFVec3f)
105 value[0] = node->X3D_SFVec3f.c[0];
106 value[1] = node->X3D_SFVec3f.c[1];
107 value[2] = node->X3D_SFVec3f.c[2];
111 X3DNode *X3D_newSFVec3d (
double a,
double b,
double c) {
113 retval = malloc (
sizeof(
X3DNode));
114 retval->X3D_SFVec3d.type = FIELDTYPE_SFVec3d;
115 retval->X3D_SFVec3d.c[0] = a;
116 retval->X3D_SFVec3d.c[1] = b;
117 retval->X3D_SFVec3d.c[2] = c;
121 void X3D_getSFVec3d(
X3DNode* node,
double* value) {
122 if (node->X3D_SFVec3d.type != FIELDTYPE_SFVec3d)
124 value[0] = node->X3D_SFVec3d.c[0];
125 value[1] = node->X3D_SFVec3d.c[1];
126 value[2] = node->X3D_SFVec3d.c[2];
129 X3DNode *X3D_newSFColor (
float a,
float b,
float c) {
131 retval = malloc (
sizeof(
X3DNode));
132 retval->X3D_SFColor.type = FIELDTYPE_SFColor;
133 retval->X3D_SFColor.c[0] = a;
134 retval->X3D_SFColor.c[1] = b;
135 retval->X3D_SFColor.c[2] = c;
139 void X3D_getSFColor(
X3DNode* node,
float* value) {
140 if (node->X3D_SFColor.type != FIELDTYPE_SFColor)
142 value[0] = node->X3D_SFColor.c[0];
143 value[1] = node->X3D_SFColor.c[1];
144 value[2] = node->X3D_SFColor.c[2];
147 X3DNode *X3D_newSFVec2f (
float a,
float b) {
149 retval = malloc (
sizeof(
X3DNode));
150 retval->X3D_SFVec2f.type = FIELDTYPE_SFVec2f;
151 retval->X3D_SFVec2f.c[0] = a;
152 retval->X3D_SFVec2f.c[1] = b;
156 void X3D_getSFVec2f(
X3DNode* node,
float* value) {
157 if (node->X3D_SFVec2f.type != FIELDTYPE_SFVec2f)
159 value[0] = node->X3D_SFVec3f.c[0];
160 value[1] = node->X3D_SFVec3f.c[1];
163 X3DNode *X3D_newSFRotation (
float a,
float b,
float c,
float d) {
165 retval = malloc (
sizeof(
X3DNode));
166 retval->X3D_SFRotation.type = FIELDTYPE_SFRotation;
167 retval->X3D_SFRotation.r[0] = a;
168 retval->X3D_SFRotation.r[1] = b;
169 retval->X3D_SFRotation.r[2] = c;
170 retval->X3D_SFRotation.r[3] = d;
174 void X3D_getSFRotation(
X3DNode* node,
float* value) {
175 if (node->X3D_SFRotation.type != FIELDTYPE_SFRotation)
177 value[0] = node->X3D_SFRotation.r[0];
178 value[1] = node->X3D_SFRotation.r[1];
179 value[2] = node->X3D_SFRotation.r[2];
180 value[3] = node->X3D_SFRotation.r[3];
183 X3DNode *X3D_newSFColorRGBA (
float a,
float b,
float c,
float d) {
185 retval = malloc (
sizeof(
X3DNode));
186 retval->X3D_SFColorRGBA.type = FIELDTYPE_SFColorRGBA;
187 retval->X3D_SFColorRGBA.r[0] = a;
188 retval->X3D_SFColorRGBA.r[1] = b;
189 retval->X3D_SFColorRGBA.r[2] = c;
190 retval->X3D_SFColorRGBA.r[3] = d;
194 void X3D_getSFColorRGBA(
X3DNode* node,
float* value) {
195 if (node->X3D_SFColorRGBA.type != FIELDTYPE_SFColorRGBA)
197 value[0] = node->X3D_SFColorRGBA.r[0];
198 value[1] = node->X3D_SFColorRGBA.r[1];
199 value[2] = node->X3D_SFColorRGBA.r[2];
200 value[3] = node->X3D_SFColorRGBA.r[3];
203 X3DNode *X3D_newSFBool (
int a) {
205 retval = malloc (
sizeof(
X3DNode));
206 retval->X3D_SFBool.type = FIELDTYPE_SFBool;
207 retval->X3D_SFBool.value = a;
211 void X3D_getSFBool(
X3DNode* node,
int* value) {
212 if (node->X3D_SFBool.type != FIELDTYPE_SFBool)
214 *value = node->X3D_SFBool.value;
217 X3DNode *X3D_newSFFloat (
float a) {
219 retval = malloc (
sizeof(
X3DNode));
220 retval->X3D_SFFloat.type = FIELDTYPE_SFFloat;
221 retval->X3D_SFFloat.value = a;
225 void X3D_getSFFloat(
X3DNode* node,
float* value) {
226 if (node->X3D_SFFloat.type != FIELDTYPE_SFFloat)
228 *value = node->X3D_SFFloat.value;
231 X3DNode *X3D_newSFTime (
double a) {
233 retval = malloc (
sizeof(
X3DNode));
234 retval->X3D_SFTime.type = FIELDTYPE_SFTime;
235 retval->X3D_SFTime.value = a;
239 void X3D_getSFTime(
X3DNode* node,
double* value) {
240 if (node->X3D_SFTime.type != FIELDTYPE_SFTime)
242 *value = node->X3D_SFTime.value;
245 X3DNode *X3D_newSFInt32 (
int a) {
247 retval = malloc (
sizeof(
X3DNode));
248 retval->X3D_SFInt32.type = FIELDTYPE_SFInt32;
249 retval->X3D_SFInt32.value = a;
253 void X3D_getSFInt32(
X3DNode* node,
int* value) {
254 if (node->X3D_SFInt32.type != FIELDTYPE_SFInt32)
256 *value = node->X3D_SFBool.value;
259 X3DNode *X3D_newSFString(
char*
string) {
261 retval = malloc (
sizeof(
X3DNode));
262 retval->X3D_SFString.type = FIELDTYPE_SFString;
263 retval->X3D_SFString.len = strlen(
string);
264 retval->X3D_SFString.strptr = malloc((strlen(
string) + 1)*
sizeof(
char));
265 strncpy(retval->X3D_SFString.strptr,
string, strlen(
string));
266 retval->X3D_SFString.strptr[strlen(
string)] =
'\0';
270 char* X3D_getSFString(
X3DNode* node) {
272 if (node->type != FIELDTYPE_SFString)
274 string = malloc((node->X3D_SFString.len + 1)*
sizeof(
char));
275 strncpy(
string, node->X3D_SFString.strptr, node->X3D_SFString.len);
276 string[node->X3D_SFString.len] =
'\0';
280 X3DNode *X3D_newMFInt32(
int num,
int* array){
284 retval = malloc(
sizeof(
X3DNode));
285 retval->type = FIELDTYPE_MFInt32;
286 retval->X3D_MFInt32.n = num;
287 retval->X3D_MFInt32.p = malloc (
sizeof(
X3DNode) * num);
289 for (i = 0; i < num; i++) {
290 retval->X3D_MFInt32.p[i].value = array[i];
291 retval->X3D_MFInt32.p[i].type= FIELDTYPE_SFInt32;
297 void X3D_getMFInt32(
X3DNode* node,
int** array,
int* num) {
300 if (node->type != FIELDTYPE_MFInt32)
302 *num = node->X3D_MFInt32.n;
304 *array = malloc (node->X3D_MFInt32.n *
sizeof(
int));
306 for (i = 0; i < node->X3D_MFInt32.n; i++) {
307 (*array)[i] = node->X3D_MFInt32.p[i].value;
311 X3DNode *X3D_newMFFloat(
int num,
float* array){
315 retval = malloc(
sizeof(
X3DNode));
316 retval->type = FIELDTYPE_MFFloat;
317 retval->X3D_MFFloat.n = num;
318 retval->X3D_MFFloat.p = malloc (
sizeof(
X3DNode) * num);
320 for (i = 0; i < num; i++) {
321 retval->X3D_MFFloat.p[i].value = array[i];
322 retval->X3D_MFFloat.p[i].type= FIELDTYPE_SFFloat;
328 void X3D_getMFFloat(
X3DNode* node,
float** array,
int* num) {
331 if (node->type != FIELDTYPE_MFFloat)
333 *num = node->X3D_MFFloat.n;
335 *array = malloc (node->X3D_MFFloat.n *
sizeof(
float));
337 for (i = 0; i < node->X3D_MFFloat.n; i++) {
338 (*array)[i] = node->X3D_MFFloat.p[i].value;
342 X3DNode *X3D_newMFVec3f(
int num,
float(* array)[3]){
346 retval = malloc(
sizeof(
X3DNode));
347 retval->type = FIELDTYPE_MFVec3f;
348 retval->X3D_MFVec3f.n = num;
349 retval->X3D_MFVec3f.p = malloc (
sizeof(
X3DNode) * num);
351 for (i = 0; i < num; i++) {
352 retval->X3D_MFVec3f.p[i].type= FIELDTYPE_SFVec3f;
353 retval->X3D_MFVec3f.p[i].c[0]= array[i][0];
354 retval->X3D_MFVec3f.p[i].c[1]= array[i][1];
355 retval->X3D_MFVec3f.p[i].c[2]= array[i][2];
361 void X3D_getMFVec3f(
X3DNode* node,
float*** array,
int* num) {
364 if (node->type != FIELDTYPE_MFVec3f)
366 *num = node->X3D_MFVec3f.n;
368 (*array) = (
float**) malloc(node->X3D_MFVec3f.n*
sizeof(
float*));
369 (*array)[0] = (
float*) malloc (node->X3D_MFVec3f.n *
sizeof(
float) * 3);
370 for (i = 0; i < node->X3D_MFVec2f.n; i++)
371 (*array)[i] = (*array)[0] + i * 3;
373 for (i = 0; i < node->X3D_MFFloat.n; i++) {
374 (*array)[i][0] = node->X3D_MFVec3f.p[i].c[0];
375 (*array)[i][1] = node->X3D_MFVec3f.p[i].c[1];
376 (*array)[i][2] = node->X3D_MFVec3f.p[i].c[2];
380 void X3D_getMFColor(
X3DNode* node,
float*** array,
int* num) {
383 if (node->type != FIELDTYPE_MFColor)
385 *num = node->X3D_MFColor.n;
387 (*array) = (
float**) malloc(node->X3D_MFColor.n*
sizeof(
float*));
388 (*array)[0] = (
float*) malloc (node->X3D_MFColor.n *
sizeof(
float) * 3);
389 for (i = 0; i < node->X3D_MFFloat.n; i++)
390 (*array)[i] = (*array)[0] + i * 3;
392 for (i = 0; i < node->X3D_MFFloat.n; i++) {
393 (*array)[i][0] = node->X3D_MFColor.p[i].c[0];
394 (*array)[i][1] = node->X3D_MFColor.p[i].c[1];
395 (*array)[i][2] = node->X3D_MFColor.p[i].c[2];
399 X3DNode *X3D_newMFColor(
int num,
float(* array)[3]){
403 retval = malloc(
sizeof(
X3DNode));
404 retval->type = FIELDTYPE_MFColor;
405 retval->X3D_MFColor.n = num;
406 retval->X3D_MFColor.p = malloc (
sizeof(
X3DNode) * num);
408 for (i = 0; i < num; i++) {
409 retval->X3D_MFColor.p[i].type= FIELDTYPE_SFColor;
410 retval->X3D_MFColor.p[i].c[0]= array[i][0];
411 retval->X3D_MFColor.p[i].c[1]= array[i][1];
412 retval->X3D_MFColor.p[i].c[2]= array[i][2];
418 X3DNode *X3D_newMFVec2f(
int num,
float(* array)[2]){
422 retval = malloc(
sizeof(
X3DNode));
423 retval->type = FIELDTYPE_MFVec2f;
424 retval->X3D_MFVec2f.n = num;
425 retval->X3D_MFVec2f.p = malloc (
sizeof(
X3DNode) * num);
427 for (i = 0; i < num; i++) {
428 retval->X3D_MFVec2f.p[i].type= FIELDTYPE_SFVec2f;
429 retval->X3D_MFVec2f.p[i].c[0]= array[i][0];
430 retval->X3D_MFVec2f.p[i].c[1]= array[i][1];
436 void X3D_getMFVec2f(
X3DNode* node,
float*** array,
int* num) {
439 if (node->type != FIELDTYPE_MFVec2f)
441 *num = node->X3D_MFVec2f.n;
443 (*array) = (
float**) malloc(node->X3D_MFVec2f.n*
sizeof(
float*));
444 (*array)[0] = (
float*) malloc (node->X3D_MFVec2f.n *
sizeof(
float) * 2);
445 for (i = 0; i < node->X3D_MFVec2f.n; i++)
446 (*array)[i] = (*array)[0] + i * 2;
448 for (i = 0; i < node->X3D_MFVec2f.n; i++) {
449 (*array)[i][0] = node->X3D_MFVec2f.p[i].c[0];
450 (*array)[i][1] = node->X3D_MFVec2f.p[i].c[1];
454 X3DNode *X3D_newMFRotation(
int num,
float(* array)[4]){
458 retval = malloc(
sizeof(
X3DNode));
459 retval->type = FIELDTYPE_MFRotation;
460 retval->X3D_MFRotation.n = num;
461 retval->X3D_MFRotation.p = malloc (
sizeof(
X3DNode) * num);
463 for (i = 0; i < num; i++) {
464 retval->X3D_MFRotation.p[i].type= FIELDTYPE_SFRotation;
465 retval->X3D_MFRotation.p[i].r[0]= array[i][0];
466 retval->X3D_MFRotation.p[i].r[1]= array[i][1];
467 retval->X3D_MFRotation.p[i].r[2]= array[i][2];
468 retval->X3D_MFRotation.p[i].r[3]= array[i][3];
474 void X3D_getMFRotation(
X3DNode* node,
float*** array,
int* num) {
477 if (node->type != FIELDTYPE_MFRotation)
479 *num = node->X3D_MFRotation.n;
481 (*array) = (
float**) malloc(node->X3D_MFRotation.n*
sizeof(
float*));
482 (*array)[0] = (
float*) malloc (node->X3D_MFRotation.n *
sizeof(
float) * 4);
483 for (i = 0; i < node->X3D_MFRotation.n; i++)
484 (*array)[i] = (*array)[0] + i * 4;
486 for (i = 0; i < node->X3D_MFFloat.n; i++) {
487 (*array)[i][0] = node->X3D_MFRotation.p[i].r[0];
488 (*array)[i][1] = node->X3D_MFRotation.p[i].r[1];
489 (*array)[i][2] = node->X3D_MFRotation.p[i].r[2];
490 (*array)[i][3] = node->X3D_MFRotation.p[i].r[3];
494 X3DNode *X3D_newMFColorRGBA(
int num,
float(* array)[4]){
498 retval = malloc(
sizeof(
X3DNode));
499 retval->type = FIELDTYPE_MFColorRGBA;
500 retval->X3D_MFColorRGBA.n = num;
501 retval->X3D_MFColorRGBA.p = malloc (
sizeof(
X3DNode) * num);
503 for (i = 0; i < num; i++) {
504 retval->X3D_MFColorRGBA.p[i].type= FIELDTYPE_SFColorRGBA;
505 retval->X3D_MFColorRGBA.p[i].r[0]= array[i][0];
506 retval->X3D_MFColorRGBA.p[i].r[1]= array[i][1];
507 retval->X3D_MFColorRGBA.p[i].r[2]= array[i][2];
508 retval->X3D_MFColorRGBA.p[i].r[3]= array[i][3];
514 void X3D_getMFColorRGBA(
X3DNode* node,
float*** array,
int* num) {
517 if (node->type != FIELDTYPE_MFColorRGBA)
519 *num = node->X3D_MFColorRGBA.n;
521 (*array) = (
float**) malloc(node->X3D_MFColorRGBA.n*
sizeof(
float*));
522 (*array)[0] = (
float*) malloc (node->X3D_MFColorRGBA.n *
sizeof(
float) * 4);
523 for (i = 0; i < node->X3D_MFColorRGBA.n; i++)
524 (*array)[i] = (*array)[0] + i * 4;
526 for (i = 0; i < node->X3D_MFColorRGBA.n; i++) {
527 (*array)[i][0] = node->X3D_MFColorRGBA.p[i].r[0];
528 (*array)[i][1] = node->X3D_MFColorRGBA.p[i].r[1];
529 (*array)[i][2] = node->X3D_MFColorRGBA.p[i].r[2];
530 (*array)[i][3] = node->X3D_MFColorRGBA.p[i].r[3];
534 X3DNode *X3D_newMFBool(
int num,
int* array){
538 retval = malloc(
sizeof(
X3DNode));
539 retval->type = FIELDTYPE_MFBool;
540 retval->X3D_MFBool.n = num;
541 retval->X3D_MFBool.p = malloc (
sizeof(
X3DNode) * num);
543 for (i = 0; i < num; i++) {
544 retval->X3D_MFBool.p[i].value = array[i];
545 retval->X3D_MFBool.p[i].type= FIELDTYPE_SFBool;
551 void X3D_getMFBool(
X3DNode* node,
int** array,
int* num) {
554 if (node->type != FIELDTYPE_MFBool)
556 *num = node->X3D_MFBool.n;
558 *array = malloc (node->X3D_MFBool.n *
sizeof(
int));
560 for (i = 0; i < node->X3D_MFBool.n; i++) {
561 (*array)[i] = node->X3D_MFBool.p[i].value;
565 X3DNode *X3D_newMFVec3d(
int num,
double(* array)[3]){
569 retval = malloc(
sizeof(
X3DNode));
570 retval->type = FIELDTYPE_MFVec3d;
571 retval->X3D_MFVec3d.n = num;
572 retval->X3D_MFVec3d.p = malloc (
sizeof(
X3DNode) * num);
574 for (i = 0; i < num; i++) {
575 retval->X3D_MFVec3d.p[i].type= FIELDTYPE_SFVec3d;
576 retval->X3D_MFVec3d.p[i].c[0]= array[i][0];
577 retval->X3D_MFVec3d.p[i].c[1]= array[i][1];
578 retval->X3D_MFVec3d.p[i].c[2]= array[i][2];
584 void X3D_getMFVec3d(
X3DNode* node,
double*** array,
int* num) {
587 if (node->type != FIELDTYPE_MFVec3d)
589 *num = node->X3D_MFVec3d.n;
591 (*array) = (
double**) malloc(node->X3D_MFVec3d.n*
sizeof(
double*));
592 (*array)[0] = (
double*) malloc (node->X3D_MFVec3d.n *
sizeof(
double) * 3);
593 for (i = 0; i < node->X3D_MFVec3d.n; i++) {
594 (*array)[i] = (*array)[0] + i * 3;
595 (*array)[i][1] = node->X3D_MFVec3d.p[i].c[1];
596 (*array)[i][2] = node->X3D_MFVec3d.p[i].c[2];
600 X3DNode *X3D_newMFString(
int num,
char array[][STRLEN]){
603 retval = malloc (
sizeof (
X3DNode));
604 retval->type = FIELDTYPE_MFString;
605 retval->X3D_MFString.n = num;
606 retval->X3D_MFString.p = malloc (
sizeof (
X3DNode) * num);
608 for (i = 0; i < num; i++) {
610 retval->X3D_MFString.p[i].type = FIELDTYPE_SFString;
611 retval->X3D_MFString.p[i].len = strlen(array[i]);
612 retval->X3D_MFString.p[i].strptr = malloc(
sizeof(
char)*STRLEN);
613 strncpy(retval->X3D_MFString.p[i].strptr, array[i], STRLEN);
619 void X3D_getMFString(
X3DNode* node,
char*** array,
int* num) {
622 if (node->type != FIELDTYPE_MFString)
626 *num = node->X3D_MFString.n;
628 (*array) = (
char**) malloc(node->X3D_MFString.n*
sizeof(
char*));
629 (*array)[0] = (
char*) malloc(node->X3D_MFString.n *
sizeof(
char) * STRLEN);
631 for (i = 0; i < node->X3D_MFString.n; i++) {
632 (*array)[i] = (*array)[0] + (i*256);
633 strncpy((*array)[i], node->X3D_MFString.p[i].strptr, STRLEN);
637 X3DNode *X3D_newSFNode(){printf (
"New node not implemented yet for this type\n");
return NULL;}
638 X3DNode *X3D_newSFImage(){printf (
"New node not implemented yet for this type\n");
return NULL;}
639 X3DNode *X3D_newMFNode(){printf (
"New node not implemented yet for this type\n");
return NULL;}
641 X3DNode *X3D_newMFVec2d(
int num){printf (
"New node not implemented yet for this type\n");
return NULL;}
642 X3DNode *X3D_newMFTime(
int num){printf (
"New node not implemented yet for this type\n");
return NULL;}
643 X3DNode *X3D_newSFVec2d (
double a,
double b){printf (
"New node not implemented yet for this type\n");
return NULL;}
644 char *fieldTypeName(
char type){printf (
"New node not implemented yet for this type\n");
return NULL;}