stage4/generate_c/generate_c_vardecl.cc
changeset 164 a0679c78143a
parent 160 59d58f5e6caa
child 189 7ca02034c4f6
--- a/stage4/generate_c/generate_c_vardecl.cc	Sun Jan 04 17:23:06 2009 +0100
+++ b/stage4/generate_c/generate_c_vardecl.cc	Fri Jan 09 17:05:24 2009 +0100
@@ -604,12 +604,23 @@
         
         if (element_value == NULL) ERROR;
         
-        element_value->accept(*this);
+        structure_element_initialization_list_c *structure_element_initialization_list = dynamic_cast<structure_element_initialization_list_c *>(element_value);
+            
+        if (structure_element_initialization_list != NULL) {
+          generate_c_structure_initialization_c *structure_initialization = new generate_c_structure_initialization_c(&s4o);
+          structure_initialization->set_variable_prefix(get_variable_prefix());
+          structure_initialization->init_structure_default(current_element_type);
+          structure_initialization->current_mode = generate_c_structure_initialization_c::initializationvalue_sm;
+          element_value->accept(*structure_initialization);
+          delete structure_initialization;
+        }
+        else
+          element_value->accept(*this);
       }
       s4o.print("}");
       return NULL;
     }
-
+    
     /* helper symbol for array_initialization */
     /* array_initial_elements_list ',' array_initial_elements */
     void *visit(array_initial_elements_list_c *symbol) {