/* $Header$ */ /* DEFINITION OF DECLARATOR DESCRIPTORS */ /* A 'declarator' consists of an idf and a linked list of language-defined unary operations: *, [] and (), called decl_unary's. */ struct declarator { struct declarator *next; struct idf *dc_idf; struct decl_unary *dc_decl_unary; struct idstack_item *dc_fparams; /* params for function */ }; /* allocation definitions of struct declarator */ /* ALLOCDEF "declarator" */ extern char *st_alloc(); extern struct declarator *h_declarator; #define new_declarator() ((struct declarator *) \ st_alloc((char **)&h_declarator, sizeof(struct declarator))) #define free_declarator(p) st_free(p, h_declarator, sizeof(struct declarator)) #define NO_PARAMS ((struct idstack_item *) 0) struct decl_unary { struct decl_unary *next; int du_fund; /* POINTER, ARRAY or FUNCTION */ arith du_count; /* for ARRAYs only */ }; /* allocation definitions of struct decl_unary */ /* ALLOCDEF "decl_unary" */ extern char *st_alloc(); extern struct decl_unary *h_decl_unary; #define new_decl_unary() ((struct decl_unary *) \ st_alloc((char **)&h_decl_unary, sizeof(struct decl_unary))) #define free_decl_unary(p) st_free(p, h_decl_unary, sizeof(struct decl_unary)) extern struct type *declare_type(); extern struct declarator null_declarator;