Lines Matching refs:rtdp

43 static char *soudef(char *cp, enum type type, struct tdesc **rtdp);
44 static void enumdef(char *cp, struct tdesc **rtdp);
55 static void tagdecl(char *cp, struct tdesc **rtdp, int h, char *w);
56 static char *tdefdecl(char *cp, int h, struct tdesc **rtdp);
57 static char *intrinsic(char *cp, struct tdesc **rtdp);
58 static char *arraydef(char *cp, struct tdesc **rtdp);
357 tagdecl(char *cp, struct tdesc **rtdp, int h, char *w)
360 if ((*rtdp = lookup(h)) != NULL) {
362 if ((*rtdp)->name != NULL &&
363 strcmp((*rtdp)->name, w) != 0) {
369 tdp->data.tdesc = *rtdp;
372 ((*rtdp)->name != NULL) ?
373 (*rtdp)->name : "anon", h);
374 } else if ((*rtdp)->name == NULL) {
375 (*rtdp)->name = w;
376 addhash(*rtdp, h);
380 *rtdp = malloc(sizeof (**rtdp));
381 (*rtdp)->name = w;
382 addhash(*rtdp, h);
387 soudef(cp, STRUCT, rtdp);
390 soudef(cp, UNION, rtdp);
393 enumdef(cp, rtdp);
402 tdefdecl(char *cp, int h, struct tdesc **rtdp)
420 cp = intrinsic(cp, rtdp);
426 cp = intrinsic(cp, rtdp);
434 cp = tdefdecl(cp, h2, rtdp);
437 ntdp->data.tdesc = *rtdp;
440 *rtdp = malloc(sizeof (**rtdp));
441 (*rtdp)->type = TYPEOF;
442 (*rtdp)->data.tdesc = ntdp;
451 *rtdp = malloc(sizeof (**rtdp));
452 (*rtdp)->type = POINTER;
453 (*rtdp)->size = model->pointersize;
454 (*rtdp)->name = "pointer";
455 (*rtdp)->data.tdesc = ntdp;
459 *rtdp = malloc(sizeof (**rtdp));
460 (*rtdp)->type = FUNCTION;
461 (*rtdp)->size = model->pointersize;
462 (*rtdp)->name = "function";
463 (*rtdp)->data.tdesc = ntdp;
469 *rtdp = malloc(sizeof (**rtdp));
470 (*rtdp)->type = ARRAY;
471 (*rtdp)->name = "array";
472 cp = arraydef(cp, rtdp);
479 *rtdp = malloc(sizeof (**rtdp));
480 (*rtdp)->type = FORWARD;
481 (*rtdp)->name = w;
485 *rtdp = malloc(sizeof (**rtdp));
486 (*rtdp)->type = VOLATILE;
487 (*rtdp)->size = 0;
488 (*rtdp)->name = "volatile";
489 (*rtdp)->data.tdesc = ntdp;
493 *rtdp = malloc(sizeof (**rtdp));
494 (*rtdp)->type = CONST;
495 (*rtdp)->size = 0;
496 (*rtdp)->name = "const";
497 (*rtdp)->data.tdesc = ntdp;
510 *rtdp = malloc(sizeof (**rtdp));
511 (*rtdp)->type = INTRINSIC;
512 (*rtdp)->name = "void";
513 (*rtdp)->size = 0;
515 cp = tdefdecl(cp, h2, rtdp);
518 ntdp->data.tdesc = *rtdp;
522 *rtdp = malloc(sizeof (**rtdp));
523 (*rtdp)->type = TYPEOF;
524 (*rtdp)->data.tdesc = ntdp;
531 *rtdp = malloc(sizeof (**rtdp));
532 (*rtdp)->name = NULL;
533 cp = soudef(cp, (type == 'u') ? UNION : STRUCT, rtdp);
542 intrinsic(char *cp, struct tdesc **rtdp)
553 *rtdp = tdp;
558 soudef(char *cp, enum type type, struct tdesc **rtdp)
566 (*rtdp)->size = size;
567 (*rtdp)->type = type; /* s or u */
579 (*rtdp)->name ? (*rtdp)->name : "(anonsou)",
580 (*rtdp)->size);
582 next_pp = &((*rtdp)->data.members.forw); /* head for forward linklist */
620 (*rtdp)->data.members.back = prev_p; /* head for backward linklist */
643 arraydef(char *cp, struct tdesc **rtdp)
652 (*rtdp)->data.ardef = malloc(sizeof (struct ardef));
653 (*rtdp)->data.ardef->indices = malloc(sizeof (struct element));
654 (*rtdp)->data.ardef->indices->index_type = lookup(h);
662 (*rtdp)->data.ardef->indices->range_start = start;
663 (*rtdp)->data.ardef->indices->range_end = end;
669 (*rtdp)->data.ardef->contents = tdp;
675 (*rtdp)->data.ardef->contents = tdp;
679 cp = tdefdecl(cp, h, &((*rtdp)->data.ardef->contents));
684 enumdef(char *cp, struct tdesc **rtdp)
689 (*rtdp)->type = ENUM;
690 (*rtdp)->data.emem = NULL;
692 prev = &((*rtdp)->data.emem);
701 (*rtdp)->name ? (*rtdp)->name : "(anon enum)",