+typedef enum {
+ NAMESPACE_NORMAL,
+ NAMESPACE_STRUCT,
+ NAMESPACE_UNION,
+ NAMESPACE_ENUM,
+ NAMESPACE_LABEL
+} namespace_t;
+
+typedef enum {
+ INITIALIZER_VALUE,
+ INITIALIZER_LIST,
+ INITIALIZER_STRING,
+ INITIALIZER_COUNT
+} initializer_type_t;
+
+struct initializer_base_t {
+ initializer_type_t type;
+};
+
+struct initializer_value_t {
+ initializer_base_t initializer;
+ expression_t *value;
+};
+
+struct initializer_list_t {
+ initializer_base_t initializer;
+ size_t len;
+ initializer_t *initializers[];
+};
+
+struct initializer_string_t {
+ initializer_base_t initializer;
+ const char *string;
+};
+
+union initializer_t {
+ initializer_type_t type;
+ initializer_base_t base;
+ initializer_value_t value;
+ initializer_list_t list;
+ initializer_string_t string;
+};
+