diff -r f2323f79252e -r 31553c22f318 stage4/generate_c/generate_c_typedecl.cc --- a/stage4/generate_c/generate_c_typedecl.cc Thu Nov 08 18:55:57 2012 +0100 +++ b/stage4/generate_c/generate_c_typedecl.cc Thu Nov 15 22:28:53 2012 +0100 @@ -100,6 +100,9 @@ return NULL; } + bool type_is_fb(symbol_c* type_decl) { + return search_base_type.type_is_fb(type_decl); + } /***************************/ /* B 0 - Programming Model */ @@ -343,19 +346,19 @@ current_basetypedeclaration = none_bd; if (array_is_derived) - s4o_incl.print("__DECLARE_DERIVED_TYPE("); + s4o_incl.print("__DECLARE_DERIVED_TYPE("); else - s4o_incl.print("__DECLARE_ARRAY_TYPE("); + s4o_incl.print("__DECLARE_ARRAY_TYPE("); current_type_name->accept(*basedecl); s4o_incl.print(","); current_basetypedeclaration = arraybasetypeincl_bd; symbol->array_spec_init->accept(*this); current_basetypedeclaration = none_bd; if (!array_is_derived) { - s4o_incl.print(","); - current_basetypedeclaration = arraysubrange_bd; - symbol->array_spec_init->accept(*this); - current_basetypedeclaration = none_bd; + s4o_incl.print(","); + current_basetypedeclaration = arraysubrange_bd; + symbol->array_spec_init->accept(*this); + current_basetypedeclaration = none_bd; } s4o_incl.print(")\n"); @@ -372,19 +375,19 @@ if (current_typedefinition == array_td) { switch (current_basetypedeclaration) { - case arrayderiveddeclaration_bd: - array_is_derived = dynamic_cast(symbol->array_specification) != NULL; - break; - default: - if (array_is_derived) - symbol->array_specification->accept(*basedecl); - else - symbol->array_specification->accept(*this); - break; + case arrayderiveddeclaration_bd: + array_is_derived = dynamic_cast(symbol->array_specification) != NULL; + break; + default: + if (array_is_derived) + symbol->array_specification->accept(*basedecl); + else + symbol->array_specification->accept(*this); + break; } } else { - symbol->array_specification->accept(*basedecl); + symbol->array_specification->accept(*basedecl); } return NULL; } @@ -439,11 +442,11 @@ 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"); + s4o.print("#define __CHECK_"); + current_type_name->accept(*this); + s4o.print(" __CHECK_"); + symbol->simple_spec_init->accept(*this); + s4o.print("\n"); } return NULL;