stage4/generate_c/generate_c_typedecl.cc
changeset 221 c6aed7e5f070
parent 178 1622dc05c6ca
child 279 c0453b7f99df
--- a/stage4/generate_c/generate_c_typedecl.cc	Tue Dec 01 09:03:33 2009 +0100
+++ b/stage4/generate_c/generate_c_typedecl.cc	Wed Dec 02 16:11:01 2009 +0100
@@ -195,13 +195,13 @@
 void *visit(subrange_type_declaration_c *symbol) {
   TRACE("subrange_type_declaration_c");  
   
-  s4o_incl.print("typedef ");
+  s4o_incl.print("__DECLARE_DERIVED_TYPE(");
   current_basetypedeclaration = subrangebasetype_bd;
   symbol->subrange_spec_init->accept(*this);
   current_basetypedeclaration = none_bd;
-  s4o_incl.print(" ");
+  s4o_incl.print(", ");
   symbol->subrange_type_name->accept(*basedecl);
-  s4o_incl.print(";\n");
+  s4o_incl.print(")\n");
   
   current_type_name = symbol->subrange_type_name;
   
@@ -340,16 +340,17 @@
 void *visit(array_type_declaration_c *symbol) {
   TRACE("array_type_declaration_c");
   
-  s4o_incl.print("typedef ");
+  s4o_incl.print("__DECLARE_ARRAY_TYPE(");
   current_basetypedeclaration = arraybasetypeincl_bd;
   symbol->array_spec_init->accept(*this);
   current_basetypedeclaration = none_bd;
-  s4o_incl.print(" ");
+  s4o_incl.print(",");
   symbol->identifier->accept(*basedecl);
+  s4o_incl.print(",");
   current_basetypedeclaration = arraysubrange_bd;
   symbol->array_spec_init->accept(*this);
   current_basetypedeclaration = none_bd;
-  s4o_incl.print(";\n");
+  s4o_incl.print(")\n");
   
   if (search_base_type.type_is_subrange(symbol->identifier)) {
     s4o.print("#define __CHECK_");
@@ -443,11 +444,11 @@
 void *visit(simple_type_declaration_c *symbol) {
   TRACE("simple_type_declaration_c");
 
-  s4o_incl.print("typedef ");
+  s4o_incl.print("__DECLARE_DERIVED_TYPE");
   symbol->simple_spec_init->accept(*this);
-  s4o_incl.print(" ");
+  s4o_incl.print(",");
   symbol->simple_type_name->accept(*basedecl);
-  s4o_incl.print(";\n");
+  s4o_incl.print(");\n");
   return NULL;
 }
 
@@ -515,11 +516,11 @@
 void *visit(structure_type_declaration_c *symbol) {
   TRACE("structure_type_declaration_c");
 
-  s4o_incl.print("typedef ");
+  s4o_incl.print("__DECLARE_STRUCT_TYPE(");
   symbol->structure_specification->accept(*this);
-  s4o_incl.print(" ");
+  s4o_incl.print(",");
   symbol->structure_type_name->accept(*basedecl);
-  s4o_incl.print(";\n");
+  s4o_incl.print(");\n");
   return NULL;
 }