diff -r 4798bd4739d0 -r 9b88b8b6bccd stage4/generate_c/generate_c.cc --- a/stage4/generate_c/generate_c.cc Fri Nov 18 17:21:16 2011 +0100 +++ b/stage4/generate_c/generate_c.cc Fri Nov 18 17:28:37 2011 +0100 @@ -124,7 +124,6 @@ /* Variable setter symbol for accessor macros */ #define SET_VAR "__SET_VAR" #define SET_EXTERNAL "__SET_EXTERNAL" -#define SET_COMPLEX_EXTERNAL "__SET_COMPLEX_EXTERNAL" #define SET_LOCATED "__SET_LOCATED" @@ -1334,7 +1333,7 @@ s4o.print(SET_VAR); s4o.print("("); s4o.print(FB_FUNCTION_PARAM); - s4o.print("->ENO,__BOOL_LITERAL(FALSE));\n"); + s4o.print("->,ENO,__BOOL_LITERAL(FALSE));\n"); s4o.print(s4o.indent_spaces + "return;\n"); s4o.indent_left(); s4o.print(s4o.indent_spaces + "}\n"); @@ -1344,7 +1343,7 @@ s4o.print(SET_VAR); s4o.print("("); s4o.print(FB_FUNCTION_PARAM); - s4o.print("->ENO,__BOOL_LITERAL(TRUE));\n"); + s4o.print("->,ENO,__BOOL_LITERAL(TRUE));\n"); s4o.indent_left(); s4o.print(s4o.indent_spaces + "}\n"); @@ -1621,7 +1620,8 @@ /* (A.2) Global variables */ vardecl = new generate_c_vardecl_c(&s4o, generate_c_vardecl_c::local_vf, - generate_c_vardecl_c::global_vt); + generate_c_vardecl_c::global_vt, + symbol->configuration_name); vardecl->print(symbol); delete vardecl; s4o.print("\n"); @@ -1894,6 +1894,7 @@ s4o.print("extern unsigned long long common_ticktime__;\n\n"); s4o.print("#include \"accessor.h\"\n\n"); + s4o.print("#include \"POUS.h\"\n\n"); /* (A.2) Global variables... */ if (current_global_vars != NULL) { @@ -1907,7 +1908,6 @@ } /* (A.3) POUs inclusion */ - s4o.print("#include \"POUS.h\"\n\n"); s4o.print("#include \"POUS.c\"\n\n"); wanted_declaretype = declare_dt; @@ -2098,33 +2098,29 @@ if (symbol->single_data_source != NULL) { symbol_c *config_var_decl = NULL; symbol_c *res_var_decl = NULL; - unsigned int vartype; + s4o.print(s4o.indent_spaces + "{"); symbol_c *current_var_reference = ((global_var_reference_c *)(symbol->single_data_source))->global_var_name; res_var_decl = search_resource_instance->get_decl(current_var_reference); if (res_var_decl == NULL) { config_var_decl = search_config_instance->get_decl(current_var_reference); if (config_var_decl == NULL) ERROR; - vartype = search_config_instance->get_vartype(); - s4o.print(s4o.indent_spaces + "{extern "); config_var_decl->accept(*this); - s4o.print(" *"); - symbol->single_data_source->accept(*this); - s4o.print("; "); } else { - vartype = search_resource_instance->get_vartype(); - s4o.print(s4o.indent_spaces); + res_var_decl->accept(*this); } + s4o.print("* "); + symbol->single_data_source->accept(*this); + s4o.print(" = __GET_GLOBAL_"); + symbol->single_data_source->accept(*this); + s4o.print("();"); s4o.print(SET_VAR); s4o.print("("); current_task_name->accept(*this); - s4o.print("_R_TRIG.CLK, *__GET_GLOBAL_"); + s4o.print("_R_TRIG.,CLK, *"); symbol->single_data_source->accept(*this); - s4o.print("());"); - if (config_var_decl != NULL) - s4o.print("}"); - s4o.print("\n"); + s4o.print(");}\n"); s4o.print(s4o.indent_spaces + "R_TRIG"); s4o.print(FB_FUNCTION_SUFFIX); s4o.print("(&");