]> de.git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - ast.h
removing ast_expression_common.variadic, adding ast_expression_common.flags, added...
[xonotic/gmqcc.git] / ast.h
diff --git a/ast.h b/ast.h
index a7fd7b8a7f1cf133969de4342de56faf5093c54c..95b8962ddab15724979ba111db0e94368117b329 100644 (file)
--- a/ast.h
+++ b/ast.h
@@ -131,7 +131,7 @@ typedef struct
     /* arrays get a member-count */
     size_t                  count;
     ast_value*             *params;
-    bool                    variadic;
+    uint32_t                flags;
     /* The codegen functions should store their output values
      * so we can call it multiple times without re-evaluating.
      * Store lvalue and rvalue seperately though. So that
@@ -140,6 +140,8 @@ typedef struct
     ir_value               *outl;
     ir_value               *outr;
 } ast_expression_common;
+#define AST_FLAG_VARIADIC     (1<<0)
+#define AST_FLAG_NORETURN     (1<<1)
 
 /* Value
  *
@@ -169,6 +171,7 @@ struct ast_value_s
         const char   *vstring;
         int           ventity;
         ast_function *vfunc;
+        ast_value    *vfield;
     } constval;
 
     /* usecount for the parser */
@@ -572,7 +575,7 @@ bool ast_block_set_type(ast_block*, ast_expression *from);
 bool ast_block_codegen(ast_block*, ast_function*, bool lvalue, ir_value**);
 void ast_block_collect(ast_block*, ast_expression*);
 
-void ast_block_add_expr(ast_block*, ast_expression*);
+bool GMQCC_WARN ast_block_add_expr(ast_block*, ast_expression*);
 
 /* Function
  *
@@ -625,6 +628,7 @@ void ast_function_delete(ast_function*);
 const char* ast_function_label(ast_function*, const char *prefix);
 
 bool ast_function_codegen(ast_function *self, ir_builder *builder);
+bool ast_generate_accessors(ast_value *asvalue, ir_builder *ir);
 
 /* Expression union
  */