/*
 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 */
/* $Id$ */
/*	Lint output definition	*/

/* Values for ar_class */
#define	ArgFormal	0
#define	ArgExpr		1		/* actual */
#define	ArgConst	2		/* integer constant */
#define	ArgString	3		/* string */
#define	ArgEllipsis	4		/* ellipsis */

struct argument {
	struct argument *next;
	struct type *ar_type;
	int ar_class;			/* for constant parameters */
	union const_arg {
		arith ca_value;
		struct {
			char *cas_value;
			int cas_len;
		} ca_string;
	} ar_object;
};

#define	CAA_VALUE	ar_object.ca_value
#define	CAS_VALUE	ar_object.ca_string.cas_value
#define	CAS_LEN		ar_object.ca_string.cas_len

/* ALLOCDEF "argument" 10 */

struct outdef {
	char od_class;
	int od_statnr;
	char *od_name;
	char *od_file;
	unsigned int od_line;
	int od_nrargs;
	struct argument *od_arg;	/* a list of the types of the
					 * formal parameters */
	int od_valreturned;
		/* NOVALRETURNED, VALRETURNED, NORETURN; see l_lint.h */
	int od_valused;
		/* USED, IGNORED, SET, VOIDED; see l_lint.h */
	struct type *od_type;
};
