summaryrefslogtreecommitdiff
path: root/include/chillAST/chillASTs.hh
diff options
context:
space:
mode:
Diffstat (limited to 'include/chillAST/chillASTs.hh')
-rw-r--r--include/chillAST/chillASTs.hh36
1 files changed, 14 insertions, 22 deletions
diff --git a/include/chillAST/chillASTs.hh b/include/chillAST/chillASTs.hh
index b2cea3a..a30a420 100644
--- a/include/chillAST/chillASTs.hh
+++ b/include/chillAST/chillASTs.hh
@@ -364,7 +364,6 @@ public:
class chillAST_FunctionDecl : public chillAST_Node {
private:
- chillAST_CompoundStmt *body; // always a compound statement?
CHILLAST_FUNCTION_TYPE function_type; // CHILLAST_FUNCTION_CPU or CHILLAST_FUNCTION_GPU
bool externfunc; // function is external
bool builtin; // function is a builtin
@@ -405,12 +404,9 @@ public:
void addDecl(chillAST_VarDecl *vd); // just adds to symbol table?? TODO
- void addChild(chillAST_Node *node); // special because inserts into BODY
- void insertChild(int i, chillAST_Node *node); // special because inserts into BODY
-
- void setBody(chillAST_Node *bod);
+ void setBody(chillAST_Node *bod) { if (bod->isCompoundStmt()) { children[0] = bod; bod->setParent(this); }}
- chillAST_CompoundStmt *getBody() { return (body); }
+ chillAST_CompoundStmt *getBody() { return (chillAST_CompoundStmt*)children[0]; }
void gatherVarDecls(std::vector<chillAST_VarDecl *> &decls);
@@ -435,10 +431,7 @@ public:
chillAST_Node *constantFold();
- void replaceChild(chillAST_Node *old, chillAST_Node *newchild) {
- body->replaceChild(old, newchild);
- }
-}; // end FunctionDecl
+}; // end FunctionDecl
class chillAST_SourceFile : public chillAST_Node {
// TODO included source file
@@ -493,6 +486,7 @@ public:
};
+//! A Macro definition
class chillAST_MacroDefinition : public chillAST_Node {
private:
chillAST_Node *body; // rhs always a compound statement?
@@ -538,14 +532,15 @@ public:
};
class chillAST_ForStmt : public chillAST_Node {
-public:
- virtual CHILLAST_NODE_TYPE getType() { return CHILLAST_NODE_FORSTMT; }
-
- // variables that are special for this type of node
+private:
chillAST_Node *init;
chillAST_Node *cond;
chillAST_Node *incr;
chillAST_Node *body; // always a compoundstmt?
+public:
+ virtual CHILLAST_NODE_TYPE getType() { return CHILLAST_NODE_FORSTMT; }
+
+ // variables that are special for this type of node
IR_CONDITION_TYPE conditionoperator; // from ir_code.hh
bool hasSymbolTable() { return true; };
@@ -561,20 +556,17 @@ public:
void removeSyncComment();
chillAST_Node *getInit() { return init; };
+ void setInit(chillAST_Node *i) { init = i; i->parent = this; }
chillAST_Node *getCond() { return cond; };
+ void setCond(chillAST_Node *c) { cond = c; c->parent = this; }
chillAST_Node *getInc() { return incr; };
+ void setInc(chillAST_Node *i) { incr = i; i->parent = this; }
- chillAST_Node *
- getBody() { //fprintf(stderr, "chillAST_ForStmt::getBody(), returning a chillAST_Node of type %s\n", body->getTypeString());
- return body;
- };
+ chillAST_Node *getBody() { return body; };
+ void setBody(chillAST_Node *b) { body = b; b->parent = this; };
- void setBody(chillAST_Node *b) {
- body = b;
- b->parent = this;
- };
bool isNotLeaf() { return true; };