Move the sources to trunk
[opencv] / apps / Hawk / CVEiCL / EiC / src / datastruct.h
1
2 /* datastruct.h
3  *
4  *      (C) Copyright May  7 1995, Edmond J. Breen.
5  *                 ALL RIGHTS RESERVED.
6  * This code may be copied for personal, non-profit use only.
7  *
8  */
9
10 #ifndef DATASTRUCT_H
11 #define DATASTRUCT_H
12
13 #if !defined(_eic_ptr) && !defined(_EiC)
14 #define _eic_ptr
15 typedef struct {void *p, *sp, *ep;} ptr_t;
16 #endif
17
18
19 #include "stab.h"
20
21 #include "eicval.h"
22
23
24 typedef struct {
25     int n;
26     val_t * val;
27 }eicstack_t;
28
29 typedef struct extern_t {
30     char * name;
31     type_expr * type;
32     int  n;
33     unsigned *loc;
34     struct extern_t *nxt;
35 } extern_t;
36
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)
45
46
47 typedef struct {
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 */
57 }struct_t;
58
59
60 typedef struct {
61     unsigned short Tok;
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;
67     code_t Code;
68     type_expr * Type;
69     val_t Val;
70 }token_t;
71
72 /*****
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))
91 ********/
92
93
94
95 /*CUT symEntry*/
96 typedef struct symentry_t  {
97   int tag;                   /* maker */
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 */
110
111 #if 0
112   int  calls;          /* number of local references made */
113   int Nref;
114   struct symentry_t **ref;               /* references */
115 #endif
116
117 }symentry_t;
118 /*END CUT*/
119
120 typedef struct {
121     stab_t stab;
122     
123     code_t CODE;
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;
128     AR_t *LAR;
129     extern_t *link;
130     
131 }environ_t;
132
133 #define getenvcode(env)  ((env)->CODE)
134
135 typedef struct {
136     int n;                  /* number of enumerators */
137     int *eval;              /* array of enumerator values */
138     symentry_t **syms;      /* list of symbol tabel entries */
139 }enum_t;
140
141 typedef struct {
142     int hsize;
143     symentry_t **htab;
144 }hashtab_t;
145
146 #endif
147
148
149
150
151
152