Move the sources to trunk
[opencv] / apps / Hawk / CVEiCL / EiC / src / ppc403 / include / datastruct.h
1 \r
2 /* datastruct.h\r
3  *\r
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
7  *\r
8  */\r
9 \r
10 #define _need_eic_ptr\r
11 \r
12 #include "sys/types.h"\r
13 \r
14 #undef _need_eic_ptr\r
15 \r
16 #include "stab.h"\r
17 \r
18 #include "eicval.h"\r
19 \r
20 \r
21 typedef struct {\r
22     int n;\r
23     val_t * val;\r
24 }eicstack_t;\r
25 \r
26 typedef struct {\r
27     unsigned opcode;\r
28     val_t  val;\r
29     int ext;\r
30     unsigned short line;\r
31 }inst_t;\r
32 \r
33 \r
34 typedef struct {\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
39 }code_t;\r
40 \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
49 \r
50 typedef struct extern_t {\r
51     char * name;\r
52     type_expr * type;\r
53     int  n;\r
54     unsigned *loc;\r
55     struct extern_t *nxt;\r
56 } extern_t;\r
57 \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
66 \r
67 \r
68 typedef struct {\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
78 }struct_t;\r
79 \r
80 \r
81 typedef struct {\r
82     unsigned short tok;\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
88     code_t code;\r
89     type_expr * type;\r
90     val_t val;\r
91 }token_t;\r
92 \r
93 \r
94 /*CUT symEntry*/\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
108 }symentry_t;\r
109 /*END CUT*/\r
110 \r
111 typedef struct {\r
112     stab_t stab;\r
113     \r
114     int level;\r
115     code_t CODE;\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
120     AR_t *LAR;\r
121     extern_t *link;\r
122     \r
123 }environ_t;\r
124 \r
125 #define getenvcode(env)  ((env)->CODE)\r
126 \r
127 typedef struct {\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
131 }enum_t;\r
132 \r
133 typedef struct {\r
134     int hsize;\r
135     symentry_t **htab;\r
136 }hashtab_t;\r
137 \r
138 \r
139 \r
140 \r
141 \r
142 \r
143 \r
144 \r
145 \r
146 \r