]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - ast.h
renaming ast_function::vtype to function_type
[xonotic/gmqcc.git] / ast.h
diff --git a/ast.h b/ast.h
index 162704783ff7163d92c97c090db84d6f45cfc446..dcfffbafeee7d5fad6b56db53c9b7947fdb18b48 100644 (file)
--- a/ast.h
+++ b/ast.h
@@ -93,7 +93,7 @@ enum {
     TYPE_ast_state        /* 22 */
 };
 
-#define ast_istype(x, t) ( ((ast_node*)x)->nodetype == (TYPE_##t) )
+#define ast_istype(x, t) ( ((ast_node*)x)->node_type == (TYPE_##t) )
 #define ast_ctx(node) (((ast_node*)(node))->context)
 #define ast_side_effects(node) (((ast_node*)(node))->side_effects)
 
@@ -106,20 +106,20 @@ struct ast_node
     lex_ctx_t context;
     /* I don't feel comfortable using keywords like 'delete' as names... */
     ast_node_delete *destroy;
-    int              nodetype;
-    /* keep: if a node contains this node, 'keep'
+    int              node_type;
+    /* keep_node: if a node contains this node, 'keep_node'
      * prevents its dtor from destroying this node as well.
      */
-    bool             keep;
+    bool             keep_node;
     bool             side_effects;
 };
 
 #define ast_delete(x) (*( ((ast_node*)(x))->destroy ))((ast_node*)(x))
-#define ast_unref(x) do                \
-{                                      \
-    if (! (((ast_node*)(x))->keep) ) { \
-        ast_delete(x);                 \
-    }                                  \
+#define ast_unref(x) do                     \
+{                                           \
+    if (! (((ast_node*)(x))->keep_node) ) { \
+        ast_delete(x);                      \
+    }                                       \
 } while(0)
 
 /* Expression interface
@@ -141,10 +141,9 @@ typedef bool ast_expression_codegen(ast_expression*,
  * type `expression`, so the ast_ident's codegen would search for
  * variables through the environment (or functions, constants...).
  */
-struct ast_expression {
+struct ast_expression : ast_node {
     ast_expression() {}
 
-    ast_node                node;
     ast_expression_codegen *codegen;
     int                     vtype;
     ast_expression         *next;
@@ -404,12 +403,12 @@ ast_store* ast_store_new(lex_ctx_t ctx, int op,
 
 /* If
  *
- * A general 'if then else' statement, either side can be NULL and will
- * thus be omitted. It is an error for *both* cases to be NULL at once.
+ * A general 'if then else' statement, either side can be nullptr and will
+ * thus be omitted. It is an error for *both* cases to be nullptr at once.
  *
  * During its 'codegen' it'll be changing the ast_function's block.
  *
- * An if is also an "expression". Its codegen will put NULL into the
+ * An if is also an "expression". Its codegen will put nullptr into the
  * output field though. For ternary expressions an ast_ternary will be
  * added.
  */
@@ -431,7 +430,7 @@ ast_ifthen* ast_ifthen_new(lex_ctx_t ctx, ast_expression *cond, ast_expression *
  * a PHI node.
  *
  * The other difference is that in an ast_ternary, NEITHER side
- * must be NULL, there's ALWAYS an else branch.
+ * must be nullptr, there's ALWAYS an else branch.
  *
  * This is the only ast_node beside ast_value which contains
  * an ir_value. Theoretically we don't need to remember it though.
@@ -625,7 +624,7 @@ struct ast_function
 {
     ast_node node;
 
-    ast_value *vtype;
+    ast_value  *function_type;
     const char *name;
 
     int builtin;