diff -r 36d05588f91b -r 29f8ffc203c1 stage4/generate_c/generate_c_vardecl.cc --- 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 ! */