/*
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 */
/* $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 formal *dc_formal;	/* params for function	*/
};

struct formal	{			/* list of formals */
	struct formal *next;
	struct idf *fm_idf;
};

/* ALLOCDEF "formal" 5 */

#define	NO_PARAMS ((struct formal *) 0)

struct decl_unary	{
	struct decl_unary *next;
	int du_fund;			/* POINTER, ARRAY or FUNCTION	*/
	arith du_count;			/* for ARRAYs only	*/
};

/* ALLOCDEF "decl_unary" 10 */

extern struct type *declare_type();
extern struct declarator null_declarator;