4 * (C) Copyright May 7 1995, Edmond J. Breen.
\r
5 * ALL RIGHTS RESERVED.
\r
6 * This code may be copied for personal, non-profit use only.
\r
10 #define _need_eic_ptr
\r
12 #include "sys/types.h"
\r
14 #undef _need_eic_ptr
\r
30 unsigned short line;
\r
35 unsigned int nextinst; /* next instruction */
\r
36 unsigned int binst; /* physical size */
\r
37 inst_t * inst; /* instructions */
\r
38 char * Filename; /* file with source code */
\r
41 /* methods for code */
\r
42 #define opcode(C,i) ((C)->inst[i].opcode)
\r
43 #define setopcode(C,i,y) (opcode(C,i) = y)
\r
44 #define ivalcode(C,i) ((C)->inst[i].val.ival)
\r
45 #define pvalcode(C,i) ((C)->inst[i].val.p.p)
\r
46 #define nextinst(C) ((C)->nextinst)
\r
47 #define instline(C,i) ((C)->inst[i].line)
\r
48 #define codeName(C) (C)->Filename
\r
50 typedef struct extern_t {
\r
55 struct extern_t *nxt;
\r
58 /* methods for extern_t */
\r
59 #define crt_extern() xcalloc(sizeof(extern_t),1)
\r
60 #define getExtName(x) ((x)->name)
\r
61 #define setExtName(x,y) ((x)->name = y)
\r
62 #define getExtType(x) ((x)->type)
\r
63 #define setExtType(x,y) ((x)->type = y)
\r
64 #define getExtNext(x) ((x)->nxt)
\r
65 #define setExtNext(x,y) ((x)->nxt = y)
\r
69 char cl; /* closed flag */
\r
70 int n; /* number of members */
\r
71 int tsize; /* total size in bytes of struct */
\r
72 int align; /* alignment of structure */
\r
73 type_expr **type; /* member types */
\r
74 char **id; /* member names */
\r
75 int *offset; /* offsets to members data position*/
\r
76 int ntags; /* number of tags */
\r
77 type_expr **tag; /* tag types */
\r
83 int tab; /* name space table */
\r
84 char pflag; /* processed flag */
\r
85 char sclass; /* storage class */
\r
86 char typequal; /* type qualifier */
\r
87 struct symentry_t * sym;
\r
95 typedef struct symentry_t {
\r
96 unsigned int entry; /* entry number */
\r
97 struct symentry_t *next; /* link to next symentry */
\r
98 char *id; /* pointer to identifier string */
\r
99 char sclass; /* storage class code */
\r
100 char typequal; /* type qualifier */
\r
101 char level; /* scope level */
\r
102 char nspace; /* name space identifier */
\r
103 char ass; /* used to flag assignment */
\r
104 type_expr * type; /* object type */
\r
105 val_t val; /* symbol value information */
\r
106 char *pname; /* previous file name */
\r
107 char *fname; /* file name pointer */
\r
116 eicstack_t ARgar; /* for garbage collection of AR units*/
\r
117 unsigned int ARsize,sp;
\r
118 AR_t *AR; /* static activation record */
\r
119 unsigned int LARsize,lsp;
\r
125 #define getenvcode(env) ((env)->CODE)
\r
128 int n; /* number of enumerators */
\r
129 int *eval; /* array of enumerator values */
\r
130 symentry_t **syms; /* list of symbol tabel entries */
\r