⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datastruct.h

📁 guide and some example with visualC++
💻 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 + -