stage4/generate_c/il_code_gen.c
changeset 233 3d23a68183d3
parent 217 f5dfadf5de54
child 235 ed66dc50f31a
equal deleted inserted replaced
232:29ab33687333 233:3d23a68183d3
 13366                 if (IN_type_symbol == NULL)
 13366                 if (IN_type_symbol == NULL)
 13367                   IN_type_symbol = last_type_symbol;
 13367                   IN_type_symbol = last_type_symbol;
 13368                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13368                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13369                 symbol_c * return_type_symbol = &search_constant_type_c::integer;
 13369                 symbol_c * return_type_symbol = &search_constant_type_c::integer;
 13370                 function_type_prefix = (symbol_c*)(new pragma_c("int"));
 13370                 function_type_prefix = (symbol_c*)(new pragma_c("int"));
       
 13371                 if (search_expression_type->is_literal_real_type(function_type_suffix))
       
 13372                     function_type_suffix = &search_constant_type_c::lreal_type_name;
 13371                 break;
 13373                 break;
 13372                 
 13374                 
 13373             }
 13375             }
 13374             
 13376             
 13375             
 13377             
 13760                 if (IN_type_symbol == NULL)
 13762                 if (IN_type_symbol == NULL)
 13761                   IN_type_symbol = last_type_symbol;
 13763                   IN_type_symbol = last_type_symbol;
 13762                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13764                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13763                 symbol_c * return_type_symbol = IN_type_symbol;
 13765                 symbol_c * return_type_symbol = IN_type_symbol;
 13764                 function_type_suffix = IN_type_symbol;
 13766                 function_type_suffix = IN_type_symbol;
       
 13767                 if (search_expression_type->is_literal_integer_type(function_type_suffix))
       
 13768                     function_type_suffix = &search_constant_type_c::lint_type_name;
 13765                 break;
 13769                 break;
 13766                 
 13770                 
 13767             }
 13771             }
 13768             
 13772             
 13769             
 13773             
 13796                 if (IN_type_symbol == NULL)
 13800                 if (IN_type_symbol == NULL)
 13797                   IN_type_symbol = last_type_symbol;
 13801                   IN_type_symbol = last_type_symbol;
 13798                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13802                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13799                 symbol_c * return_type_symbol = IN_type_symbol;
 13803                 symbol_c * return_type_symbol = IN_type_symbol;
 13800                 function_type_suffix = IN_type_symbol;
 13804                 function_type_suffix = IN_type_symbol;
       
 13805                 if (search_expression_type->is_literal_real_type(function_type_suffix))
       
 13806                     function_type_suffix = &search_constant_type_c::lreal_type_name;
 13801                 break;
 13807                 break;
 13802                 
 13808                 
 13803             }
 13809             }
 13804             
 13810             
 13805             
 13811             
 13832                 if (IN_type_symbol == NULL)
 13838                 if (IN_type_symbol == NULL)
 13833                   IN_type_symbol = last_type_symbol;
 13839                   IN_type_symbol = last_type_symbol;
 13834                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13840                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13835                 symbol_c * return_type_symbol = IN_type_symbol;
 13841                 symbol_c * return_type_symbol = IN_type_symbol;
 13836                 function_type_suffix = IN_type_symbol;
 13842                 function_type_suffix = IN_type_symbol;
       
 13843                 if (search_expression_type->is_literal_real_type(function_type_suffix))
       
 13844                     function_type_suffix = &search_constant_type_c::lreal_type_name;
 13837                 break;
 13845                 break;
 13838                 
 13846                 
 13839             }
 13847             }
 13840             
 13848             
 13841             
 13849             
 13868                 if (IN_type_symbol == NULL)
 13876                 if (IN_type_symbol == NULL)
 13869                   IN_type_symbol = last_type_symbol;
 13877                   IN_type_symbol = last_type_symbol;
 13870                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13878                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13871                 symbol_c * return_type_symbol = IN_type_symbol;
 13879                 symbol_c * return_type_symbol = IN_type_symbol;
 13872                 function_type_suffix = IN_type_symbol;
 13880                 function_type_suffix = IN_type_symbol;
       
 13881                 if (search_expression_type->is_literal_real_type(function_type_suffix))
       
 13882                     function_type_suffix = &search_constant_type_c::lreal_type_name;
 13873                 break;
 13883                 break;
 13874                 
 13884                 
 13875             }
 13885             }
 13876             
 13886             
 13877             
 13887             
 13904                 if (IN_type_symbol == NULL)
 13914                 if (IN_type_symbol == NULL)
 13905                   IN_type_symbol = last_type_symbol;
 13915                   IN_type_symbol = last_type_symbol;
 13906                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13916                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13907                 symbol_c * return_type_symbol = IN_type_symbol;
 13917                 symbol_c * return_type_symbol = IN_type_symbol;
 13908                 function_type_suffix = IN_type_symbol;
 13918                 function_type_suffix = IN_type_symbol;
       
 13919                 if (search_expression_type->is_literal_real_type(function_type_suffix))
       
 13920                     function_type_suffix = &search_constant_type_c::lreal_type_name;
 13909                 break;
 13921                 break;
 13910                 
 13922                 
 13911             }
 13923             }
 13912             
 13924             
 13913             
 13925             
 13940                 if (IN_type_symbol == NULL)
 13952                 if (IN_type_symbol == NULL)
 13941                   IN_type_symbol = last_type_symbol;
 13953                   IN_type_symbol = last_type_symbol;
 13942                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13954                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13943                 symbol_c * return_type_symbol = IN_type_symbol;
 13955                 symbol_c * return_type_symbol = IN_type_symbol;
 13944                 function_type_suffix = IN_type_symbol;
 13956                 function_type_suffix = IN_type_symbol;
       
 13957                 if (search_expression_type->is_literal_real_type(function_type_suffix))
       
 13958                     function_type_suffix = &search_constant_type_c::lreal_type_name;
 13945                 break;
 13959                 break;
 13946                 
 13960                 
 13947             }
 13961             }
 13948             
 13962             
 13949             
 13963             
 13976                 if (IN_type_symbol == NULL)
 13990                 if (IN_type_symbol == NULL)
 13977                   IN_type_symbol = last_type_symbol;
 13991                   IN_type_symbol = last_type_symbol;
 13978                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13992                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 13979                 symbol_c * return_type_symbol = IN_type_symbol;
 13993                 symbol_c * return_type_symbol = IN_type_symbol;
 13980                 function_type_suffix = IN_type_symbol;
 13994                 function_type_suffix = IN_type_symbol;
       
 13995                 if (search_expression_type->is_literal_real_type(function_type_suffix))
       
 13996                     function_type_suffix = &search_constant_type_c::lreal_type_name;
 13981                 break;
 13997                 break;
 13982                 
 13998                 
 13983             }
 13999             }
 13984             
 14000             
 13985             
 14001             
 14012                 if (IN_type_symbol == NULL)
 14028                 if (IN_type_symbol == NULL)
 14013                   IN_type_symbol = last_type_symbol;
 14029                   IN_type_symbol = last_type_symbol;
 14014                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 14030                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 14015                 symbol_c * return_type_symbol = IN_type_symbol;
 14031                 symbol_c * return_type_symbol = IN_type_symbol;
 14016                 function_type_suffix = IN_type_symbol;
 14032                 function_type_suffix = IN_type_symbol;
       
 14033                 if (search_expression_type->is_literal_real_type(function_type_suffix))
       
 14034                     function_type_suffix = &search_constant_type_c::lreal_type_name;
 14017                 break;
 14035                 break;
 14018                 
 14036                 
 14019             }
 14037             }
 14020             
 14038             
 14021             
 14039             
 14048                 if (IN_type_symbol == NULL)
 14066                 if (IN_type_symbol == NULL)
 14049                   IN_type_symbol = last_type_symbol;
 14067                   IN_type_symbol = last_type_symbol;
 14050                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 14068                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 14051                 symbol_c * return_type_symbol = IN_type_symbol;
 14069                 symbol_c * return_type_symbol = IN_type_symbol;
 14052                 function_type_suffix = IN_type_symbol;
 14070                 function_type_suffix = IN_type_symbol;
       
 14071                 if (search_expression_type->is_literal_real_type(function_type_suffix))
       
 14072                     function_type_suffix = &search_constant_type_c::lreal_type_name;
 14053                 break;
 14073                 break;
 14054                 
 14074                 
 14055             }
 14075             }
 14056             
 14076             
 14057             
 14077             
 14084                 if (IN_type_symbol == NULL)
 14104                 if (IN_type_symbol == NULL)
 14085                   IN_type_symbol = last_type_symbol;
 14105                   IN_type_symbol = last_type_symbol;
 14086                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 14106                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 14087                 symbol_c * return_type_symbol = IN_type_symbol;
 14107                 symbol_c * return_type_symbol = IN_type_symbol;
 14088                 function_type_suffix = IN_type_symbol;
 14108                 function_type_suffix = IN_type_symbol;
       
 14109                 if (search_expression_type->is_literal_real_type(function_type_suffix))
       
 14110                     function_type_suffix = &search_constant_type_c::lreal_type_name;
 14089                 break;
 14111                 break;
 14090                 
 14112                 
 14091             }
 14113             }
 14092             
 14114             
 14093             
 14115             
 14120                 if (IN_type_symbol == NULL)
 14142                 if (IN_type_symbol == NULL)
 14121                   IN_type_symbol = last_type_symbol;
 14143                   IN_type_symbol = last_type_symbol;
 14122                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 14144                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 14123                 symbol_c * return_type_symbol = IN_type_symbol;
 14145                 symbol_c * return_type_symbol = IN_type_symbol;
 14124                 function_type_suffix = IN_type_symbol;
 14146                 function_type_suffix = IN_type_symbol;
       
 14147                 if (search_expression_type->is_literal_real_type(function_type_suffix))
       
 14148                     function_type_suffix = &search_constant_type_c::lreal_type_name;
 14125                 break;
 14149                 break;
 14126                 
 14150                 
 14127             }
 14151             }
 14128             
 14152             
 14129             
 14153             
 14205                                 /*Function specific CODE */
 14229                                 /*Function specific CODE */
 14206                                 ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 14230                                 ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 14207                             }
 14231                             }
 14208                             
 14232                             
 14209                         }while(param_value != NULL);
 14233                         }while(param_value != NULL);
 14210                         symbol_c * return_type_symbol;
 14234                         symbol_c * return_type_symbol = last_type_symbol;
 14211                         if (search_expression_type->is_literal_integer_type(last_type_symbol))
       
 14212                             return_type_symbol = &search_constant_type_c::lint_type_name;
       
 14213                         else if (search_expression_type->is_literal_real_type(last_type_symbol))
       
 14214                             return_type_symbol = &search_constant_type_c::lreal_type_name;
       
 14215                         else
       
 14216                             return_type_symbol = last_type_symbol;
       
 14217                         function_type_suffix = return_type_symbol;
 14235                         function_type_suffix = return_type_symbol;
 14218                         break;
 14236                         break;
 14219                         
 14237                         
 14220                     }
 14238                     }
 14221                     
 14239                     
 14424                                 /*Function specific CODE */
 14442                                 /*Function specific CODE */
 14425                                 ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 14443                                 ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 14426                             }
 14444                             }
 14427                             
 14445                             
 14428                         }while(param_value != NULL);
 14446                         }while(param_value != NULL);
 14429                         symbol_c * return_type_symbol;
 14447                         symbol_c * return_type_symbol = last_type_symbol;
 14430                         if (search_expression_type->is_literal_integer_type(last_type_symbol))
       
 14431                             return_type_symbol = &search_constant_type_c::lint_type_name;
       
 14432                         else if (search_expression_type->is_literal_real_type(last_type_symbol))
       
 14433                             return_type_symbol = &search_constant_type_c::lreal_type_name;
       
 14434                         else
       
 14435                             return_type_symbol = last_type_symbol;
       
 14436                         function_type_suffix = return_type_symbol;
 14448                         function_type_suffix = return_type_symbol;
 14437                         break;
 14449                         break;
 14438                         
 14450                         
 14439                     }
 14451                     }
 14440                     
 14452                     
 14472                         
 14484                         
 14473                         if (IN2_type_symbol == NULL)
 14485                         if (IN2_type_symbol == NULL)
 14474                           IN2_type_symbol = last_type_symbol;
 14486                           IN2_type_symbol = last_type_symbol;
 14475                         ADD_PARAM_LIST(&IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14487                         ADD_PARAM_LIST(&IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14476                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 14488                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
       
 14489                         if (search_expression_type->is_literal_integer_type(function_type_suffix))
       
 14490                             function_type_suffix = &search_constant_type_c::lint_type_name;
 14477                         break;
 14491                         break;
 14478                         
 14492                         
 14479                     }
 14493                     }
 14480                     
 14494                     
 14481                     
 14495                     
 14533                         ADD_PARAM_LIST(&IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14547                         ADD_PARAM_LIST(&IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14534                         
 14548                         
 14535                         if (IN2_type_symbol == NULL)
 14549                         if (IN2_type_symbol == NULL)
 14536                           IN2_type_symbol = last_type_symbol;
 14550                           IN2_type_symbol = last_type_symbol;
 14537                         ADD_PARAM_LIST(&IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14551                         ADD_PARAM_LIST(&IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14538                         symbol_c * return_type_symbol;
 14552                         symbol_c * return_type_symbol = last_type_symbol;
 14539                         if (search_expression_type->is_literal_integer_type(last_type_symbol))
       
 14540                             return_type_symbol = &search_constant_type_c::lint_type_name;
       
 14541                         else if (search_expression_type->is_literal_real_type(last_type_symbol))
       
 14542                             return_type_symbol = &search_constant_type_c::lreal_type_name;
       
 14543                         else
       
 14544                             return_type_symbol = last_type_symbol;
       
 14545                         function_type_suffix = return_type_symbol;
 14553                         function_type_suffix = return_type_symbol;
 14546                         break;
 14554                         break;
 14547                         
 14555                         
 14548                     }
 14556                     }
 14549                     
 14557                     
 14796                         ADD_PARAM_LIST(&IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14804                         ADD_PARAM_LIST(&IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14797                         
 14805                         
 14798                         if (IN2_type_symbol == NULL)
 14806                         if (IN2_type_symbol == NULL)
 14799                           IN2_type_symbol = last_type_symbol;
 14807                           IN2_type_symbol = last_type_symbol;
 14800                         ADD_PARAM_LIST(&IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14808                         ADD_PARAM_LIST(&IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14801                         symbol_c * return_type_symbol;
 14809                         symbol_c * return_type_symbol = last_type_symbol;
 14802                         if (search_expression_type->is_literal_integer_type(last_type_symbol))
       
 14803                             return_type_symbol = &search_constant_type_c::lint_type_name;
       
 14804                         else if (search_expression_type->is_literal_real_type(last_type_symbol))
       
 14805                             return_type_symbol = &search_constant_type_c::lreal_type_name;
       
 14806                         else
       
 14807                             return_type_symbol = last_type_symbol;
       
 14808                         function_type_suffix = return_type_symbol;
 14810                         function_type_suffix = return_type_symbol;
 14809                         break;
 14811                         break;
 14810                         
 14812                         
 14811                     }
 14813                     }
 14812                     
 14814                     
 14844                         
 14846                         
 14845                         if (IN2_type_symbol == NULL)
 14847                         if (IN2_type_symbol == NULL)
 14846                           IN2_type_symbol = last_type_symbol;
 14848                           IN2_type_symbol = last_type_symbol;
 14847                         ADD_PARAM_LIST(&IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14849                         ADD_PARAM_LIST(&IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14848                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 14850                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
       
 14851                         if (search_expression_type->is_literal_integer_type(function_type_suffix))
       
 14852                             function_type_suffix = &search_constant_type_c::lint_type_name;
 14849                         break;
 14853                         break;
 14850                         
 14854                         
 14851                     }
 14855                     }
 14852                     
 14856                     
 14853                     
 14857                     
 14905                         ADD_PARAM_LIST(&IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14909                         ADD_PARAM_LIST(&IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14906                         
 14910                         
 14907                         if (IN2_type_symbol == NULL)
 14911                         if (IN2_type_symbol == NULL)
 14908                           IN2_type_symbol = last_type_symbol;
 14912                           IN2_type_symbol = last_type_symbol;
 14909                         ADD_PARAM_LIST(&IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14913                         ADD_PARAM_LIST(&IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14910                         symbol_c * return_type_symbol;
 14914                         symbol_c * return_type_symbol = last_type_symbol;
 14911                         if (search_expression_type->is_literal_integer_type(last_type_symbol))
       
 14912                             return_type_symbol = &search_constant_type_c::lint_type_name;
       
 14913                         else if (search_expression_type->is_literal_real_type(last_type_symbol))
       
 14914                             return_type_symbol = &search_constant_type_c::lreal_type_name;
       
 14915                         else
       
 14916                             return_type_symbol = last_type_symbol;
       
 14917                         function_type_suffix = return_type_symbol;
 14915                         function_type_suffix = return_type_symbol;
 14918                         break;
 14916                         break;
 14919                         
 14917                         
 14920                     }
 14918                     }
 14921                     
 14919                     
 14974                         ADD_PARAM_LIST(&IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14972                         ADD_PARAM_LIST(&IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 14975                         
 14973                         
 14976                         if (IN2_type_symbol == NULL)
 14974                         if (IN2_type_symbol == NULL)
 14977                           IN2_type_symbol = last_type_symbol;
 14975                           IN2_type_symbol = last_type_symbol;
 14978                         ADD_PARAM_LIST(&IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14976                         ADD_PARAM_LIST(&IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 14979                         symbol_c * return_type_symbol;
 14977                         symbol_c * return_type_symbol = last_type_symbol;
 14980                         if (search_expression_type->is_literal_integer_type(last_type_symbol))
       
 14981                             return_type_symbol = &search_constant_type_c::lint_type_name;
       
 14982                         else if (search_expression_type->is_literal_real_type(last_type_symbol))
       
 14983                             return_type_symbol = &search_constant_type_c::lreal_type_name;
       
 14984                         else
       
 14985                             return_type_symbol = last_type_symbol;
       
 14986                         function_type_suffix = IN1_type_symbol;
 14978                         function_type_suffix = IN1_type_symbol;
 14987                         break;
 14979                         break;
 14988                         
 14980                         
 14989                     }
 14981                     }
 14990                     
 14982                     
 15022                 function_name = (symbol_c*)(new pragma_c("__move_"));
 15014                 function_name = (symbol_c*)(new pragma_c("__move_"));
 15023                 
 15015                 
 15024                 if (IN_type_symbol == NULL)
 15016                 if (IN_type_symbol == NULL)
 15025                   IN_type_symbol = last_type_symbol;
 15017                   IN_type_symbol = last_type_symbol;
 15026                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 15018                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 15027                 symbol_c * return_type_symbol;
 15019                 symbol_c * return_type_symbol = last_type_symbol;
 15028                 if (search_expression_type->is_literal_integer_type(last_type_symbol))
       
 15029                     return_type_symbol = &search_constant_type_c::lint_type_name;
       
 15030                 else if (search_expression_type->is_literal_real_type(last_type_symbol))
       
 15031                     return_type_symbol = &search_constant_type_c::lreal_type_name;
       
 15032                 else
       
 15033                     return_type_symbol = last_type_symbol;
       
 15034                 function_type_suffix = return_type_symbol;
 15020                 function_type_suffix = return_type_symbol;
       
 15021                 if (search_expression_type->is_literal_integer_type(function_type_suffix))
       
 15022                     function_type_suffix = &search_constant_type_c::lint_type_name;
       
 15023                 else if (search_expression_type->is_literal_real_type(function_type_suffix))
       
 15024                     function_type_suffix = &search_constant_type_c::lreal_type_name;
 15035                 break;
 15025                 break;
 15036                 
 15026                 
 15037             }
 15027             }
 15038             
 15028             
 15039             
 15029             
 15367                                 /*Function specific CODE */
 15357                                 /*Function specific CODE */
 15368                                 ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 15358                                 ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 15369                             }
 15359                             }
 15370                             
 15360                             
 15371                         }while(param_value != NULL);
 15361                         }while(param_value != NULL);
 15372                         symbol_c * return_type_symbol;
 15362                         symbol_c * return_type_symbol = last_type_symbol;
 15373                         if (search_expression_type->is_literal_integer_type(last_type_symbol))
       
 15374                             return_type_symbol = &search_constant_type_c::lword_type_name;
       
 15375                         else
       
 15376                             return_type_symbol = last_type_symbol;
       
 15377                         function_type_suffix = return_type_symbol;
 15363                         function_type_suffix = return_type_symbol;
 15378                         break;
 15364                         break;
 15379                         
 15365                         
 15380                     }
 15366                     }
 15381                     
 15367                     
 15464                                 /*Function specific CODE */
 15450                                 /*Function specific CODE */
 15465                                 ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 15451                                 ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 15466                             }
 15452                             }
 15467                             
 15453                             
 15468                         }while(param_value != NULL);
 15454                         }while(param_value != NULL);
 15469                         symbol_c * return_type_symbol;
 15455                         symbol_c * return_type_symbol = last_type_symbol;
 15470                         if (search_expression_type->is_literal_integer_type(last_type_symbol))
       
 15471                             return_type_symbol = &search_constant_type_c::lword_type_name;
       
 15472                         else
       
 15473                             return_type_symbol = last_type_symbol;
       
 15474                         function_type_suffix = return_type_symbol;
 15456                         function_type_suffix = return_type_symbol;
 15475                         break;
 15457                         break;
 15476                         
 15458                         
 15477                     }
 15459                     }
 15478                     
 15460                     
 15561                                 /*Function specific CODE */
 15543                                 /*Function specific CODE */
 15562                                 ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 15544                                 ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 15563                             }
 15545                             }
 15564                             
 15546                             
 15565                         }while(param_value != NULL);
 15547                         }while(param_value != NULL);
 15566                         symbol_c * return_type_symbol;
 15548                         symbol_c * return_type_symbol = last_type_symbol;
 15567                         if (search_expression_type->is_literal_integer_type(last_type_symbol))
       
 15568                             return_type_symbol = &search_constant_type_c::lword_type_name;
       
 15569                         else
       
 15570                             return_type_symbol = last_type_symbol;
       
 15571                         function_type_suffix = return_type_symbol;
 15549                         function_type_suffix = return_type_symbol;
 15572                         break;
 15550                         break;
 15573                         
 15551                         
 15574                     }
 15552                     }
 15575                     
 15553                     
 15609                 if (IN_type_symbol == NULL)
 15587                 if (IN_type_symbol == NULL)
 15610                   IN_type_symbol = last_type_symbol;
 15588                   IN_type_symbol = last_type_symbol;
 15611                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 15589                 ADD_PARAM_LIST(&IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 15612                 symbol_c * return_type_symbol = IN_type_symbol;
 15590                 symbol_c * return_type_symbol = IN_type_symbol;
 15613                 function_type_suffix = return_type_symbol;
 15591                 function_type_suffix = return_type_symbol;
       
 15592                 if (search_expression_type->is_literal_integer_type(function_type_suffix))
       
 15593                     function_type_suffix = &search_constant_type_c::lword_type_name;
 15614                 break;
 15594                 break;
 15615                 
 15595                 
 15616             }
 15596             }
 15617             
 15597             
 15618             
 15598             
 15685                                 ADD_PARAM_LIST(&IN0_param_name, IN0_param_value, IN0_type_symbol, function_param_iterator_c::direction_in)
 15665                                 ADD_PARAM_LIST(&IN0_param_name, IN0_param_value, IN0_type_symbol, function_param_iterator_c::direction_in)
 15686                                 
 15666                                 
 15687                                 if (IN1_type_symbol == NULL)
 15667                                 if (IN1_type_symbol == NULL)
 15688                                   IN1_type_symbol = last_type_symbol;
 15668                                   IN1_type_symbol = last_type_symbol;
 15689                                 ADD_PARAM_LIST(&IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15669                                 ADD_PARAM_LIST(&IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 15690                                 symbol_c * return_type_symbol;
 15670                                 symbol_c * return_type_symbol = last_type_symbol;
 15691                                 if (search_expression_type->is_literal_integer_type(last_type_symbol))
       
 15692                                     return_type_symbol = &search_constant_type_c::lint_type_name;
       
 15693                                 else if (search_expression_type->is_literal_real_type(last_type_symbol))
       
 15694                                     return_type_symbol = &search_constant_type_c::lreal_type_name;
       
 15695                                 else
       
 15696                                     return_type_symbol = last_type_symbol;
       
 15697                                 function_type_suffix = IN0_type_symbol;
 15671                                 function_type_suffix = IN0_type_symbol;
 15698                                 break;
 15672                                 break;
 15699                                 
 15673                                 
 15700                             }
 15674                             }
 15701                             
 15675                             
 15790                                 /*Function specific CODE */
 15764                                 /*Function specific CODE */
 15791                                 ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 15765                                 ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 15792                             }
 15766                             }
 15793                             
 15767                             
 15794                         }while(param_value != NULL);
 15768                         }while(param_value != NULL);
 15795                         symbol_c * return_type_symbol;
 15769                         symbol_c * return_type_symbol = last_type_symbol;
 15796                         if (search_expression_type->is_literal_integer_type(last_type_symbol))
       
 15797                             return_type_symbol = &search_constant_type_c::lint_type_name;
       
 15798                         else if (search_expression_type->is_literal_real_type(last_type_symbol))
       
 15799                             return_type_symbol = &search_constant_type_c::lreal_type_name;
       
 15800                         else
       
 15801                             return_type_symbol = last_type_symbol;
       
 15802                         function_type_suffix = return_type_symbol;
 15770                         function_type_suffix = return_type_symbol;
 15803                         break;
 15771                         break;
 15804                         
 15772                         
 15805                     }
 15773                     }
 15806                     
 15774                     
 15889                                 /*Function specific CODE */
 15857                                 /*Function specific CODE */
 15890                                 ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 15858                                 ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 15891                             }
 15859                             }
 15892                             
 15860                             
 15893                         }while(param_value != NULL);
 15861                         }while(param_value != NULL);
 15894                         symbol_c * return_type_symbol;
 15862                         symbol_c * return_type_symbol = last_type_symbol;
 15895                         if (search_expression_type->is_literal_integer_type(last_type_symbol))
       
 15896                             return_type_symbol = &search_constant_type_c::lint_type_name;
       
 15897                         else if (search_expression_type->is_literal_real_type(last_type_symbol))
       
 15898                             return_type_symbol = &search_constant_type_c::lreal_type_name;
       
 15899                         else
       
 15900                             return_type_symbol = last_type_symbol;
       
 15901                         function_type_suffix = return_type_symbol;
 15863                         function_type_suffix = return_type_symbol;
 15902                         break;
 15864                         break;
 15903                         
 15865                         
 15904                     }
 15866                     }
 15905                     
 15867                     
 15981                                 if (MX_type_symbol == NULL)
 15943                                 if (MX_type_symbol == NULL)
 15982                                   MX_type_symbol = last_type_symbol;
 15944                                   MX_type_symbol = last_type_symbol;
 15983                                 ADD_PARAM_LIST(&MX_param_name, MX_param_value, MX_type_symbol, function_param_iterator_c::direction_in)
 15945                                 ADD_PARAM_LIST(&MX_param_name, MX_param_value, MX_type_symbol, function_param_iterator_c::direction_in)
 15984                                 symbol_c * return_type_symbol = IN_type_symbol;
 15946                                 symbol_c * return_type_symbol = IN_type_symbol;
 15985                                 function_type_suffix = IN_type_symbol;
 15947                                 function_type_suffix = IN_type_symbol;
       
 15948                                 if (search_expression_type->is_literal_integer_type(function_type_suffix))
       
 15949                                     function_type_suffix = &search_constant_type_c::lint_type_name;
       
 15950                                 else if (search_expression_type->is_literal_real_type(function_type_suffix))
       
 15951                                     function_type_suffix = &search_constant_type_c::lreal_type_name;
 15986                                 break;
 15952                                 break;
 15987                                 
 15953                                 
 15988                             }
 15954                             }
 15989                             
 15955                             
 15990                             
 15956                             
 16099                                         /*Function specific CODE */
 16065                                         /*Function specific CODE */
 16100                                         ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 16066                                         ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
 16101                                     }
 16067                                     }
 16102                                     
 16068                                     
 16103                                 }while(param_value != NULL);
 16069                                 }while(param_value != NULL);
 16104                                 symbol_c * return_type_symbol;
 16070                                 symbol_c * return_type_symbol = last_type_symbol;
 16105                                 if (search_expression_type->is_literal_integer_type(last_type_symbol))
       
 16106                                     return_type_symbol = &search_constant_type_c::lint_type_name;
       
 16107                                 else if (search_expression_type->is_literal_real_type(last_type_symbol))
       
 16108                                     return_type_symbol = &search_constant_type_c::lreal_type_name;
       
 16109                                 else
       
 16110                                     return_type_symbol = last_type_symbol;
       
 16111                                 function_type_suffix = return_type_symbol;
 16071                                 function_type_suffix = return_type_symbol;
 16112                                 break;
 16072                                 break;
 16113                                 
 16073                                 
 16114                             }
 16074                             }
 16115                             
 16075