/* $Header$ */ /* SELECTOR DESCRIPTOR */ struct sdef { /* for selectors */ struct sdef *next; int sd_level; struct idf *sd_idf; /* its name */ struct sdef *sd_sdef; /* the next selector */ struct type *sd_stype; /* the struct it belongs to */ struct type *sd_type; /* its type */ arith sd_offset; }; extern char *st_alloc(); /* allocation definitions of struct sdef */ /* ALLOCDEF "sdef" */ extern char *st_alloc(); extern struct sdef *h_sdef; #define new_sdef() ((struct sdef *) \ st_alloc((char **)&h_sdef, sizeof(struct sdef))) #define free_sdef(p) st_free(p, h_sdef, sizeof(struct sdef)) struct tag { /* for struct-, union- and enum tags */ struct tag *next; int tg_level; int tg_busy; /* non-zero during declaration of struct/union pack */ struct type *tg_type; }; /* allocation definitions of struct tag */ /* ALLOCDEF "tag" */ extern char *st_alloc(); extern struct tag *h_tag; #define new_tag() ((struct tag *) \ st_alloc((char **)&h_tag, sizeof(struct tag))) #define free_tag(p) st_free(p, h_tag, sizeof(struct tag)) struct sdef *idf2sdef();