/*
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 */
/* $Header$ */
/* IDENTIFIER DESCRIPTOR */

#include	"nopp.h"

struct id_u {
#ifndef NOPP
	struct macro *idd_macro;
	int idd_resmac;		/* if nonzero: keyword of macroproc. 	*/
#endif /* NOPP */
	int idd_reserved;	/* non-zero for reserved words		*/
	char *idd_file;		/* file containing the occurrence	*/
	unsigned int idd_line;	/* line number of the occurrence	*/
	struct def *idd_label;	/* labels				*/
	struct def *idd_def;	/* variables, typedefs, enum-constants	*/
	struct sdef *idd_sdef;	/* selector tags			*/
	struct tag *idd_tag;	/* struct, union, and enum tags		*/
	int idd_special;	/* special action needed at occurrence	*/
};

#define IDF_TYPE	struct id_u
#define id_macro	id_user.idd_macro
#define id_resmac	id_user.idd_resmac
#define id_reserved	id_user.idd_reserved
#define id_file		id_user.idd_file
#define id_line		id_user.idd_line
#define id_label	id_user.idd_label
#define id_def		id_user.idd_def
#define id_sdef		id_user.idd_sdef
#define id_tag		id_user.idd_tag
#define id_special	id_user.idd_special

#include <idf_pkg.spec>

#ifndef NOPP
struct dependency	{
	struct dependency *next;
	struct idf *dep_idf;
};

/* ALLOCDEF "dependency" 10 */
#endif /* NOPP */

extern int level;
extern struct idf *gen_idf();
