1 /*
2  *	$Source: /home/nlfm/Working/CVS/frink/vars.h,v $
3  *	$Date: 2002/08/27 10:25:34 $
4  *	$Revision: 2.3 $
5  *
6  *------------------------------------------------------------------------
7  *   AUTHOR:  Lindsay Marshall <lindsay.marshall@newcastle.ac.uk>
8  *------------------------------------------------------------------------
9  *    Copyright 1994-2003 The University of Newcastle upon Tyne (see COPYRIGHT)
10  *========================================================================
11  *
12  */
13 
14 #ifndef FRINK_VARS_H
15 #define FRINK_VARS_H
16 
17 enum VarType
18 {
19     VLOCAL	= 0,		/* local variable			*/
20     VGLOBAL	= 1,		/* global variable			*/
21     VVAR	= 2,		/* namespace variable			*/
22     VFOR	= 3,		/* foreach variable			*/
23     VARG 	= 4		/* argument				*/
24 };
25 
26 typedef struct vardata_s
27 {
28     char		*name;
29     enum VarType	type;
30     int			used;
31     int			set;
32     int			dval;
33     int			array;
34 } VarData;
35 
36 enum varCheck
37 {
38     VC_NONE	= 0x0000,
39     VC_SET	= 0x0001,
40     VC_USE	= 0x0002,
41     VC_BEFORE	= 0x0004,
42     VC_DECL	= 0x0010,
43     VC_UNKNOWN	= 0x0040,
44     VC_ARRAY	= 0x0080,
45 };
46 
47 
48 extern void checkName(Token *, int);
49 extern VarData *varKnown(const char *);
50 extern VarData *declareVar(const Token *, enum VarType, int);
51 extern VarData *useVar(const Token *, enum VarType, int);
52 extern VarData *setVar(const Token *, enum VarType, int);
53 
54 #endif
55