diff options
Diffstat (limited to 'includes/compiler/enode.h')
-rw-r--r-- | includes/compiler/enode.h | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/includes/compiler/enode.h b/includes/compiler/enode.h index 6e0ab2c..e12b1ae 100644 --- a/includes/compiler/enode.h +++ b/includes/compiler/enode.h @@ -75,6 +75,7 @@ typedef enum ENodeType { ESETCONST, ENEWEXCEPTION, ENEWEXCEPTIONARRAY, + EMYSTERY67, // no name??? EOBJLIST, EMEMBER, ETEMPLDEP, @@ -88,6 +89,15 @@ typedef enum ENodeType { } ENodeType; +struct EMemberInfo { + BClassList *path; + ENodeList *nodes; + void *x8; + void *xC; + void *x10; +}; + + struct ENodeList { ENodeList *next; ENode *node; @@ -116,7 +126,7 @@ typedef union ENodeUnion { ENodeList *args; TypeFunc *functype; } funccall; - ObjAccess objaccess; + //ObjAccess objaccess; struct { ENode *accessnode; ENode *mfpointer; @@ -135,7 +145,7 @@ typedef union ENodeUnion { struct { SInt32 size; char *data; - SInt32 segnum; + //SInt32 segnum; ?? char ispascal; char ispacked; } string; @@ -159,6 +169,10 @@ typedef union ENodeUnion { Object *objref; SInt32 offset; } addr; + struct { + NameSpaceObjectList *list; + TemplArg *templargs; + } objlist; void *inst; MemInitializer *ctorinit; Statement *stmt; @@ -187,7 +201,7 @@ typedef union ENodeUnion { HashNameNode *name; TemplArg *args; } qualtempl; - ObjAccess objaccess; + //ObjAccess objaccess; struct { ENode *expr; TStreamElement *token; @@ -197,7 +211,8 @@ typedef union ENodeUnion { ENode *expr; ENodeList *args; } funccall; - struct { + // have my doubts about this one + /*struct { Type *type; UInt32 qual; ENode *arraydim; @@ -205,7 +220,7 @@ typedef union ENodeUnion { ENodeList *initlist; Boolean is_global; Boolean has_init; - } nw; + } nw;*/ struct { ENode *expr; Boolean is_global; @@ -242,7 +257,7 @@ typedef union ENodeUnion { struct ENode { ENodeType type; UInt8 cost; - UInt16 flags; // &1, &2 correspond to quals + UInt16 flags; Boolean ignored; Boolean hascall; // void *loc; - might not be in pro7? @@ -254,9 +269,16 @@ struct ENode { enum { ENODE_FLAG_CONST = Q_CONST, ENODE_FLAG_VOLATILE = Q_VOLATILE, - ENODE_FLAG_QUALS = Q_CONST | Q_VOLATILE + ENODE_FLAG_QUALS = Q_CONST | Q_VOLATILE, + ENODE_FLAG_10 = 0x10, + ENODE_FLAG_80 = 0x80 }; +#define ENODE_IS(_enode, _etype) ( (_enode)->type == (_etype) ) +#define ENODE_IS2(_enode, _etype1, _etype2) ( ENODE_IS(_enode, (_etype1)) || ENODE_IS(_enode, (_etype2)) ) +#define ENODE_IS3(_enode, _etype1, _etype2, _etype3) ( ENODE_IS(_enode, (_etype1)) || ENODE_IS(_enode, (_etype2)) || ENODE_IS(_enode, (_etype3)) ) +#define ENODE_IS_RANGE(_enode, _lo, _hi) ( ((_enode)->type >= (_lo)) && ((_enode)->type <= (_hi)) ) + #ifdef __MWERKS__ #pragma options align=reset #endif |