X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ast.h;h=adb7e89f0fbcaf7b64bf45ac250b614c7767c9b4;hb=69bda5cf31457ea843bc4c6e3c13ed751a673b7f;hp=0f70f3b245ea318a2786c5e34927f231263adfb8;hpb=2beaa4f65961fe297663e1cec9e5632b7f3e1cba;p=cparser diff --git a/ast.h b/ast.h index 0f70f3b..adb7e89 100644 --- a/ast.h +++ b/ast.h @@ -99,13 +99,19 @@ void print_entity(const entity_t *entity); void change_indent(int delta); void *allocate_ast(size_t size); +typedef enum expression_classification_t { + EXPR_CLASS_VARIABLE, + EXPR_CLASS_ERROR, + EXPR_CLASS_CONSTANT +} expression_classification_t; + /** * Returns true if a given expression is a compile time * constant. §6.6 * * @param expression the expression to check */ -bool is_constant_initializer(const initializer_t *initializer); +expression_classification_t is_constant_initializer(const initializer_t *initializer); /** * Returns true if a given expression is a compile time @@ -113,13 +119,13 @@ bool is_constant_initializer(const initializer_t *initializer); * * @param expression the expression to check */ -bool is_constant_expression(const expression_t *expression); +expression_classification_t is_constant_expression(const expression_t *expression); /** * An object with a fixed but at compiletime unknown adress which will be known * at link/load time. */ -bool is_address_constant(const expression_t *expression); +expression_classification_t is_address_constant(const expression_t *expression); long fold_constant_to_int(const expression_t *expression); bool fold_constant_to_bool(const expression_t *expression);