From 6145ecf7e0bd93d654bbe582a7a3cb4416612998 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Sat, 28 Apr 2012 17:27:06 +0200 Subject: [PATCH] ast_binary takes 2 expressions, not 2 values, ast_store takes a value and and expression for now until we support pointers, also: dropped the 'keep' param from ast_value_new, values are always to be stored somewhere to be deleted independently from their uses --- ast.c | 8 ++++---- ast.h | 20 ++++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ast.c b/ast.c index 773c498..ae58b9d 100644 --- a/ast.c +++ b/ast.c @@ -54,12 +54,12 @@ static void ast_expression_init(ast_expression *self, self->expression.codegen = codegen; } -ast_value* ast_value_new(lex_ctx ctx, const char *name, int t, bool keep) +ast_value* ast_value_new(lex_ctx ctx, const char *name, int t) { ast_instantiate(ast_value, ctx, ast_value_delete); ast_expression_init((ast_expression*)self, (ast_expression_codegen*)&ast_value_codegen); - self->expression.node.keep = keep; + self->expression.node.keep = true; /* keep */ self->name = name ? util_strdup(name) : NULL; self->vtype = t; @@ -113,7 +113,7 @@ bool ast_value_set_name(ast_value *self, const char *name) } ast_binary* ast_binary_new(lex_ctx ctx, int op, - ast_value* left, ast_value* right) + ast_expression* left, ast_expression* right) { ast_instantiate(ast_binary, ctx, ast_binary_delete); ast_expression_init((ast_expression*)self, (ast_expression_codegen*)&ast_binary_codegen); @@ -133,7 +133,7 @@ void ast_binary_delete(ast_binary *self) } ast_store* ast_store_new(lex_ctx ctx, int op, - ast_value *dest, ast_value *source) + ast_value *dest, ast_expression *source) { ast_instantiate(ast_store, ctx, ast_store_delete); ast_expression_init((ast_expression*)self, (ast_expression_codegen*)&ast_store_codegen); diff --git a/ast.h b/ast.h index eb456b1..b79ea96 100644 --- a/ast.h +++ b/ast.h @@ -106,7 +106,7 @@ struct ast_value_s */ MEM_VECTOR_MAKE(ast_value*, params); }; -ast_value* ast_value_new(lex_ctx ctx, const char *name, int qctype, bool keep); +ast_value* ast_value_new(lex_ctx ctx, const char *name, int qctype); /* This will NOT delete an underlying ast_function */ void ast_value_delete(ast_value*); @@ -122,14 +122,14 @@ struct ast_binary_s { ast_expression_common expression; - int op; - ast_value *left; - ast_value *right; + int op; + ast_expression *left; + ast_expression *right; }; ast_binary* ast_binary_new(lex_ctx ctx, int op, - ast_value *left, - ast_value *right); + ast_expression *left, + ast_expression *right); void ast_binary_delete(ast_binary*); /* hmm, seperate functions? @@ -145,12 +145,12 @@ bool ast_binary_codegen(ast_binary*, ast_function*, ir_value**); struct ast_store_s { ast_expression_common expression; - int op; - ast_value *dest; - ast_value *source; + int op; + ast_value *dest; /* When we add pointers this might have to change to expression */ + ast_expression *source; }; ast_store* ast_store_new(lex_ctx ctx, int op, - ast_value *d, ast_value *s); + ast_value *d, ast_expression *s); void ast_store_delete(ast_store*); bool ast_store_codegen(ast_store*, ast_function*, ir_value**); -- 2.39.2