45 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* $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;
 |