stage4/generate_c/generate_c_vardecl.cc
changeset 164 a0679c78143a
parent 160 59d58f5e6caa
child 189 7ca02034c4f6
equal deleted inserted replaced
163:61f65dd6eeb9 164:a0679c78143a
   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());