Added documentation for -std=c90.
[cparser] / ast_t.h
diff --git a/ast_t.h b/ast_t.h
index 9fa8dfa..10a96b8 100644 (file)
--- a/ast_t.h
+++ b/ast_t.h
@@ -252,21 +252,20 @@ 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 {
@@ -442,12 +441,6 @@ struct initializer_list_t {
        initializer_t      *initializers[];
 };
 
-struct initializer_string_t {
-       initializer_base_t base;
-       string_encoding_t  encoding;
-       string_t           string;
-};
-
 struct initializer_designator_t {
        initializer_base_t  base;
        designator_t       *designator;
@@ -458,10 +451,16 @@ union initializer_t {
        initializer_base_t        base;
        initializer_value_t       value;
        initializer_list_t        list;
-       initializer_string_t      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.
  */