stage1_2/create_enumtype_conversion_functions.cc
changeset 765 d15f13bff9c6
parent 764 d699d54d181a
child 958 7474d2cd1d6e
equal deleted inserted replaced
764:d699d54d181a 765:d15f13bff9c6
   153  FUNCTION STRING_TO_<ENUM> : <ENUM>
   153  FUNCTION STRING_TO_<ENUM> : <ENUM>
   154   VAR_INPUT
   154   VAR_INPUT
   155   IN: STRING;
   155   IN: STRING;
   156   END_VAR
   156   END_VAR
   157   IF IN = '<ENUM.VALUE_1>' THEN
   157   IF IN = '<ENUM.VALUE_1>' THEN
   158    STRING_TO_<ENUM> := <ENUM.VALUE_1>;
   158    STRING_TO_<ENUM> := <ENUM>#<ENUM.VALUE_1>;
   159    RETURN;
   159    RETURN;
   160   END_IF;
   160   END_IF;
   161   ...
   161   ...
   162   IF IN = '<ENUM.VALU_N>' THEN
   162   IF IN = '<ENUM.VALU_N>' THEN
   163    STRING_TO_<ENUM> := <ENUM.VALUE_N>;
   163    STRING_TO_<ENUM> := <ENUM>#<ENUM.VALUE_N>;
   164    RETURN;
   164    RETURN;
   165   END_IF;
   165   END_IF;
   166   ENO := FALSE;
   166   ENO := FALSE;
   167   END_FUNCTION
   167   END_FUNCTION
   168 
   168 
   176     text += "FUNCTION " + functionName + " : " + enumerateName;
   176     text += "FUNCTION " + functionName + " : " + enumerateName;
   177     text += "\nVAR_INPUT\nIN : STRING;\nEND_VAR\n";
   177     text += "\nVAR_INPUT\nIN : STRING;\nEND_VAR\n";
   178     for (itr = enumerateValues.begin(); itr != enumerateValues.end(); ++itr) {
   178     for (itr = enumerateValues.begin(); itr != enumerateValues.end(); ++itr) {
   179        std::string value = *itr;
   179        std::string value = *itr;
   180        text += "IF IN = '" + value + "' THEN\n";
   180        text += "IF IN = '" + value + "' THEN\n";
   181        text += " " + functionName + " := " + value + ";\n";
   181        text += " " + functionName + " := " + enumerateName + "#" + value + ";\n";
   182        text += " RETURN;\n"; 
   182        text += " RETURN;\n"; 
   183        text += "END_IF;\n";
   183        text += "END_IF;\n";
   184     }
   184     }
   185     text += "ENO := FALSE;\n";
   185     text += "ENO := FALSE;\n";
   186     text += "END_FUNCTION\n\n";
   186     text += "END_FUNCTION\n\n";
   193 
   193 
   194  FUNCTION <ENUM>_TO_STRING : STRING
   194  FUNCTION <ENUM>_TO_STRING : STRING
   195   VAR_INPUT
   195   VAR_INPUT
   196   IN: <ENUM>;
   196   IN: <ENUM>;
   197   END_VAR
   197   END_VAR
   198   IF IN = <ENUM.VALUE_1> THEN
   198   IF IN = <ENUM>#<ENUM.VALUE_1> THEN
   199    <ENUM>_TO_STRING := '<ENUM>#<ENUM.VALUE_1>';
   199    <ENUM>_TO_STRING := '<ENUM>#<ENUM.VALUE_1>';
   200    RETURN;
   200    RETURN;
   201   END_IF;
   201   END_IF;
   202   ...
   202   ...
   203   IF IN = <ENUM.VALUE_N> THEN
   203   IF IN = <ENUM>#<ENUM.VALUE_N> THEN
   204    <ENUM>_TO_STRING := '<ENUM>#<ENUM.VALUE_N>';
   204    <ENUM>_TO_STRING := '<ENUM>#<ENUM.VALUE_N>';
   205    RETURN;
   205    RETURN;
   206   END_IF;
   206   END_IF;
   207   ENO := FALSE;
   207   ENO := FALSE;
   208   END_FUNCTION
   208   END_FUNCTION
   216     functionName = enumerateName + "_TO_STRING";
   216     functionName = enumerateName + "_TO_STRING";
   217     text += "FUNCTION " + functionName + " : STRING";
   217     text += "FUNCTION " + functionName + " : STRING";
   218     text += "\nVAR_INPUT\nIN : " + enumerateName + ";\nEND_VAR\n";
   218     text += "\nVAR_INPUT\nIN : " + enumerateName + ";\nEND_VAR\n";
   219     for (itr = enumerateValues.begin(); itr != enumerateValues.end(); ++itr) {
   219     for (itr = enumerateValues.begin(); itr != enumerateValues.end(); ++itr) {
   220         std::string value = *itr;
   220         std::string value = *itr;
   221         text += "IF IN = " + value + " THEN\n";
   221         text += "IF IN = " + enumerateName + "#" + value + " THEN\n";
   222         text += " " + functionName + " := '" + enumerateName + "#" + value + "';\n";
   222         text += " " + functionName + " := '" + enumerateName + "#" + value + "';\n";
   223         text += " RETURN;\n";
   223         text += " RETURN;\n";
   224         text += "END_IF;\n";
   224         text += "END_IF;\n";
   225     }
   225     }
   226     text += "ENO := FALSE;\n";
   226     text += "ENO := FALSE;\n";
   235  FUNCTION <INTEGER>_TO_<ENUM> : <ENUM>
   235  FUNCTION <INTEGER>_TO_<ENUM> : <ENUM>
   236   VAR_INPUT
   236   VAR_INPUT
   237   IN: <INTEGER>;
   237   IN: <INTEGER>;
   238   END_VAR
   238   END_VAR
   239   IF IN = 1 THEN
   239   IF IN = 1 THEN
   240    <INTEGER>_TO_<ENUM> := <ENUM.VALUE_1>;
   240    <INTEGER>_TO_<ENUM> := <ENUM>#<ENUM.VALUE_1>;
   241    RETURN;
   241    RETURN;
   242   END_IF;
   242   END_IF;
   243   ...
   243   ...
   244   IF IN = N THEN
   244   IF IN = N THEN
   245    <INTEGER>_TO_<ENUM> := <ENUM.VALUE_N>;
   245    <INTEGER>_TO_<ENUM> := <ENUM>#<ENUM.VALUE_N>;
   246    RETURN;
   246    RETURN;
   247   END_IF;
   247   END_IF;
   248   ENO := FALSE;
   248   ENO := FALSE;
   249   END_FUNCTION
   249   END_FUNCTION
   250 
   250 
   264     for (itr = enumerateValues.begin(); itr != enumerateValues.end(); ++itr) {
   264     for (itr = enumerateValues.begin(); itr != enumerateValues.end(); ++itr) {
   265         std::string value = *itr;
   265         std::string value = *itr;
   266         std::stringstream out;
   266         std::stringstream out;
   267         out << count;
   267         out << count;
   268         text += "IF IN = " + out.str() + " THEN\n";
   268         text += "IF IN = " + out.str() + " THEN\n";
   269         text += " " + functionName + " := " + value + ";\n";
   269         text += " " + functionName + " := " + enumerateName + "#" + value + ";\n";
   270         text += " RETURN;\n";
   270         text += " RETURN;\n";
   271         text += "END_IF;\n";
   271         text += "END_IF;\n";
   272         count++;
   272         count++;
   273     }
   273     }
   274     text += "ENO := FALSE;\n";
   274     text += "ENO := FALSE;\n";
   282 
   282 
   283  FUNCTION <ENUM>_TO_<INTEGER> : <INTEGER>
   283  FUNCTION <ENUM>_TO_<INTEGER> : <INTEGER>
   284   VAR_INPUT
   284   VAR_INPUT
   285   IN: <INTEGER>;
   285   IN: <INTEGER>;
   286   END_VAR
   286   END_VAR
   287   IF IN = <ENUM.VALUE_1> THEN
   287   IF IN = <ENUM>#<ENUM.VALUE_1> THEN
   288    <ENUM>_TO_<INTEGER> := 1;
   288    <ENUM>_TO_<INTEGER> := 1;
   289    RETURN;
   289    RETURN;
   290   END_IF;
   290   END_IF;
   291   ...
   291   ...
   292   IF IN = <ENUM.VALUE_N> THEN
   292   IF IN = <ENUM>#<ENUM.VALUE_N> THEN
   293    <ENUM>_TO_<INTEGER> := N;
   293    <ENUM>_TO_<INTEGER> := N;
   294    RETURN;
   294    RETURN;
   295   END_IF;
   295   END_IF;
   296   ENO := FALSE;
   296   ENO := FALSE;
   297   END_FUNCTION
   297   END_FUNCTION
   311     count = 0;
   311     count = 0;
   312     for (itr = enumerateValues.begin(); itr != enumerateValues.end(); ++itr) {
   312     for (itr = enumerateValues.begin(); itr != enumerateValues.end(); ++itr) {
   313         std::string value = *itr;
   313         std::string value = *itr;
   314         std::stringstream out;
   314         std::stringstream out;
   315         out << count;
   315         out << count;
   316         text += "IF IN = " + value + " THEN\n";
   316         text += "IF IN = " + enumerateName + "#" + value + " THEN\n";
   317         text += " " + functionName + " := " + out.str() + ";\n";
   317         text += " " + functionName + " := " + out.str() + ";\n";
   318         text += " RETURN;\n";
   318         text += " RETURN;\n";
   319         text += "END_IF;\n";
   319         text += "END_IF;\n";
   320         count++;
   320         count++;
   321     }
   321     }