4 * (C) Copyright May 7 1995, Edmond J. Breen.
6 * This code may be copied for personal, non-profit use only.
13 #if !defined(_eic_ptr) && !defined(_EiC)
15 typedef struct {void *p, *sp, *ep;} ptr_t;
29 typedef struct extern_t {
37 /* methods for extern_t */
38 #define crt_extern() xcalloc(sizeof(extern_t),1)
39 #define getExtName(x) ((x)->name)
40 #define setExtName(x,y) ((x)->name = y)
41 #define getExtType(x) ((x)->type)
42 #define setExtType(x,y) ((x)->type = y)
43 #define getExtNext(x) ((x)->nxt)
44 #define setExtNext(x,y) ((x)->nxt = y)
48 char cl; /* closed flag */
49 int n; /* number of members */
50 int tsize; /* total size in bytes of struct */
51 int align; /* alignment of structure */
52 type_expr **type; /* member types */
53 char **id; /* member names */
54 int *offset; /* offsets to members data position*/
55 int ntags; /* number of tags */
56 type_expr **tag; /* tag types */
62 int Tab; /* name space table */
63 unsigned char Pflag; /* processed flag */
64 unsigned char Sclass; /* storage class */
65 unsigned char Typequal; /* type qualifier */
66 struct symentry_t * Sym;
73 #define getTokenVal(x) ((x).Val)
74 #define setTokenVal(x,y) ((x).Val = (y))
75 #define getTokenType(x) ((x).Type)
76 #define setTokenType(x,y) ((x).Type = (y))
77 #define getTokenCode(x) ((x).Code)
78 #define setTokenCode(x,y) ((x).Code = (y))
79 #define getTokenSym(x) ((x).Sym)
80 #define setTokenSym(x,y) ((x).Sym = (y))
81 #define getTokenTypequal(x) ((x).Typequal)
82 #define setTokenTypequal(x,y) ((x).Typequal = (y))
83 #define getTokenSclass(x) ((x).Sclass)
84 #define setTokenSclass(x,y) ((x).Sclass = (y))
85 #define getTokenPflag(x) ((x).Pflag)
86 #define setTokenPflag(x,y) ((x).Pflag = (y))
87 #define getTokenTab(x) ((x).Tab)
88 #define setTokenTab(x,y) ((x).Tab = (y))
89 #define getTokenTok(x) ((x).Tok)
90 #define setTokenTok(x,y) ((x).Tok = (y))
96 typedef struct symentry_t {
98 unsigned int entry; /* entry number */
99 struct symentry_t *next; /* link to next symentry */
100 char *id; /* pointer to identifier string */
101 unsigned char sclass; /* storage class code */
102 unsigned char typequal; /* type qualifier */
103 unsigned char level; /* scope level */
104 unsigned char nspace; /* name space identifier */
105 char ass; /* used to flag assignment */
106 type_expr * type; /* object type */
107 val_t val; /* symbol value information */
108 char *pname; /* previous file name */
109 char *fname; /* file name pointer */
112 int calls; /* number of local references made */
114 struct symentry_t **ref; /* references */
124 eicstack_t ARgar; /* for garbage collection of AR units*/
125 unsigned int ARsize,sp;
126 AR_t *AR; /* static activation record */
127 unsigned int LARsize,lsp;
133 #define getenvcode(env) ((env)->CODE)
136 int n; /* number of enumerators */
137 int *eval; /* array of enumerator values */
138 symentry_t **syms; /* list of symbol tabel entries */