X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ast_t.h;h=10a96b83ef13af1fa1b0054deecf99ccb25d9b12;hb=516b4ed5ac675f2d94becf9fa0815ddc65f637ac;hp=371295ec816656ce182ce7c5bb3c43f80d395507;hpb=ff5b9dd9d29a3f0acdbfdd10f6d2eece471ed289;p=cparser diff --git a/ast_t.h b/ast_t.h index 371295e..10a96b8 100644 --- a/ast_t.h +++ b/ast_t.h @@ -69,7 +69,6 @@ typedef enum expression_kind_t { EXPR_LITERAL_INTEGER, EXPR_LITERAL_FLOATINGPOINT, EXPR_LITERAL_CHARACTER, - EXPR_LITERAL_WIDE_CHARACTER, EXPR_LITERAL_MS_NOOP, /**< MS __noop extension */ EXPR_STRING_LITERAL, EXPR_COMPOUND_LITERAL, @@ -229,8 +228,6 @@ typedef enum funcname_kind_t { EXPR_LITERAL_BOOLEAN: \ case EXPR_LITERAL_INTEGER: \ case EXPR_LITERAL_FLOATINGPOINT: \ - case EXPR_LITERAL_CHARACTER: \ - case EXPR_LITERAL_WIDE_CHARACTER: \ case EXPR_LITERAL_MS_NOOP /** @@ -252,27 +249,28 @@ struct expression_base_t { }; /** - * integer/float constants, character and string literals + * integer, float and boolean constants */ struct literal_expression_t { - expression_base_t base; - string_t value; - string_t suffix; + expression_base_t base; + string_t value; + char const *suffix; /**< Start of the suffix in value. */ /* ast2firm data */ - ir_tarval *target_value; + ir_tarval *target_value; }; +/** + * string and character literals + */ struct string_literal_expression_t { - expression_base_t base; - string_encoding_t encoding; - string_t value; + expression_base_t base; + string_t value; }; struct funcname_expression_t { expression_base_t base; funcname_kind_t kind; - string_t value; /**< the value once assigned. */ }; struct compound_literal_expression_t { @@ -425,7 +423,6 @@ typedef enum initializer_kind_t { INITIALIZER_VALUE, INITIALIZER_LIST, INITIALIZER_STRING, - INITIALIZER_WIDE_STRING, INITIALIZER_DESIGNATOR } initializer_kind_t; @@ -444,16 +441,6 @@ struct initializer_list_t { initializer_t *initializers[]; }; -struct initializer_string_t { - initializer_base_t base; - string_t string; -}; - -struct initializer_wide_string_t { - initializer_base_t base; - string_t string; -}; - struct initializer_designator_t { initializer_base_t base; designator_t *designator; @@ -464,11 +451,16 @@ union initializer_t { initializer_base_t base; initializer_value_t value; initializer_list_t list; - initializer_string_t string; - initializer_wide_string_t wide_string; initializer_designator_t designator; }; +static inline string_literal_expression_t const *get_init_string(initializer_t const *const init) +{ + assert(init->kind == INITIALIZER_STRING); + assert(init->value.value->kind == EXPR_STRING_LITERAL); + return &init->value.value->string_literal; +} + /** * The statement kinds. */