📄 datastruct.h
字号:
/* datastruct.h * * (C) Copyright May 7 1995, Edmond J. Breen. * ALL RIGHTS RESERVED. * This code may be copied for personal, non-profit use only. * */#ifndef DATASTRUCT_H#define DATASTRUCT_H#if !defined(_eic_ptr) && !defined(_EiC)#define _eic_ptrtypedef struct {void *p, *sp, *ep;} ptr_t;#endif#include "stab.h"#include "eicval.h"typedef struct { int n; val_t * val;}eicstack_t;typedef struct extern_t { char * name; type_expr * type; int n; unsigned *loc; struct extern_t *nxt;} extern_t;/* methods for extern_t */#define crt_extern() xcalloc(sizeof(extern_t),1)#define getExtName(x) ((x)->name)#define setExtName(x,y) ((x)->name = y)#define getExtType(x) ((x)->type)#define setExtType(x,y) ((x)->type = y) #define getExtNext(x) ((x)->nxt)#define setExtNext(x,y) ((x)->nxt = y)typedef struct { char cl; /* closed flag */ int n; /* number of members */ int tsize; /* total size in bytes of struct */ int align; /* alignment of structure */ type_expr **type; /* member types */ char **id; /* member names */ int *offset; /* offsets to members data position*/ int ntags; /* number of tags */ type_expr **tag; /* tag types */}struct_t;typedef struct { unsigned short Tok; int Tab; /* name space table */ unsigned char Pflag; /* processed flag */ unsigned char Sclass; /* storage class */ unsigned char Typequal; /* type qualifier */ struct symentry_t * Sym; code_t Code; type_expr * Type; val_t Val;}token_t;/*****#define getTokenVal(x) ((x).Val)#define setTokenVal(x,y) ((x).Val = (y))#define getTokenType(x) ((x).Type)#define setTokenType(x,y) ((x).Type = (y))#define getTokenCode(x) ((x).Code)#define setTokenCode(x,y) ((x).Code = (y))#define getTokenSym(x) ((x).Sym)#define setTokenSym(x,y) ((x).Sym = (y))#define getTokenTypequal(x) ((x).Typequal)#define setTokenTypequal(x,y) ((x).Typequal = (y))#define getTokenSclass(x) ((x).Sclass)#define setTokenSclass(x,y) ((x).Sclass = (y))#define getTokenPflag(x) ((x).Pflag)#define setTokenPflag(x,y) ((x).Pflag = (y))#define getTokenTab(x) ((x).Tab)#define setTokenTab(x,y) ((x).Tab = (y))#define getTokenTok(x) ((x).Tok)#define setTokenTok(x,y) ((x).Tok = (y))********//*CUT symEntry*/typedef struct symentry_t { int tag; /* maker */ unsigned int entry; /* entry number */ struct symentry_t *next; /* link to next symentry */ char *id; /* pointer to identifier string */ unsigned char sclass; /* storage class code */ unsigned char typequal; /* type qualifier */ unsigned char level; /* scope level */ unsigned char nspace; /* name space identifier */ char ass; /* used to flag assignment */ type_expr * type; /* object type */ val_t val; /* symbol value information */ char *pname; /* previous file name */ char *fname; /* file name pointer */#if 0 int calls; /* number of local references made */ int Nref; struct symentry_t **ref; /* references */#endif}symentry_t;/*END CUT*/typedef struct { stab_t stab; code_t CODE; eicstack_t ARgar; /* for garbage collection of AR units*/ unsigned int ARsize,sp; AR_t *AR; /* static activation record */ unsigned int LARsize,lsp; AR_t *LAR; extern_t *link; }environ_t;#define getenvcode(env) ((env)->CODE)typedef struct { int n; /* number of enumerators */ int *eval; /* array of enumerator values */ symentry_t **syms; /* list of symbol tabel entries */}enum_t;typedef struct { int hsize; symentry_t **htab;}hashtab_t;#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -