summaryrefslogtreecommitdiff
path: root/includes/compiler/enode.h
diff options
context:
space:
mode:
Diffstat (limited to 'includes/compiler/enode.h')
-rw-r--r--includes/compiler/enode.h36
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