602 element_value = (symbol_c *)current_element_type->accept(*type_initial_value_c::instance()); |
602 element_value = (symbol_c *)current_element_type->accept(*type_initial_value_c::instance()); |
603 } |
603 } |
604 |
604 |
605 if (element_value == NULL) ERROR; |
605 if (element_value == NULL) ERROR; |
606 |
606 |
607 element_value->accept(*this); |
607 structure_element_initialization_list_c *structure_element_initialization_list = dynamic_cast<structure_element_initialization_list_c *>(element_value); |
|
608 |
|
609 if (structure_element_initialization_list != NULL) { |
|
610 generate_c_structure_initialization_c *structure_initialization = new generate_c_structure_initialization_c(&s4o); |
|
611 structure_initialization->set_variable_prefix(get_variable_prefix()); |
|
612 structure_initialization->init_structure_default(current_element_type); |
|
613 structure_initialization->current_mode = generate_c_structure_initialization_c::initializationvalue_sm; |
|
614 element_value->accept(*structure_initialization); |
|
615 delete structure_initialization; |
|
616 } |
|
617 else |
|
618 element_value->accept(*this); |
608 } |
619 } |
609 s4o.print("}"); |
620 s4o.print("}"); |
610 return NULL; |
621 return NULL; |
611 } |
622 } |
612 |
623 |
613 /* helper symbol for array_initialization */ |
624 /* helper symbol for array_initialization */ |
614 /* array_initial_elements_list ',' array_initial_elements */ |
625 /* array_initial_elements_list ',' array_initial_elements */ |
615 void *visit(array_initial_elements_list_c *symbol) { |
626 void *visit(array_initial_elements_list_c *symbol) { |
616 generate_c_array_initialization_c *array_initialization = new generate_c_array_initialization_c(&s4o); |
627 generate_c_array_initialization_c *array_initialization = new generate_c_array_initialization_c(&s4o); |
617 array_initialization->set_variable_prefix(get_variable_prefix()); |
628 array_initialization->set_variable_prefix(get_variable_prefix()); |