+++ /dev/null
-\r
-/* datastruct.h\r
- *\r
- * (C) Copyright May 7 1995, Edmond J. Breen.\r
- * ALL RIGHTS RESERVED.\r
- * This code may be copied for personal, non-profit use only.\r
- *\r
- */\r
-\r
-#define _need_eic_ptr\r
-\r
-#include "sys/types.h"\r
-\r
-#undef _need_eic_ptr\r
-\r
-#include "stab.h"\r
-\r
-#include "eicval.h"\r
-\r
-\r
-typedef struct {\r
- int n;\r
- val_t * val;\r
-}eicstack_t;\r
-\r
-typedef struct {\r
- unsigned opcode;\r
- val_t val;\r
- int ext;\r
- unsigned short line;\r
-}inst_t;\r
-\r
-\r
-typedef struct {\r
- unsigned int nextinst; /* next instruction */\r
- unsigned int binst; /* physical size */\r
- inst_t * inst; /* instructions */\r
- char * Filename; /* file with source code */\r
-}code_t;\r
-\r
-/* methods for code */\r
-#define opcode(C,i) ((C)->inst[i].opcode)\r
-#define setopcode(C,i,y) (opcode(C,i) = y)\r
-#define ivalcode(C,i) ((C)->inst[i].val.ival)\r
-#define pvalcode(C,i) ((C)->inst[i].val.p.p)\r
-#define nextinst(C) ((C)->nextinst)\r
-#define instline(C,i) ((C)->inst[i].line)\r
-#define codeName(C) (C)->Filename\r
-\r
-typedef struct extern_t {\r
- char * name;\r
- type_expr * type;\r
- int n;\r
- unsigned *loc;\r
- struct extern_t *nxt;\r
-} extern_t;\r
-\r
-/* methods for extern_t */\r
-#define crt_extern() xcalloc(sizeof(extern_t),1)\r
-#define getExtName(x) ((x)->name)\r
-#define setExtName(x,y) ((x)->name = y)\r
-#define getExtType(x) ((x)->type)\r
-#define setExtType(x,y) ((x)->type = y) \r
-#define getExtNext(x) ((x)->nxt)\r
-#define setExtNext(x,y) ((x)->nxt = y)\r
-\r
-\r
-typedef struct {\r
- char cl; /* closed flag */\r
- int n; /* number of members */\r
- int tsize; /* total size in bytes of struct */\r
- int align; /* alignment of structure */\r
- type_expr **type; /* member types */\r
- char **id; /* member names */\r
- int *offset; /* offsets to members data position*/\r
- int ntags; /* number of tags */\r
- type_expr **tag; /* tag types */\r
-}struct_t;\r
-\r
-\r
-typedef struct {\r
- unsigned short tok;\r
- int tab; /* name space table */\r
- char pflag; /* processed flag */\r
- char sclass; /* storage class */\r
- char typequal; /* type qualifier */\r
- struct symentry_t * sym;\r
- code_t code;\r
- type_expr * type;\r
- val_t val;\r
-}token_t;\r
-\r
-\r
-/*CUT symEntry*/\r
-typedef struct symentry_t {\r
- unsigned int entry; /* entry number */\r
- struct symentry_t *next; /* link to next symentry */\r
- char *id; /* pointer to identifier string */\r
- char sclass; /* storage class code */\r
- char typequal; /* type qualifier */\r
- char level; /* scope level */\r
- char nspace; /* name space identifier */\r
- char ass; /* used to flag assignment */\r
- type_expr * type; /* object type */\r
- val_t val; /* symbol value information */\r
- char *pname; /* previous file name */\r
- char *fname; /* file name pointer */\r
-}symentry_t;\r
-/*END CUT*/\r
-\r
-typedef struct {\r
- stab_t stab;\r
- \r
- int level;\r
- code_t CODE;\r
- eicstack_t ARgar; /* for garbage collection of AR units*/\r
- unsigned int ARsize,sp;\r
- AR_t *AR; /* static activation record */\r
- unsigned int LARsize,lsp;\r
- AR_t *LAR;\r
- extern_t *link;\r
- \r
-}environ_t;\r
-\r
-#define getenvcode(env) ((env)->CODE)\r
-\r
-typedef struct {\r
- int n; /* number of enumerators */\r
- int *eval; /* array of enumerator values */\r
- symentry_t **syms; /* list of symbol tabel entries */\r
-}enum_t;\r
-\r
-typedef struct {\r
- int hsize;\r
- symentry_t **htab;\r
-}hashtab_t;\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r