X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ast_t.h;h=10a96b83ef13af1fa1b0054deecf99ccb25d9b12;hb=1a01d49a5f4858ede8175221921be0e3719ea2a6;hp=d78f254eaf47186bdddd3b98ac21b961b4498b04;hpb=a71ea3f9bc8fb1f71cbaa7380ea2613986820388;p=cparser diff --git a/ast_t.h b/ast_t.h index d78f254..10a96b8 100644 --- a/ast_t.h +++ b/ast_t.h @@ -252,27 +252,25 @@ struct expression_base_t { * 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. */