--- 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<identifier_c *>(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<identifier_c *>(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;