* 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 {
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;
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.
*/