stage4/generate_c/generate_c_vardecl.cc
changeset 226 29f8ffc203c1
parent 221 c6aed7e5f070
child 230 816846a8d66b
--- a/stage4/generate_c/generate_c_vardecl.cc	Sat Dec 05 18:35:38 2009 +0100
+++ b/stage4/generate_c/generate_c_vardecl.cc	Sat Dec 05 18:38:53 2009 +0100
@@ -588,9 +588,9 @@
       
       for (i = 0; i < symbol->n; i++) {
         s4o.print(s4o.indent_spaces);
-        print_variable_prefix();
         s4o.print(SET_VAR);
         s4o.print("(");
+        print_variable_prefix();
         symbol->elements[i]->accept(*this);
         s4o.print(",temp);\n");
       }
@@ -1506,7 +1506,13 @@
 #endif
 
 void *visit(array_initial_elements_list_c *symbol) {
-  s4o.print(";// array initialisation");
+  if (wanted_varformat == localinit_vf) {
+	generate_c_array_initialization_c *array_initialization = new generate_c_array_initialization_c(&s4o);
+	array_initialization->init_array_dimensions(this->current_var_type_symbol);
+	array_initialization->current_mode = generate_c_array_initialization_c::initializationvalue_am;
+	array_initialization->init_array_values(this->current_var_init_symbol);
+	delete array_initialization;
+  }
   return NULL;
 }
 
@@ -1542,6 +1548,16 @@
   return NULL;
 }
 
+void *visit(structure_element_initialization_list_c *symbol) {
+  if (wanted_varformat == localinit_vf) {
+    generate_c_structure_initialization_c *structure_initialization = new generate_c_structure_initialization_c(&s4o);
+    structure_initialization->init_structure_default(this->current_var_type_symbol);
+    structure_initialization->current_mode = generate_c_structure_initialization_c::initializationvalue_sm;
+    this->current_var_init_symbol->accept(*structure_initialization);
+	delete structure_initialization;
+  }
+  return NULL;
+}
 
 /* VAR [CONSTANT] var_init_decl_list END_VAR */
 /* option -> may be NULL ! */