stage4/generate_c/generate_location_list.cc
changeset 718 a9f8cc778444
parent 279 c0453b7f99df
equal deleted inserted replaced
717:44f74fad2cc0 718:a9f8cc778444
    28     stage4out_c &s4o;
    28     stage4out_c &s4o;
    29 
    29 
    30   private:
    30   private:
    31     symbol_c *current_var_type_symbol;
    31     symbol_c *current_var_type_symbol;
    32     generate_c_base_c *generate_c_base;
    32     generate_c_base_c *generate_c_base;
    33     search_base_type_c search_base_type;
       
    34     
    33     
    35   public:
    34   public:
    36     generate_location_list_c(stage4out_c *s4o_ptr): s4o(*s4o_ptr) {
    35     generate_location_list_c(stage4out_c *s4o_ptr): s4o(*s4o_ptr) {
    37       generate_c_base = new generate_c_base_c(s4o_ptr);
    36       generate_c_base = new generate_c_base_c(s4o_ptr);
    38       current_var_type_symbol = NULL;
    37       current_var_type_symbol = NULL;
   112     void *visit(located_var_decl_c *symbol) {
   111     void *visit(located_var_decl_c *symbol) {
   113         current_var_type_symbol = spec_init_sperator_c::get_spec(symbol->located_var_spec_init);
   112         current_var_type_symbol = spec_init_sperator_c::get_spec(symbol->located_var_spec_init);
   114         if (current_var_type_symbol == NULL)
   113         if (current_var_type_symbol == NULL)
   115           ERROR;
   114           ERROR;
   116         
   115         
   117         current_var_type_symbol = (symbol_c *)(current_var_type_symbol->accept(search_base_type));
   116         current_var_type_symbol = search_base_type_c::get_basetype_decl(current_var_type_symbol);
   118         if (current_var_type_symbol == NULL)
   117         if (current_var_type_symbol == NULL)
   119           ERROR;
   118           ERROR;
   120         
   119         
   121         symbol->location->accept(*this);
   120         symbol->location->accept(*this);
   122         
   121         
   130     void *visit(global_var_decl_c *symbol) {
   129     void *visit(global_var_decl_c *symbol) {
   131         current_var_type_symbol = spec_init_sperator_c::get_spec(symbol->type_specification);
   130         current_var_type_symbol = spec_init_sperator_c::get_spec(symbol->type_specification);
   132         if (current_var_type_symbol == NULL)
   131         if (current_var_type_symbol == NULL)
   133           ERROR;
   132           ERROR;
   134         
   133         
   135         current_var_type_symbol = (symbol_c *)(current_var_type_symbol->accept(search_base_type));
   134         current_var_type_symbol = search_base_type_c::get_basetype_decl(current_var_type_symbol);
   136         if (current_var_type_symbol == NULL)
   135         if (current_var_type_symbol == NULL)
   137           ERROR;
   136           ERROR;
   138         
   137         
   139         symbol->global_var_spec->accept(*this);
   138         symbol->global_var_spec->accept(*this);
   140         
   139