stage4/generate_c/generate_c_typedecl.cc
changeset 377 60b012b7793f
parent 350 2c3c4dc34979
child 547 dab341e80664
--- a/stage4/generate_c/generate_c_typedecl.cc	Fri Sep 09 12:03:15 2011 +0200
+++ b/stage4/generate_c/generate_c_typedecl.cc	Wed Sep 14 22:58:39 2011 +0200
@@ -70,10 +70,9 @@
       arrayderiveddeclaration_bd,
       arraybasetype_bd,
       arraybasetypeincl_bd,
-      arraysubrange_bd,
-      arraytranslateindex_bd
+      arraysubrange_bd
     } basetypedeclaration_t;
-    
+
     basetypedeclaration_t current_basetypedeclaration;
 
     void print_integer(unsigned int integer) {
@@ -373,21 +372,6 @@
   }
   s4o_incl.print(")\n");
 
-  if (search_base_type.type_is_subrange(symbol->identifier)) {
-	s4o.print("#define __CHECK_");
-	current_type_name->accept(*this);
-	s4o.print(" __CHECK_");
-	current_basetypedeclaration = arraybasetype_bd;
-	symbol->array_spec_init->accept(*this);
-	current_basetypedeclaration = none_bd;
-	s4o.print("\n");
-  }
-
-  current_basetypedeclaration = arraytranslateindex_bd;
-  symbol->array_spec_init->accept(*this);
-  current_basetypedeclaration = none_bd;
-  s4o.print("\n");
-
   current_type_name = NULL;
   current_typedefinition = none_td;
 
@@ -404,18 +388,6 @@
 	  case arrayderiveddeclaration_bd:
 	    array_is_derived = dynamic_cast<identifier_c *>(symbol->array_specification) != NULL;
 	    break;
-	  case arraytranslateindex_bd:
-	    if (!array_is_derived)
-		  symbol->array_specification->accept(*this);
-	    s4o.print("#define __");
-	    current_type_name->accept(*this);
-	    s4o.print("_TRANSIDX(row, index) __");
-	    if (array_is_derived)
-		   symbol->array_specification->accept(*this);
-	    else
-		   current_type_name->accept(*this);
-	    s4o.print("_TRANSIDX##row(index)");
-	    break;
 	  default:
 	    if (array_is_derived)
 		  symbol->array_specification->accept(*basedecl);
@@ -440,7 +412,6 @@
       symbol->non_generic_type_name->accept(*basedecl);
       break;
     case arraysubrange_bd:
-    case arraytranslateindex_bd:
       symbol->array_subrange_list->accept(*this);
       break;
     default:
@@ -452,19 +423,7 @@
 /* helper symbol for array_specification */
 /* array_subrange_list ',' subrange */
 void *visit(array_subrange_list_c *symbol) {
-  if (current_basetypedeclaration == arraytranslateindex_bd) {
-    for (int i = 0; i < symbol->n; i++) {
-      s4o.print("#define __");
-      current_type_name->accept(*this);
-      s4o.print("_TRANSIDX");
-      print_integer(i);
-      s4o.print("(index) (index) - ");
-      symbol->elements[i]->accept(*this);
-      s4o.print("\n");
-    }
-  }
-  else
-    print_list(symbol);
+  print_list(symbol);
   return NULL;
 }
 
@@ -491,6 +450,15 @@
   s4o_incl.print(",");
   symbol->simple_spec_init->accept(*this);
   s4o_incl.print(")\n");
+
+  if (search_base_type.type_is_subrange(symbol->simple_type_name)) {
+	s4o.print("#define __CHECK_");
+	current_type_name->accept(*this);
+	s4o.print(" __CHECK_");
+	symbol->simple_spec_init->accept(*this);
+	s4o.print("\n");
+  }
+
   return NULL;
 }