--- 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("(&");