# HG changeset patch # User Mario de Sousa # Date 1354560256 0 # Node ID ffed675e79d83f8836b5a47da1fb76f9bc0b3d4d # Parent a3d917474ae4acc3941c99a7eac70f92d22608ed# Parent d15f13bff9c6628ad60dd2f3d7ab329af4290e88 merge diff -r a3d917474ae4 -r ffed675e79d8 stage1_2/create_enumtype_conversion_functions.cc --- a/stage1_2/create_enumtype_conversion_functions.cc Mon Dec 03 14:06:49 2012 +0000 +++ b/stage1_2/create_enumtype_conversion_functions.cc Mon Dec 03 18:44:16 2012 +0000 @@ -155,12 +155,12 @@ IN: STRING; END_VAR IF IN = '' THEN - STRING_TO_ := ; + STRING_TO_ := #; RETURN; END_IF; ... IF IN = '' THEN - STRING_TO_ := ; + STRING_TO_ := #; RETURN; END_IF; ENO := FALSE; @@ -178,7 +178,7 @@ for (itr = enumerateValues.begin(); itr != enumerateValues.end(); ++itr) { std::string value = *itr; text += "IF IN = '" + value + "' THEN\n"; - text += " " + functionName + " := " + value + ";\n"; + text += " " + functionName + " := " + enumerateName + "#" + value + ";\n"; text += " RETURN;\n"; text += "END_IF;\n"; } @@ -195,13 +195,13 @@ VAR_INPUT IN: ; END_VAR - IF IN = THEN - _TO_STRING := ''; + IF IN = # THEN + _TO_STRING := '#'; RETURN; END_IF; ... - IF IN = THEN - _TO_STRING := ''; + IF IN = # THEN + _TO_STRING := '#'; RETURN; END_IF; ENO := FALSE; @@ -218,8 +218,8 @@ text += "\nVAR_INPUT\nIN : " + enumerateName + ";\nEND_VAR\n"; for (itr = enumerateValues.begin(); itr != enumerateValues.end(); ++itr) { std::string value = *itr; - text += "IF IN = " + value + " THEN\n"; - text += " " + functionName + " := '" + value + "';\n"; + text += "IF IN = " + enumerateName + "#" + value + " THEN\n"; + text += " " + functionName + " := '" + enumerateName + "#" + value + "';\n"; text += " RETURN;\n"; text += "END_IF;\n"; } @@ -237,12 +237,12 @@ IN: ; END_VAR IF IN = 1 THEN - _TO_ := ; + _TO_ := #; RETURN; END_IF; ... IF IN = N THEN - _TO_ := ; + _TO_ := #; RETURN; END_IF; ENO := FALSE; @@ -266,7 +266,7 @@ std::stringstream out; out << count; text += "IF IN = " + out.str() + " THEN\n"; - text += " " + functionName + " := " + value + ";\n"; + text += " " + functionName + " := " + enumerateName + "#" + value + ";\n"; text += " RETURN;\n"; text += "END_IF;\n"; count++; @@ -284,12 +284,12 @@ VAR_INPUT IN: ; END_VAR - IF IN = THEN + IF IN = # THEN _TO_ := 1; RETURN; END_IF; ... - IF IN = THEN + IF IN = # THEN _TO_ := N; RETURN; END_IF; @@ -313,7 +313,7 @@ std::string value = *itr; std::stringstream out; out << count; - text += "IF IN = " + value + " THEN\n"; + text += "IF IN = " + enumerateName + "#" + value + " THEN\n"; text += " " + functionName + " := " + out.str() + ";\n"; text += " RETURN;\n"; text += "END_IF;\n"; diff -r a3d917474ae4 -r ffed675e79d8 stage3/fill_candidate_datatypes.cc --- a/stage3/fill_candidate_datatypes.cc Mon Dec 03 14:06:49 2012 +0000 +++ b/stage3/fill_candidate_datatypes.cc Mon Dec 03 18:44:16 2012 +0000 @@ -1817,14 +1817,15 @@ else ERROR; generic_function_call_t fcall_param = { - /* fcall_param.function_name = */ symbol->function_name, - /* fcall_param.nonformal_operand_list = */ symbol->nonformal_param_list, - /* fcall_param.formal_operand_list = */ symbol->formal_param_list, - /* enum {POU_FB, POU_function} POU_type = */ generic_function_call_t::POU_function, - /* fcall_param.candidate_functions = */ symbol->candidate_functions, - /* fcall_param.called_function_declaration = */ symbol->called_function_declaration, - /* fcall_param.extensible_param_count = */ symbol->extensible_param_count + function_name: symbol->function_name, + nonformal_operand_list: symbol->nonformal_param_list, + formal_operand_list: symbol->formal_param_list, + POU_type: generic_function_call_t::POU_function, + candidate_functions: symbol->candidate_functions, + called_function_declaration: symbol->called_function_declaration, + extensible_param_count: symbol->extensible_param_count }; + handle_function_call(symbol, fcall_param); if (debug) std::cout << "function_invocation_c [" << symbol->candidate_datatypes.size() << "] result.\n";