summaryrefslogtreecommitdiff
path: root/include/chillAST/chillAST_def.hh
diff options
context:
space:
mode:
Diffstat (limited to 'include/chillAST/chillAST_def.hh')
-rw-r--r--include/chillAST/chillAST_def.hh158
1 files changed, 84 insertions, 74 deletions
diff --git a/include/chillAST/chillAST_def.hh b/include/chillAST/chillAST_def.hh
index 0e5832e..289b835 100644
--- a/include/chillAST/chillAST_def.hh
+++ b/include/chillAST/chillAST_def.hh
@@ -3,6 +3,7 @@
#ifndef _CHILLAST_DEF_H_
#define _CHILLAST_DEF_H_
+#include "chilldebug.h"
#define CHILL_INDENT_AMOUNT 2
@@ -15,76 +16,76 @@
#include <ir_enums.hh> // for IR_CONDITION_*
-#define CHILLAST_NODETYPE_FORSTMT CHILLAST_NODETYPE_LOOP
-#define CHILLAST_NODETYPE_TRANSLATIONUNIT CHILLAST_NODETYPE_SOURCEFILE
-
-enum CHILL_ASTNODE_TYPE {
- CHILLAST_NODETYPE_UNKNOWN = 0,
- CHILLAST_NODETYPE_SOURCEFILE,
- CHILLAST_NODETYPE_TYPEDEFDECL,
- CHILLAST_NODETYPE_VARDECL,
- // CHILLAST_NODETYPE_PARMVARDECL, not used any more
- CHILLAST_NODETYPE_FUNCTIONDECL,
- CHILLAST_NODETYPE_RECORDDECL, // struct or union (or class)
- CHILLAST_NODETYPE_MACRODEFINITION,
- CHILLAST_NODETYPE_COMPOUNDSTMT,
- CHILLAST_NODETYPE_LOOP, // AKA ForStmt
- CHILLAST_NODETYPE_TERNARYOPERATOR,
- CHILLAST_NODETYPE_BINARYOPERATOR,
- CHILLAST_NODETYPE_UNARYOPERATOR,
- CHILLAST_NODETYPE_ARRAYSUBSCRIPTEXPR,
- CHILLAST_NODETYPE_MEMBEREXPR, // structs/unions
- CHILLAST_NODETYPE_DECLREFEXPR,
- CHILLAST_NODETYPE_INTEGERLITERAL,
- CHILLAST_NODETYPE_FLOATINGLITERAL,
- CHILLAST_NODETYPE_IMPLICITCASTEXPR,
- CHILLAST_NODETYPE_RETURNSTMT,
- CHILLAST_NODETYPE_CALLEXPR,
- CHILLAST_NODETYPE_DECLSTMT,
- CHILLAST_NODETYPE_PARENEXPR,
- CHILLAST_NODETYPE_CSTYLECASTEXPR,
- CHILLAST_NODETYPE_CSTYLEADDRESSOF,
- CHILLAST_NODETYPE_IFSTMT,
- CHILLAST_NODETYPE_SIZEOF,
- CHILLAST_NODETYPE_MALLOC,
- CHILLAST_NODETYPE_FREE,
- CHILLAST_NODETYPE_PREPROCESSING, // comments, #define, #include, whatever else works
- CHILLAST_NODETYPE_NOOP, // NO OP
+#define CHILLAST_NODE_FORSTMT CHILLAST_NODE_LOOP
+#define CHILLAST_NODE_TRANSLATIONUNIT CHILLAST_NODE_SOURCEFILE
+
+enum CHILLAST_NODE_TYPE {
+ CHILLAST_NODE_UNKNOWN = 0,
+ CHILLAST_NODE_SOURCEFILE,
+ CHILLAST_NODE_TYPEDEFDECL,
+ CHILLAST_NODE_VARDECL,
+ // CHILLAST_NODE_PARMVARDECL, not used any more
+ CHILLAST_NODE_FUNCTIONDECL,
+ CHILLAST_NODE_RECORDDECL, // struct or union (or class)
+ CHILLAST_NODE_MACRODEFINITION,
+ CHILLAST_NODE_COMPOUNDSTMT,
+ CHILLAST_NODE_LOOP, // AKA ForStmt
+ CHILLAST_NODE_TERNARYOPERATOR,
+ CHILLAST_NODE_BINARYOPERATOR,
+ CHILLAST_NODE_UNARYOPERATOR,
+ CHILLAST_NODE_ARRAYSUBSCRIPTEXPR,
+ CHILLAST_NODE_MEMBEREXPR, // structs/unions
+ CHILLAST_NODE_DECLREFEXPR,
+ CHILLAST_NODE_INTEGERLITERAL,
+ CHILLAST_NODE_FLOATINGLITERAL,
+ CHILLAST_NODE_IMPLICITCASTEXPR,
+ CHILLAST_NODE_RETURNSTMT,
+ CHILLAST_NODE_CALLEXPR,
+ CHILLAST_NODE_DECLSTMT,
+ CHILLAST_NODE_PARENEXPR,
+ CHILLAST_NODE_CSTYLECASTEXPR,
+ CHILLAST_NODE_CSTYLEADDRESSOF,
+ CHILLAST_NODE_IFSTMT,
+ CHILLAST_NODE_SIZEOF,
+ CHILLAST_NODE_MALLOC,
+ CHILLAST_NODE_FREE,
+ CHILLAST_NODE_PREPROCESSING, // comments, #define, #include, whatever else works
+ CHILLAST_NODE_NOOP, // NO OP
// CUDA specific
- CHILLAST_NODETYPE_CUDAMALLOC,
- CHILLAST_NODETYPE_CUDAFREE,
- CHILLAST_NODETYPE_CUDAMEMCPY,
- CHILLAST_NODETYPE_CUDAKERNELCALL,
- CHILLAST_NODETYPE_CUDASYNCTHREADS,
- CHILLAST_NODETYPE_NULL // explicit non-statement
+ CHILLAST_NODE_CUDAMALLOC,
+ CHILLAST_NODE_CUDAFREE,
+ CHILLAST_NODE_CUDAMEMCPY,
+ CHILLAST_NODE_CUDAKERNELCALL,
+ CHILLAST_NODE_CUDASYNCTHREADS,
+ CHILLAST_NODE_NULL // explicit non-statement
// TODO
};
-enum CHILL_FUNCTION_TYPE {
- CHILL_FUNCTION_CPU = 0,
- CHILL_FUNCTION_GPU
+enum CHILLAST_FUNCTION_TYPE {
+ CHILLAST_FUNCTION_CPU = 0,
+ CHILLAST_FUNCTION_GPU
};
-enum CHILL_MEMBER_EXP_TYPE {
- CHILL_MEMBER_EXP_DOT = 0,
- CHILL_MEMBER_EXP_ARROW
+enum CHILLAST_MEMBER_EXP_TYPE {
+ CHILLAST_MEMBER_EXP_DOT = 0,
+ CHILLAST_MEMBER_EXP_ARROW
};
-enum CHILL_PREPROCESSING_TYPE {
- CHILL_PREPROCESSING_TYPEUNKNOWN = 0,
- CHILL_PREPROCESSING_COMMENT,
- CHILL_PREPROCESSING_POUNDDEFINE,
- CHILL_PREPROCESSING_POUNDINCLUDE,
- CHILL_PREPROCESSING_PRAGMA // unused so far
+enum CHILLAST_PREPROCESSING_TYPE {
+ CHILLAST_PREPROCESSING_TYPEUNKNOWN = 0,
+ CHILLAST_PREPROCESSING_COMMENT,
+ CHILLAST_PREPROCESSING_POUNDDEFINE,
+ CHILLAST_PREPROCESSING_POUNDINCLUDE,
+ CHILLAST_PREPROCESSING_PRAGMA // unused so far
};
-enum CHILL_PREPROCESSING_POSITION { // when tied to another statement
- CHILL_PREPROCESSING_POSITIONUNKNOWN = 0,
- CHILL_PREPROCESSING_LINEBEFORE, // previous line
- CHILL_PREPROCESSING_LINEAFTER, // next line
- CHILL_PREPROCESSING_TOTHERIGHT, // for this kind of comment, on same line
- CHILL_PREPROCESSING_IMMEDIATELYBEFORE // on same line
+enum CHILLAST_PREPROCESSING_POSITION { // when tied to another statement
+ CHILLAST_PREPROCESSING_POSITIONUNKNOWN = 0,
+ CHILLAST_PREPROCESSING_LINEBEFORE, // previous line
+ CHILLAST_PREPROCESSING_LINEAFTER, // next line
+ CHILLAST_PREPROCESSING_TOTHERIGHT, // for this kind of comment, on same line
+ CHILLAST_PREPROCESSING_IMMEDIATELYBEFORE // on same line
};
char *parseUnderlyingType(char *sometype);
@@ -95,15 +96,21 @@ bool isRestrict(const char *sometype);
char *splitTypeInfo(char *underlyingtype);
-char *ulhack(char *brackets); // change "1024UL" to "1024"
-char *restricthack(char *typeinfo); // remove __restrict__ , MODIFIES the argument!
+//! change "1024UL" to "1024"
+char *ulhack(char *brackets);
+//! remove __restrict__ , MODIFIES the argument!
+char *restricthack(char *typeinfo);
-extern const char *Chill_AST_Node_Names[]; // WARNING MUST BE KEPT IN SYNC WITH BELOW LIST
+// TODO phase out this one unnecessary as we can write a virtual function that does this
+extern const char *ChillAST_Node_Names[]; // WARNING MUST BE KEPT IN SYNC WITH BELOW LIST
// fwd declarations
-class chillAST_node; // the generic node. specific types derive from this
-class chillAST_NULL; // empty
-class chillAST_SourceFile; // ast for an entire source file (translationunit)
+//! the generic node, who specific types are derived from
+class chillAST_Node;
+//! empty node
+class chillAST_NULL;
+//! ast for an entire source file (translationunit)
+class chillAST_SourceFile;
class chillAST_TypedefDecl;
@@ -112,14 +119,18 @@ class chillAST_VarDecl;
//class chillAST_ParmVarDecl;
class chillAST_FunctionDecl;
-class chillAST_RecordDecl; // structs and unions (and classes?)
+//! structs and unions (and classes?)
+class chillAST_RecordDecl;
class chillAST_MacroDefinition;
-class chillAST_CompoundStmt; // just a bunch of other statements
-class chillAST_ForStmt; // AKA a LOOP
-class chillAST_TernaryOperator;
+//! A sequence of statements
+class chillAST_CompoundStmt;
+//! a For LOOP
+class chillAST_ForStmt;
+class chillAST_UnaryOperator;
class chillAST_BinaryOperator;
+class chillAST_TernaryOperator;
class chillAST_ArraySubscriptExpr;
@@ -131,8 +142,6 @@ class chillAST_IntegerLiteral;
class chillAST_FloatingLiteral;
-class chillAST_UnaryOperator;
-
class chillAST_ImplicitCastExpr;
class chillAST_CStyleCastExpr;
@@ -165,10 +174,11 @@ class chillAST_CudaSyncthreads;
class chillAST_Preprocessing;
+typedef std::vector<chillAST_Node *> chillAST_NodeList;
typedef std::vector<chillAST_VarDecl *> chillAST_SymbolTable; // typedef
typedef std::vector<chillAST_TypedefDecl *> chillAST_TypedefTable; // typedef
-bool symbolTableHasVariableNamed(chillAST_SymbolTable *table, const char *name); // fwd decl
+chillAST_VarDecl *symbolTableFindName(chillAST_SymbolTable *table, const char *name); // fwd decl
chillAST_VarDecl *symbolTableFindVariableNamed(chillAST_SymbolTable *table,
const char *name); // fwd decl TODO too many similar named functions
@@ -176,7 +186,7 @@ void printSymbolTable(chillAST_SymbolTable *st); // fwd decl
void printSymbolTableMoreInfo(chillAST_SymbolTable *st); // fwd decl
-chillAST_node *lessthanmacro(chillAST_node *left, chillAST_node *right); // fwd declaration
+chillAST_Node *lessthanmacro(chillAST_Node *left, chillAST_Node *right); // fwd declaration
chillAST_SymbolTable *addSymbolToTable(chillAST_SymbolTable *st, chillAST_VarDecl *vd); // fwd decl
chillAST_TypedefTable *addTypedefToTable(chillAST_TypedefTable *tt, chillAST_TypedefDecl *td); // fwd decl
@@ -187,7 +197,7 @@ void insertNewDeclAtLocationOfOldIfNeeded(chillAST_VarDecl *newdecl, chillAST_Va
chillAST_DeclRefExpr *buildDeclRefExpr(chillAST_VarDecl *);
-chillAST_FunctionDecl *findFunctionDecl(chillAST_node *node, const char *procname);
+chillAST_FunctionDecl *findFunctionDecl(chillAST_Node *node, const char *procname);
#endif