stage4/generate_c/search_type_code.c
changeset 169 bea932bc60b0
parent 165 83963465b773
equal deleted inserted replaced
168:225db59fe6fe 169:bea932bc60b0
    56 
    56 
    57         {
    57         {
    58             identifier_c param_name("IN");
    58             identifier_c param_name("IN");
    59             /* Get the value from a foo(<param_name> = <param_value>) style call */
    59             /* Get the value from a foo(<param_name> = <param_value>) style call */
    60             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
    60             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
    61             
    61             symbol_c *IN_type_symbol = NULL;
    62             /* Get the value from a foo(<param_value>) style call */
    62             
    63             if (IN_param_value == NULL)
    63             /* Get the value from a foo(<param_value>) style call */
    64               IN_param_value = function_call_param_iterator.next();
    64             if (IN_param_value == NULL)
    65             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
    65               IN_param_value = function_call_param_iterator.next();
    66             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
    66             if (IN_param_value != NULL) {
    67             
    67               IN_type_symbol = search_expression_type->get_type(IN_param_value);
    68             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
    68               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
    69             }
       
    70             
       
    71             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
    69             {
    72             {
    70         
    73         
    71                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
    74                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
    72                 return return_type_symbol;
    75                 return return_type_symbol;
    73                 
    76                 
    89 
    92 
    90         {
    93         {
    91             identifier_c param_name("IN");
    94             identifier_c param_name("IN");
    92             /* Get the value from a foo(<param_name> = <param_value>) style call */
    95             /* Get the value from a foo(<param_name> = <param_value>) style call */
    93             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
    96             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
    94             
    97             symbol_c *IN_type_symbol = NULL;
    95             /* Get the value from a foo(<param_value>) style call */
    98             
    96             if (IN_param_value == NULL)
    99             /* Get the value from a foo(<param_value>) style call */
    97               IN_param_value = function_call_param_iterator.next();
   100             if (IN_param_value == NULL)
    98             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   101               IN_param_value = function_call_param_iterator.next();
    99             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   102             if (IN_param_value != NULL) {
   100             
   103               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   101             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   104               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   105             }
       
   106             
       
   107             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   102             {
   108             {
   103         
   109         
   104                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
   110                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
   105                 return return_type_symbol;
   111                 return return_type_symbol;
   106                 
   112                 
   122 
   128 
   123         {
   129         {
   124             identifier_c param_name("IN");
   130             identifier_c param_name("IN");
   125             /* Get the value from a foo(<param_name> = <param_value>) style call */
   131             /* Get the value from a foo(<param_name> = <param_value>) style call */
   126             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   132             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   127             
   133             symbol_c *IN_type_symbol = NULL;
   128             /* Get the value from a foo(<param_value>) style call */
   134             
   129             if (IN_param_value == NULL)
   135             /* Get the value from a foo(<param_value>) style call */
   130               IN_param_value = function_call_param_iterator.next();
   136             if (IN_param_value == NULL)
   131             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   137               IN_param_value = function_call_param_iterator.next();
   132             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   138             if (IN_param_value != NULL) {
   133             
   139               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   134             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   140               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   141             }
       
   142             
       
   143             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   135             {
   144             {
   136         
   145         
   137                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
   146                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
   138                 return return_type_symbol;
   147                 return return_type_symbol;
   139                 
   148                 
   155 
   164 
   156         {
   165         {
   157             identifier_c param_name("IN");
   166             identifier_c param_name("IN");
   158             /* Get the value from a foo(<param_name> = <param_value>) style call */
   167             /* Get the value from a foo(<param_name> = <param_value>) style call */
   159             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   168             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   160             
   169             symbol_c *IN_type_symbol = NULL;
   161             /* Get the value from a foo(<param_value>) style call */
   170             
   162             if (IN_param_value == NULL)
   171             /* Get the value from a foo(<param_value>) style call */
   163               IN_param_value = function_call_param_iterator.next();
   172             if (IN_param_value == NULL)
   164             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   173               IN_param_value = function_call_param_iterator.next();
   165             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   174             if (IN_param_value != NULL) {
   166             
   175               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   167             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   176               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   177             }
       
   178             
       
   179             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   168             {
   180             {
   169         
   181         
   170                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
   182                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
   171                 return return_type_symbol;
   183                 return return_type_symbol;
   172                 
   184                 
   188 
   200 
   189         {
   201         {
   190             identifier_c param_name("IN");
   202             identifier_c param_name("IN");
   191             /* Get the value from a foo(<param_name> = <param_value>) style call */
   203             /* Get the value from a foo(<param_name> = <param_value>) style call */
   192             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   204             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   193             
   205             symbol_c *IN_type_symbol = NULL;
   194             /* Get the value from a foo(<param_value>) style call */
   206             
   195             if (IN_param_value == NULL)
   207             /* Get the value from a foo(<param_value>) style call */
   196               IN_param_value = function_call_param_iterator.next();
   208             if (IN_param_value == NULL)
   197             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   209               IN_param_value = function_call_param_iterator.next();
   198             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   210             if (IN_param_value != NULL) {
   199             
   211               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   200             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   212               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   213             }
       
   214             
       
   215             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   201             {
   216             {
   202         
   217         
   203                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
   218                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
   204                 return return_type_symbol;
   219                 return return_type_symbol;
   205                 
   220                 
   221 
   236 
   222         {
   237         {
   223             identifier_c param_name("IN");
   238             identifier_c param_name("IN");
   224             /* Get the value from a foo(<param_name> = <param_value>) style call */
   239             /* Get the value from a foo(<param_name> = <param_value>) style call */
   225             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   240             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   226             
   241             symbol_c *IN_type_symbol = NULL;
   227             /* Get the value from a foo(<param_value>) style call */
   242             
   228             if (IN_param_value == NULL)
   243             /* Get the value from a foo(<param_value>) style call */
   229               IN_param_value = function_call_param_iterator.next();
   244             if (IN_param_value == NULL)
   230             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   245               IN_param_value = function_call_param_iterator.next();
   231             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   246             if (IN_param_value != NULL) {
   232             
   247               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   233             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   248               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   249             }
       
   250             
       
   251             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   234             {
   252             {
   235         
   253         
   236                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
   254                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
   237                 return return_type_symbol;
   255                 return return_type_symbol;
   238                 
   256                 
   254 
   272 
   255         {
   273         {
   256             identifier_c param_name("IN");
   274             identifier_c param_name("IN");
   257             /* Get the value from a foo(<param_name> = <param_value>) style call */
   275             /* Get the value from a foo(<param_name> = <param_value>) style call */
   258             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   276             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   259             
   277             symbol_c *IN_type_symbol = NULL;
   260             /* Get the value from a foo(<param_value>) style call */
   278             
   261             if (IN_param_value == NULL)
   279             /* Get the value from a foo(<param_value>) style call */
   262               IN_param_value = function_call_param_iterator.next();
   280             if (IN_param_value == NULL)
   263             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   281               IN_param_value = function_call_param_iterator.next();
   264             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   282             if (IN_param_value != NULL) {
   265             
   283               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   266             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   284               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   285             }
       
   286             
       
   287             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   267             {
   288             {
   268         
   289         
   269                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
   290                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
   270                 return return_type_symbol;
   291                 return return_type_symbol;
   271                 
   292                 
   287 
   308 
   288         {
   309         {
   289             identifier_c param_name("IN");
   310             identifier_c param_name("IN");
   290             /* Get the value from a foo(<param_name> = <param_value>) style call */
   311             /* Get the value from a foo(<param_name> = <param_value>) style call */
   291             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   312             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   292             
   313             symbol_c *IN_type_symbol = NULL;
   293             /* Get the value from a foo(<param_value>) style call */
   314             
   294             if (IN_param_value == NULL)
   315             /* Get the value from a foo(<param_value>) style call */
   295               IN_param_value = function_call_param_iterator.next();
   316             if (IN_param_value == NULL)
   296             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   317               IN_param_value = function_call_param_iterator.next();
   297             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   318             if (IN_param_value != NULL) {
   298             
   319               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   299             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   320               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   321             }
       
   322             
       
   323             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   300             {
   324             {
   301         
   325         
   302                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
   326                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
   303                 return return_type_symbol;
   327                 return return_type_symbol;
   304                 
   328                 
   320 
   344 
   321         {
   345         {
   322             identifier_c param_name("IN");
   346             identifier_c param_name("IN");
   323             /* Get the value from a foo(<param_name> = <param_value>) style call */
   347             /* Get the value from a foo(<param_name> = <param_value>) style call */
   324             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   348             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   325             
   349             symbol_c *IN_type_symbol = NULL;
   326             /* Get the value from a foo(<param_value>) style call */
   350             
   327             if (IN_param_value == NULL)
   351             /* Get the value from a foo(<param_value>) style call */
   328               IN_param_value = function_call_param_iterator.next();
   352             if (IN_param_value == NULL)
   329             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   353               IN_param_value = function_call_param_iterator.next();
   330             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   354             if (IN_param_value != NULL) {
   331             
   355               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   332             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   356               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   357             }
       
   358             
       
   359             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   333             {
   360             {
   334         
   361         
   335                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
   362                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
   336                 return return_type_symbol;
   363                 return return_type_symbol;
   337                 
   364                 
   353 
   380 
   354         {
   381         {
   355             identifier_c param_name("IN");
   382             identifier_c param_name("IN");
   356             /* Get the value from a foo(<param_name> = <param_value>) style call */
   383             /* Get the value from a foo(<param_name> = <param_value>) style call */
   357             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   384             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   358             
   385             symbol_c *IN_type_symbol = NULL;
   359             /* Get the value from a foo(<param_value>) style call */
   386             
   360             if (IN_param_value == NULL)
   387             /* Get the value from a foo(<param_value>) style call */
   361               IN_param_value = function_call_param_iterator.next();
   388             if (IN_param_value == NULL)
   362             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   389               IN_param_value = function_call_param_iterator.next();
   363             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   390             if (IN_param_value != NULL) {
   364             
   391               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   365             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   392               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   393             }
       
   394             
       
   395             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   366             {
   396             {
   367         
   397         
   368                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
   398                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
   369                 return return_type_symbol;
   399                 return return_type_symbol;
   370                 
   400                 
   386 
   416 
   387         {
   417         {
   388             identifier_c param_name("IN");
   418             identifier_c param_name("IN");
   389             /* Get the value from a foo(<param_name> = <param_value>) style call */
   419             /* Get the value from a foo(<param_name> = <param_value>) style call */
   390             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   420             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   391             
   421             symbol_c *IN_type_symbol = NULL;
   392             /* Get the value from a foo(<param_value>) style call */
   422             
   393             if (IN_param_value == NULL)
   423             /* Get the value from a foo(<param_value>) style call */
   394               IN_param_value = function_call_param_iterator.next();
   424             if (IN_param_value == NULL)
   395             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   425               IN_param_value = function_call_param_iterator.next();
   396             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   426             if (IN_param_value != NULL) {
   397             
   427               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   398             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   428               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   429             }
       
   430             
       
   431             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   399             {
   432             {
   400         
   433         
   401                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
   434                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
   402                 return return_type_symbol;
   435                 return return_type_symbol;
   403                 
   436                 
   419 
   452 
   420         {
   453         {
   421             identifier_c param_name("IN");
   454             identifier_c param_name("IN");
   422             /* Get the value from a foo(<param_name> = <param_value>) style call */
   455             /* Get the value from a foo(<param_name> = <param_value>) style call */
   423             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   456             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   424             
   457             symbol_c *IN_type_symbol = NULL;
   425             /* Get the value from a foo(<param_value>) style call */
   458             
   426             if (IN_param_value == NULL)
   459             /* Get the value from a foo(<param_value>) style call */
   427               IN_param_value = function_call_param_iterator.next();
   460             if (IN_param_value == NULL)
   428             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   461               IN_param_value = function_call_param_iterator.next();
   429             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   462             if (IN_param_value != NULL) {
   430             
   463               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   431             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   464               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   465             }
       
   466             
       
   467             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   432             {
   468             {
   433         
   469         
   434                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
   470                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
   435                 return return_type_symbol;
   471                 return return_type_symbol;
   436                 
   472                 
   452 
   488 
   453         {
   489         {
   454             identifier_c param_name("IN");
   490             identifier_c param_name("IN");
   455             /* Get the value from a foo(<param_name> = <param_value>) style call */
   491             /* Get the value from a foo(<param_name> = <param_value>) style call */
   456             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   492             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   457             
   493             symbol_c *IN_type_symbol = NULL;
   458             /* Get the value from a foo(<param_value>) style call */
   494             
   459             if (IN_param_value == NULL)
   495             /* Get the value from a foo(<param_value>) style call */
   460               IN_param_value = function_call_param_iterator.next();
   496             if (IN_param_value == NULL)
   461             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   497               IN_param_value = function_call_param_iterator.next();
   462             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   498             if (IN_param_value != NULL) {
   463             
   499               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   464             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   500               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   501             }
       
   502             
       
   503             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   465             {
   504             {
   466         
   505         
   467                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
   506                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
   468                 return return_type_symbol;
   507                 return return_type_symbol;
   469                 
   508                 
   485 
   524 
   486         {
   525         {
   487             identifier_c param_name("IN");
   526             identifier_c param_name("IN");
   488             /* Get the value from a foo(<param_name> = <param_value>) style call */
   527             /* Get the value from a foo(<param_name> = <param_value>) style call */
   489             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   528             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   490             
   529             symbol_c *IN_type_symbol = NULL;
   491             /* Get the value from a foo(<param_value>) style call */
   530             
   492             if (IN_param_value == NULL)
   531             /* Get the value from a foo(<param_value>) style call */
   493               IN_param_value = function_call_param_iterator.next();
   532             if (IN_param_value == NULL)
   494             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   533               IN_param_value = function_call_param_iterator.next();
   495             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   534             if (IN_param_value != NULL) {
   496             
   535               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   497             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   536               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   537             }
       
   538             
       
   539             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   498             {
   540             {
   499         
   541         
   500                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
   542                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
   501                 return return_type_symbol;
   543                 return return_type_symbol;
   502                 
   544                 
   518 
   560 
   519         {
   561         {
   520             identifier_c param_name("IN");
   562             identifier_c param_name("IN");
   521             /* Get the value from a foo(<param_name> = <param_value>) style call */
   563             /* Get the value from a foo(<param_name> = <param_value>) style call */
   522             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   564             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   523             
   565             symbol_c *IN_type_symbol = NULL;
   524             /* Get the value from a foo(<param_value>) style call */
   566             
   525             if (IN_param_value == NULL)
   567             /* Get the value from a foo(<param_value>) style call */
   526               IN_param_value = function_call_param_iterator.next();
   568             if (IN_param_value == NULL)
   527             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   569               IN_param_value = function_call_param_iterator.next();
   528             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   570             if (IN_param_value != NULL) {
   529             
   571               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   530             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   572               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   573             }
       
   574             
       
   575             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   531             {
   576             {
   532         
   577         
   533                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
   578                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
   534                 return return_type_symbol;
   579                 return return_type_symbol;
   535                 
   580                 
   551 
   596 
   552         {
   597         {
   553             identifier_c param_name("IN");
   598             identifier_c param_name("IN");
   554             /* Get the value from a foo(<param_name> = <param_value>) style call */
   599             /* Get the value from a foo(<param_name> = <param_value>) style call */
   555             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   600             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   556             
   601             symbol_c *IN_type_symbol = NULL;
   557             /* Get the value from a foo(<param_value>) style call */
   602             
   558             if (IN_param_value == NULL)
   603             /* Get the value from a foo(<param_value>) style call */
   559               IN_param_value = function_call_param_iterator.next();
   604             if (IN_param_value == NULL)
   560             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   605               IN_param_value = function_call_param_iterator.next();
   561             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   606             if (IN_param_value != NULL) {
   562             
   607               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   563             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   608               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   609             }
       
   610             
       
   611             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   564             {
   612             {
   565         
   613         
   566                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
   614                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
   567                 return return_type_symbol;
   615                 return return_type_symbol;
   568                 
   616                 
   584 
   632 
   585         {
   633         {
   586             identifier_c param_name("IN");
   634             identifier_c param_name("IN");
   587             /* Get the value from a foo(<param_name> = <param_value>) style call */
   635             /* Get the value from a foo(<param_name> = <param_value>) style call */
   588             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   636             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   589             
   637             symbol_c *IN_type_symbol = NULL;
   590             /* Get the value from a foo(<param_value>) style call */
   638             
   591             if (IN_param_value == NULL)
   639             /* Get the value from a foo(<param_value>) style call */
   592               IN_param_value = function_call_param_iterator.next();
   640             if (IN_param_value == NULL)
   593             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   641               IN_param_value = function_call_param_iterator.next();
   594             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   642             if (IN_param_value != NULL) {
   595             
   643               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   596             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   644               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   645             }
       
   646             
       
   647             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   597             {
   648             {
   598         
   649         
   599                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
   650                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
   600                 return return_type_symbol;
   651                 return return_type_symbol;
   601                 
   652                 
   617 
   668 
   618         {
   669         {
   619             identifier_c param_name("IN");
   670             identifier_c param_name("IN");
   620             /* Get the value from a foo(<param_name> = <param_value>) style call */
   671             /* Get the value from a foo(<param_name> = <param_value>) style call */
   621             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   672             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   622             
   673             symbol_c *IN_type_symbol = NULL;
   623             /* Get the value from a foo(<param_value>) style call */
   674             
   624             if (IN_param_value == NULL)
   675             /* Get the value from a foo(<param_value>) style call */
   625               IN_param_value = function_call_param_iterator.next();
   676             if (IN_param_value == NULL)
   626             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   677               IN_param_value = function_call_param_iterator.next();
   627             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   678             if (IN_param_value != NULL) {
   628             
   679               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   629             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   680               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   681             }
       
   682             
       
   683             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   630             {
   684             {
   631         
   685         
   632                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
   686                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
   633                 return return_type_symbol;
   687                 return return_type_symbol;
   634                 
   688                 
   650 
   704 
   651         {
   705         {
   652             identifier_c param_name("IN");
   706             identifier_c param_name("IN");
   653             /* Get the value from a foo(<param_name> = <param_value>) style call */
   707             /* Get the value from a foo(<param_name> = <param_value>) style call */
   654             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   708             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   655             
   709             symbol_c *IN_type_symbol = NULL;
   656             /* Get the value from a foo(<param_value>) style call */
   710             
   657             if (IN_param_value == NULL)
   711             /* Get the value from a foo(<param_value>) style call */
   658               IN_param_value = function_call_param_iterator.next();
   712             if (IN_param_value == NULL)
   659             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   713               IN_param_value = function_call_param_iterator.next();
   660             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   714             if (IN_param_value != NULL) {
   661             
   715               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   662             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   716               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   717             }
       
   718             
       
   719             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
   663             {
   720             {
   664         
   721         
   665                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
   722                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
   666                 return return_type_symbol;
   723                 return return_type_symbol;
   667                 
   724                 
   683 
   740 
   684         {
   741         {
   685             identifier_c param_name("IN");
   742             identifier_c param_name("IN");
   686             /* Get the value from a foo(<param_name> = <param_value>) style call */
   743             /* Get the value from a foo(<param_name> = <param_value>) style call */
   687             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   744             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   688             
   745             symbol_c *IN_type_symbol = NULL;
   689             /* Get the value from a foo(<param_value>) style call */
   746             
   690             if (IN_param_value == NULL)
   747             /* Get the value from a foo(<param_value>) style call */
   691               IN_param_value = function_call_param_iterator.next();
   748             if (IN_param_value == NULL)
   692             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   749               IN_param_value = function_call_param_iterator.next();
   693             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   750             if (IN_param_value != NULL) {
   694             
   751               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   695             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   752               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   753             }
       
   754             
       
   755             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   696             {
   756             {
   697         
   757         
   698                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
   758                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
   699                 return return_type_symbol;
   759                 return return_type_symbol;
   700                 
   760                 
   716 
   776 
   717         {
   777         {
   718             identifier_c param_name("IN");
   778             identifier_c param_name("IN");
   719             /* Get the value from a foo(<param_name> = <param_value>) style call */
   779             /* Get the value from a foo(<param_name> = <param_value>) style call */
   720             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   780             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   721             
   781             symbol_c *IN_type_symbol = NULL;
   722             /* Get the value from a foo(<param_value>) style call */
   782             
   723             if (IN_param_value == NULL)
   783             /* Get the value from a foo(<param_value>) style call */
   724               IN_param_value = function_call_param_iterator.next();
   784             if (IN_param_value == NULL)
   725             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   785               IN_param_value = function_call_param_iterator.next();
   726             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   786             if (IN_param_value != NULL) {
   727             
   787               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   728             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   788               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   789             }
       
   790             
       
   791             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   729             {
   792             {
   730         
   793         
   731                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
   794                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
   732                 return return_type_symbol;
   795                 return return_type_symbol;
   733                 
   796                 
   749 
   812 
   750         {
   813         {
   751             identifier_c param_name("IN");
   814             identifier_c param_name("IN");
   752             /* Get the value from a foo(<param_name> = <param_value>) style call */
   815             /* Get the value from a foo(<param_name> = <param_value>) style call */
   753             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   816             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   754             
   817             symbol_c *IN_type_symbol = NULL;
   755             /* Get the value from a foo(<param_value>) style call */
   818             
   756             if (IN_param_value == NULL)
   819             /* Get the value from a foo(<param_value>) style call */
   757               IN_param_value = function_call_param_iterator.next();
   820             if (IN_param_value == NULL)
   758             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   821               IN_param_value = function_call_param_iterator.next();
   759             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   822             if (IN_param_value != NULL) {
   760             
   823               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   761             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   824               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   825             }
       
   826             
       
   827             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   762             {
   828             {
   763         
   829         
   764                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
   830                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
   765                 return return_type_symbol;
   831                 return return_type_symbol;
   766                 
   832                 
   782 
   848 
   783         {
   849         {
   784             identifier_c param_name("IN");
   850             identifier_c param_name("IN");
   785             /* Get the value from a foo(<param_name> = <param_value>) style call */
   851             /* Get the value from a foo(<param_name> = <param_value>) style call */
   786             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   852             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   787             
   853             symbol_c *IN_type_symbol = NULL;
   788             /* Get the value from a foo(<param_value>) style call */
   854             
   789             if (IN_param_value == NULL)
   855             /* Get the value from a foo(<param_value>) style call */
   790               IN_param_value = function_call_param_iterator.next();
   856             if (IN_param_value == NULL)
   791             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   857               IN_param_value = function_call_param_iterator.next();
   792             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   858             if (IN_param_value != NULL) {
   793             
   859               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   794             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   860               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   861             }
       
   862             
       
   863             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   795             {
   864             {
   796         
   865         
   797                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
   866                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
   798                 return return_type_symbol;
   867                 return return_type_symbol;
   799                 
   868                 
   815 
   884 
   816         {
   885         {
   817             identifier_c param_name("IN");
   886             identifier_c param_name("IN");
   818             /* Get the value from a foo(<param_name> = <param_value>) style call */
   887             /* Get the value from a foo(<param_name> = <param_value>) style call */
   819             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   888             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   820             
   889             symbol_c *IN_type_symbol = NULL;
   821             /* Get the value from a foo(<param_value>) style call */
   890             
   822             if (IN_param_value == NULL)
   891             /* Get the value from a foo(<param_value>) style call */
   823               IN_param_value = function_call_param_iterator.next();
   892             if (IN_param_value == NULL)
   824             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   893               IN_param_value = function_call_param_iterator.next();
   825             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   894             if (IN_param_value != NULL) {
   826             
   895               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   827             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   896               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   897             }
       
   898             
       
   899             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   828             {
   900             {
   829         
   901         
   830                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
   902                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
   831                 return return_type_symbol;
   903                 return return_type_symbol;
   832                 
   904                 
   848 
   920 
   849         {
   921         {
   850             identifier_c param_name("IN");
   922             identifier_c param_name("IN");
   851             /* Get the value from a foo(<param_name> = <param_value>) style call */
   923             /* Get the value from a foo(<param_name> = <param_value>) style call */
   852             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   924             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   853             
   925             symbol_c *IN_type_symbol = NULL;
   854             /* Get the value from a foo(<param_value>) style call */
   926             
   855             if (IN_param_value == NULL)
   927             /* Get the value from a foo(<param_value>) style call */
   856               IN_param_value = function_call_param_iterator.next();
   928             if (IN_param_value == NULL)
   857             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   929               IN_param_value = function_call_param_iterator.next();
   858             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   930             if (IN_param_value != NULL) {
   859             
   931               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   860             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   932               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   933             }
       
   934             
       
   935             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   861             {
   936             {
   862         
   937         
   863                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
   938                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
   864                 return return_type_symbol;
   939                 return return_type_symbol;
   865                 
   940                 
   881 
   956 
   882         {
   957         {
   883             identifier_c param_name("IN");
   958             identifier_c param_name("IN");
   884             /* Get the value from a foo(<param_name> = <param_value>) style call */
   959             /* Get the value from a foo(<param_name> = <param_value>) style call */
   885             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   960             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   886             
   961             symbol_c *IN_type_symbol = NULL;
   887             /* Get the value from a foo(<param_value>) style call */
   962             
   888             if (IN_param_value == NULL)
   963             /* Get the value from a foo(<param_value>) style call */
   889               IN_param_value = function_call_param_iterator.next();
   964             if (IN_param_value == NULL)
   890             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
   965               IN_param_value = function_call_param_iterator.next();
   891             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
   966             if (IN_param_value != NULL) {
   892             
   967               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   893             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   968               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
   969             }
       
   970             
       
   971             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   894             {
   972             {
   895         
   973         
   896                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
   974                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
   897                 return return_type_symbol;
   975                 return return_type_symbol;
   898                 
   976                 
   914 
   992 
   915         {
   993         {
   916             identifier_c param_name("IN");
   994             identifier_c param_name("IN");
   917             /* Get the value from a foo(<param_name> = <param_value>) style call */
   995             /* Get the value from a foo(<param_name> = <param_value>) style call */
   918             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   996             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   919             
   997             symbol_c *IN_type_symbol = NULL;
   920             /* Get the value from a foo(<param_value>) style call */
   998             
   921             if (IN_param_value == NULL)
   999             /* Get the value from a foo(<param_value>) style call */
   922               IN_param_value = function_call_param_iterator.next();
  1000             if (IN_param_value == NULL)
   923             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1001               IN_param_value = function_call_param_iterator.next();
   924             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1002             if (IN_param_value != NULL) {
   925             
  1003               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   926             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1004               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1005             }
       
  1006             
       
  1007             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   927             {
  1008             {
   928         
  1009         
   929                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  1010                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
   930                 return return_type_symbol;
  1011                 return return_type_symbol;
   931                 
  1012                 
   947 
  1028 
   948         {
  1029         {
   949             identifier_c param_name("IN");
  1030             identifier_c param_name("IN");
   950             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1031             /* Get the value from a foo(<param_name> = <param_value>) style call */
   951             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1032             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   952             
  1033             symbol_c *IN_type_symbol = NULL;
   953             /* Get the value from a foo(<param_value>) style call */
  1034             
   954             if (IN_param_value == NULL)
  1035             /* Get the value from a foo(<param_value>) style call */
   955               IN_param_value = function_call_param_iterator.next();
  1036             if (IN_param_value == NULL)
   956             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1037               IN_param_value = function_call_param_iterator.next();
   957             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1038             if (IN_param_value != NULL) {
   958             
  1039               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   959             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1040               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1041             }
       
  1042             
       
  1043             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   960             {
  1044             {
   961         
  1045         
   962                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  1046                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
   963                 return return_type_symbol;
  1047                 return return_type_symbol;
   964                 
  1048                 
   980 
  1064 
   981         {
  1065         {
   982             identifier_c param_name("IN");
  1066             identifier_c param_name("IN");
   983             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1067             /* Get the value from a foo(<param_name> = <param_value>) style call */
   984             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1068             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
   985             
  1069             symbol_c *IN_type_symbol = NULL;
   986             /* Get the value from a foo(<param_value>) style call */
  1070             
   987             if (IN_param_value == NULL)
  1071             /* Get the value from a foo(<param_value>) style call */
   988               IN_param_value = function_call_param_iterator.next();
  1072             if (IN_param_value == NULL)
   989             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1073               IN_param_value = function_call_param_iterator.next();
   990             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1074             if (IN_param_value != NULL) {
   991             
  1075               IN_type_symbol = search_expression_type->get_type(IN_param_value);
   992             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1076               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1077             }
       
  1078             
       
  1079             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
   993             {
  1080             {
   994         
  1081         
   995                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  1082                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
   996                 return return_type_symbol;
  1083                 return return_type_symbol;
   997                 
  1084                 
  1013 
  1100 
  1014         {
  1101         {
  1015             identifier_c param_name("IN");
  1102             identifier_c param_name("IN");
  1016             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1103             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1017             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1104             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1018             
  1105             symbol_c *IN_type_symbol = NULL;
  1019             /* Get the value from a foo(<param_value>) style call */
  1106             
  1020             if (IN_param_value == NULL)
  1107             /* Get the value from a foo(<param_value>) style call */
  1021               IN_param_value = function_call_param_iterator.next();
  1108             if (IN_param_value == NULL)
  1022             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1109               IN_param_value = function_call_param_iterator.next();
  1023             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1110             if (IN_param_value != NULL) {
  1024             
  1111               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1025             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1112               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1113             }
       
  1114             
       
  1115             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1026             {
  1116             {
  1027         
  1117         
  1028                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  1118                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  1029                 return return_type_symbol;
  1119                 return return_type_symbol;
  1030                 
  1120                 
  1046 
  1136 
  1047         {
  1137         {
  1048             identifier_c param_name("IN");
  1138             identifier_c param_name("IN");
  1049             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1139             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1050             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1140             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1051             
  1141             symbol_c *IN_type_symbol = NULL;
  1052             /* Get the value from a foo(<param_value>) style call */
  1142             
  1053             if (IN_param_value == NULL)
  1143             /* Get the value from a foo(<param_value>) style call */
  1054               IN_param_value = function_call_param_iterator.next();
  1144             if (IN_param_value == NULL)
  1055             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1145               IN_param_value = function_call_param_iterator.next();
  1056             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1146             if (IN_param_value != NULL) {
  1057             
  1147               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1058             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1148               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1149             }
       
  1150             
       
  1151             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1059             {
  1152             {
  1060         
  1153         
  1061                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  1154                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  1062                 return return_type_symbol;
  1155                 return return_type_symbol;
  1063                 
  1156                 
  1079 
  1172 
  1080         {
  1173         {
  1081             identifier_c param_name("IN");
  1174             identifier_c param_name("IN");
  1082             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1175             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1083             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1176             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1084             
  1177             symbol_c *IN_type_symbol = NULL;
  1085             /* Get the value from a foo(<param_value>) style call */
  1178             
  1086             if (IN_param_value == NULL)
  1179             /* Get the value from a foo(<param_value>) style call */
  1087               IN_param_value = function_call_param_iterator.next();
  1180             if (IN_param_value == NULL)
  1088             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1181               IN_param_value = function_call_param_iterator.next();
  1089             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1182             if (IN_param_value != NULL) {
  1090             
  1183               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1091             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1184               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1185             }
       
  1186             
       
  1187             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1092             {
  1188             {
  1093         
  1189         
  1094                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  1190                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  1095                 return return_type_symbol;
  1191                 return return_type_symbol;
  1096                 
  1192                 
  1112 
  1208 
  1113         {
  1209         {
  1114             identifier_c param_name("IN");
  1210             identifier_c param_name("IN");
  1115             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1211             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1116             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1212             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1117             
  1213             symbol_c *IN_type_symbol = NULL;
  1118             /* Get the value from a foo(<param_value>) style call */
  1214             
  1119             if (IN_param_value == NULL)
  1215             /* Get the value from a foo(<param_value>) style call */
  1120               IN_param_value = function_call_param_iterator.next();
  1216             if (IN_param_value == NULL)
  1121             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1217               IN_param_value = function_call_param_iterator.next();
  1122             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1218             if (IN_param_value != NULL) {
  1123             
  1219               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1124             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1220               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1221             }
       
  1222             
       
  1223             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1125             {
  1224             {
  1126         
  1225         
  1127                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  1226                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  1128                 return return_type_symbol;
  1227                 return return_type_symbol;
  1129                 
  1228                 
  1145 
  1244 
  1146         {
  1245         {
  1147             identifier_c param_name("IN");
  1246             identifier_c param_name("IN");
  1148             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1247             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1149             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1248             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1150             
  1249             symbol_c *IN_type_symbol = NULL;
  1151             /* Get the value from a foo(<param_value>) style call */
  1250             
  1152             if (IN_param_value == NULL)
  1251             /* Get the value from a foo(<param_value>) style call */
  1153               IN_param_value = function_call_param_iterator.next();
  1252             if (IN_param_value == NULL)
  1154             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1253               IN_param_value = function_call_param_iterator.next();
  1155             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1254             if (IN_param_value != NULL) {
  1156             
  1255               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1157             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1256               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1257             }
       
  1258             
       
  1259             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1158             {
  1260             {
  1159         
  1261         
  1160                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  1262                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  1161                 return return_type_symbol;
  1263                 return return_type_symbol;
  1162                 
  1264                 
  1178 
  1280 
  1179         {
  1281         {
  1180             identifier_c param_name("IN");
  1282             identifier_c param_name("IN");
  1181             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1283             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1182             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1284             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1183             
  1285             symbol_c *IN_type_symbol = NULL;
  1184             /* Get the value from a foo(<param_value>) style call */
  1286             
  1185             if (IN_param_value == NULL)
  1287             /* Get the value from a foo(<param_value>) style call */
  1186               IN_param_value = function_call_param_iterator.next();
  1288             if (IN_param_value == NULL)
  1187             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1289               IN_param_value = function_call_param_iterator.next();
  1188             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1290             if (IN_param_value != NULL) {
  1189             
  1291               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1190             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1292               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1293             }
       
  1294             
       
  1295             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1191             {
  1296             {
  1192         
  1297         
  1193                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  1298                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  1194                 return return_type_symbol;
  1299                 return return_type_symbol;
  1195                 
  1300                 
  1211 
  1316 
  1212         {
  1317         {
  1213             identifier_c param_name("IN");
  1318             identifier_c param_name("IN");
  1214             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1319             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1215             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1320             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1216             
  1321             symbol_c *IN_type_symbol = NULL;
  1217             /* Get the value from a foo(<param_value>) style call */
  1322             
  1218             if (IN_param_value == NULL)
  1323             /* Get the value from a foo(<param_value>) style call */
  1219               IN_param_value = function_call_param_iterator.next();
  1324             if (IN_param_value == NULL)
  1220             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1325               IN_param_value = function_call_param_iterator.next();
  1221             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1326             if (IN_param_value != NULL) {
  1222             
  1327               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1223             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1328               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1329             }
       
  1330             
       
  1331             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1224             {
  1332             {
  1225         
  1333         
  1226                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  1334                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  1227                 return return_type_symbol;
  1335                 return return_type_symbol;
  1228                 
  1336                 
  1244 
  1352 
  1245         {
  1353         {
  1246             identifier_c param_name("IN");
  1354             identifier_c param_name("IN");
  1247             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1355             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1248             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1356             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1249             
  1357             symbol_c *IN_type_symbol = NULL;
  1250             /* Get the value from a foo(<param_value>) style call */
  1358             
  1251             if (IN_param_value == NULL)
  1359             /* Get the value from a foo(<param_value>) style call */
  1252               IN_param_value = function_call_param_iterator.next();
  1360             if (IN_param_value == NULL)
  1253             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1361               IN_param_value = function_call_param_iterator.next();
  1254             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1362             if (IN_param_value != NULL) {
  1255             
  1363               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1256             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1364               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1365             }
       
  1366             
       
  1367             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1257             {
  1368             {
  1258         
  1369         
  1259                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  1370                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  1260                 return return_type_symbol;
  1371                 return return_type_symbol;
  1261                 
  1372                 
  1277 
  1388 
  1278         {
  1389         {
  1279             identifier_c param_name("IN");
  1390             identifier_c param_name("IN");
  1280             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1391             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1281             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1392             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1282             
  1393             symbol_c *IN_type_symbol = NULL;
  1283             /* Get the value from a foo(<param_value>) style call */
  1394             
  1284             if (IN_param_value == NULL)
  1395             /* Get the value from a foo(<param_value>) style call */
  1285               IN_param_value = function_call_param_iterator.next();
  1396             if (IN_param_value == NULL)
  1286             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1397               IN_param_value = function_call_param_iterator.next();
  1287             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1398             if (IN_param_value != NULL) {
  1288             
  1399               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1289             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1400               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1401             }
       
  1402             
       
  1403             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
  1290             {
  1404             {
  1291         
  1405         
  1292                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  1406                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  1293                 return return_type_symbol;
  1407                 return return_type_symbol;
  1294                 
  1408                 
  1310 
  1424 
  1311         {
  1425         {
  1312             identifier_c param_name("IN");
  1426             identifier_c param_name("IN");
  1313             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1427             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1314             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1428             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1315             
  1429             symbol_c *IN_type_symbol = NULL;
  1316             /* Get the value from a foo(<param_value>) style call */
  1430             
  1317             if (IN_param_value == NULL)
  1431             /* Get the value from a foo(<param_value>) style call */
  1318               IN_param_value = function_call_param_iterator.next();
  1432             if (IN_param_value == NULL)
  1319             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1433               IN_param_value = function_call_param_iterator.next();
  1320             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1434             if (IN_param_value != NULL) {
  1321             
  1435               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1322             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1436               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1437             }
       
  1438             
       
  1439             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1323             {
  1440             {
  1324         
  1441         
  1325                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  1442                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  1326                 return return_type_symbol;
  1443                 return return_type_symbol;
  1327                 
  1444                 
  1343 
  1460 
  1344         {
  1461         {
  1345             identifier_c param_name("IN");
  1462             identifier_c param_name("IN");
  1346             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1463             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1347             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1464             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1348             
  1465             symbol_c *IN_type_symbol = NULL;
  1349             /* Get the value from a foo(<param_value>) style call */
  1466             
  1350             if (IN_param_value == NULL)
  1467             /* Get the value from a foo(<param_value>) style call */
  1351               IN_param_value = function_call_param_iterator.next();
  1468             if (IN_param_value == NULL)
  1352             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1469               IN_param_value = function_call_param_iterator.next();
  1353             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1470             if (IN_param_value != NULL) {
  1354             
  1471               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1355             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1472               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1473             }
       
  1474             
       
  1475             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1356             {
  1476             {
  1357         
  1477         
  1358                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  1478                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  1359                 return return_type_symbol;
  1479                 return return_type_symbol;
  1360                 
  1480                 
  1376 
  1496 
  1377         {
  1497         {
  1378             identifier_c param_name("IN");
  1498             identifier_c param_name("IN");
  1379             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1499             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1380             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1500             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1381             
  1501             symbol_c *IN_type_symbol = NULL;
  1382             /* Get the value from a foo(<param_value>) style call */
  1502             
  1383             if (IN_param_value == NULL)
  1503             /* Get the value from a foo(<param_value>) style call */
  1384               IN_param_value = function_call_param_iterator.next();
  1504             if (IN_param_value == NULL)
  1385             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1505               IN_param_value = function_call_param_iterator.next();
  1386             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1506             if (IN_param_value != NULL) {
  1387             
  1507               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1388             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1508               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1509             }
       
  1510             
       
  1511             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1389             {
  1512             {
  1390         
  1513         
  1391                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  1514                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  1392                 return return_type_symbol;
  1515                 return return_type_symbol;
  1393                 
  1516                 
  1409 
  1532 
  1410         {
  1533         {
  1411             identifier_c param_name("IN");
  1534             identifier_c param_name("IN");
  1412             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1535             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1413             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1536             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1414             
  1537             symbol_c *IN_type_symbol = NULL;
  1415             /* Get the value from a foo(<param_value>) style call */
  1538             
  1416             if (IN_param_value == NULL)
  1539             /* Get the value from a foo(<param_value>) style call */
  1417               IN_param_value = function_call_param_iterator.next();
  1540             if (IN_param_value == NULL)
  1418             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1541               IN_param_value = function_call_param_iterator.next();
  1419             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1542             if (IN_param_value != NULL) {
  1420             
  1543               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1421             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1544               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1545             }
       
  1546             
       
  1547             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1422             {
  1548             {
  1423         
  1549         
  1424                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  1550                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  1425                 return return_type_symbol;
  1551                 return return_type_symbol;
  1426                 
  1552                 
  1442 
  1568 
  1443         {
  1569         {
  1444             identifier_c param_name("IN");
  1570             identifier_c param_name("IN");
  1445             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1571             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1446             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1572             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1447             
  1573             symbol_c *IN_type_symbol = NULL;
  1448             /* Get the value from a foo(<param_value>) style call */
  1574             
  1449             if (IN_param_value == NULL)
  1575             /* Get the value from a foo(<param_value>) style call */
  1450               IN_param_value = function_call_param_iterator.next();
  1576             if (IN_param_value == NULL)
  1451             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1577               IN_param_value = function_call_param_iterator.next();
  1452             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1578             if (IN_param_value != NULL) {
  1453             
  1579               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1454             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1580               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1581             }
       
  1582             
       
  1583             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1455             {
  1584             {
  1456         
  1585         
  1457                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  1586                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  1458                 return return_type_symbol;
  1587                 return return_type_symbol;
  1459                 
  1588                 
  1475 
  1604 
  1476         {
  1605         {
  1477             identifier_c param_name("IN");
  1606             identifier_c param_name("IN");
  1478             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1607             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1479             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1608             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1480             
  1609             symbol_c *IN_type_symbol = NULL;
  1481             /* Get the value from a foo(<param_value>) style call */
  1610             
  1482             if (IN_param_value == NULL)
  1611             /* Get the value from a foo(<param_value>) style call */
  1483               IN_param_value = function_call_param_iterator.next();
  1612             if (IN_param_value == NULL)
  1484             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1613               IN_param_value = function_call_param_iterator.next();
  1485             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1614             if (IN_param_value != NULL) {
  1486             
  1615               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1487             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1616               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1617             }
       
  1618             
       
  1619             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1488             {
  1620             {
  1489         
  1621         
  1490                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  1622                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  1491                 return return_type_symbol;
  1623                 return return_type_symbol;
  1492                 
  1624                 
  1508 
  1640 
  1509         {
  1641         {
  1510             identifier_c param_name("IN");
  1642             identifier_c param_name("IN");
  1511             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1643             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1512             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1644             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1513             
  1645             symbol_c *IN_type_symbol = NULL;
  1514             /* Get the value from a foo(<param_value>) style call */
  1646             
  1515             if (IN_param_value == NULL)
  1647             /* Get the value from a foo(<param_value>) style call */
  1516               IN_param_value = function_call_param_iterator.next();
  1648             if (IN_param_value == NULL)
  1517             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1649               IN_param_value = function_call_param_iterator.next();
  1518             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1650             if (IN_param_value != NULL) {
  1519             
  1651               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1520             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1652               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1653             }
       
  1654             
       
  1655             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1521             {
  1656             {
  1522         
  1657         
  1523                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  1658                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  1524                 return return_type_symbol;
  1659                 return return_type_symbol;
  1525                 
  1660                 
  1541 
  1676 
  1542         {
  1677         {
  1543             identifier_c param_name("IN");
  1678             identifier_c param_name("IN");
  1544             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1679             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1545             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1680             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1546             
  1681             symbol_c *IN_type_symbol = NULL;
  1547             /* Get the value from a foo(<param_value>) style call */
  1682             
  1548             if (IN_param_value == NULL)
  1683             /* Get the value from a foo(<param_value>) style call */
  1549               IN_param_value = function_call_param_iterator.next();
  1684             if (IN_param_value == NULL)
  1550             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1685               IN_param_value = function_call_param_iterator.next();
  1551             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1686             if (IN_param_value != NULL) {
  1552             
  1687               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1553             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1688               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1689             }
       
  1690             
       
  1691             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1554             {
  1692             {
  1555         
  1693         
  1556                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  1694                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  1557                 return return_type_symbol;
  1695                 return return_type_symbol;
  1558                 
  1696                 
  1574 
  1712 
  1575         {
  1713         {
  1576             identifier_c param_name("IN");
  1714             identifier_c param_name("IN");
  1577             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1715             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1578             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1716             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1579             
  1717             symbol_c *IN_type_symbol = NULL;
  1580             /* Get the value from a foo(<param_value>) style call */
  1718             
  1581             if (IN_param_value == NULL)
  1719             /* Get the value from a foo(<param_value>) style call */
  1582               IN_param_value = function_call_param_iterator.next();
  1720             if (IN_param_value == NULL)
  1583             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1721               IN_param_value = function_call_param_iterator.next();
  1584             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1722             if (IN_param_value != NULL) {
  1585             
  1723               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1586             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1724               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1725             }
       
  1726             
       
  1727             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1587             {
  1728             {
  1588         
  1729         
  1589                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  1730                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  1590                 return return_type_symbol;
  1731                 return return_type_symbol;
  1591                 
  1732                 
  1607 
  1748 
  1608         {
  1749         {
  1609             identifier_c param_name("IN");
  1750             identifier_c param_name("IN");
  1610             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1751             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1611             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1752             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1612             
  1753             symbol_c *IN_type_symbol = NULL;
  1613             /* Get the value from a foo(<param_value>) style call */
  1754             
  1614             if (IN_param_value == NULL)
  1755             /* Get the value from a foo(<param_value>) style call */
  1615               IN_param_value = function_call_param_iterator.next();
  1756             if (IN_param_value == NULL)
  1616             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1757               IN_param_value = function_call_param_iterator.next();
  1617             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1758             if (IN_param_value != NULL) {
  1618             
  1759               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1619             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1760               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1761             }
       
  1762             
       
  1763             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1620             {
  1764             {
  1621         
  1765         
  1622                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  1766                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  1623                 return return_type_symbol;
  1767                 return return_type_symbol;
  1624                 
  1768                 
  1640 
  1784 
  1641         {
  1785         {
  1642             identifier_c param_name("IN");
  1786             identifier_c param_name("IN");
  1643             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1787             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1644             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1788             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1645             
  1789             symbol_c *IN_type_symbol = NULL;
  1646             /* Get the value from a foo(<param_value>) style call */
  1790             
  1647             if (IN_param_value == NULL)
  1791             /* Get the value from a foo(<param_value>) style call */
  1648               IN_param_value = function_call_param_iterator.next();
  1792             if (IN_param_value == NULL)
  1649             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1793               IN_param_value = function_call_param_iterator.next();
  1650             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1794             if (IN_param_value != NULL) {
  1651             
  1795               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1652             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1796               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1797             }
       
  1798             
       
  1799             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1653             {
  1800             {
  1654         
  1801         
  1655                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  1802                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  1656                 return return_type_symbol;
  1803                 return return_type_symbol;
  1657                 
  1804                 
  1673 
  1820 
  1674         {
  1821         {
  1675             identifier_c param_name("IN");
  1822             identifier_c param_name("IN");
  1676             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1823             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1677             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1824             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1678             
  1825             symbol_c *IN_type_symbol = NULL;
  1679             /* Get the value from a foo(<param_value>) style call */
  1826             
  1680             if (IN_param_value == NULL)
  1827             /* Get the value from a foo(<param_value>) style call */
  1681               IN_param_value = function_call_param_iterator.next();
  1828             if (IN_param_value == NULL)
  1682             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1829               IN_param_value = function_call_param_iterator.next();
  1683             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1830             if (IN_param_value != NULL) {
  1684             
  1831               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1685             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1832               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1833             }
       
  1834             
       
  1835             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1686             {
  1836             {
  1687         
  1837         
  1688                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  1838                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  1689                 return return_type_symbol;
  1839                 return return_type_symbol;
  1690                 
  1840                 
  1706 
  1856 
  1707         {
  1857         {
  1708             identifier_c param_name("IN");
  1858             identifier_c param_name("IN");
  1709             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1859             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1710             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1860             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1711             
  1861             symbol_c *IN_type_symbol = NULL;
  1712             /* Get the value from a foo(<param_value>) style call */
  1862             
  1713             if (IN_param_value == NULL)
  1863             /* Get the value from a foo(<param_value>) style call */
  1714               IN_param_value = function_call_param_iterator.next();
  1864             if (IN_param_value == NULL)
  1715             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1865               IN_param_value = function_call_param_iterator.next();
  1716             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1866             if (IN_param_value != NULL) {
  1717             
  1867               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1718             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1868               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1869             }
       
  1870             
       
  1871             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1719             {
  1872             {
  1720         
  1873         
  1721                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  1874                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  1722                 return return_type_symbol;
  1875                 return return_type_symbol;
  1723                 
  1876                 
  1739 
  1892 
  1740         {
  1893         {
  1741             identifier_c param_name("IN");
  1894             identifier_c param_name("IN");
  1742             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1895             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1743             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1896             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1744             
  1897             symbol_c *IN_type_symbol = NULL;
  1745             /* Get the value from a foo(<param_value>) style call */
  1898             
  1746             if (IN_param_value == NULL)
  1899             /* Get the value from a foo(<param_value>) style call */
  1747               IN_param_value = function_call_param_iterator.next();
  1900             if (IN_param_value == NULL)
  1748             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1901               IN_param_value = function_call_param_iterator.next();
  1749             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1902             if (IN_param_value != NULL) {
  1750             
  1903               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1751             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1904               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1905             }
       
  1906             
       
  1907             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1752             {
  1908             {
  1753         
  1909         
  1754                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  1910                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  1755                 return return_type_symbol;
  1911                 return return_type_symbol;
  1756                 
  1912                 
  1772 
  1928 
  1773         {
  1929         {
  1774             identifier_c param_name("IN");
  1930             identifier_c param_name("IN");
  1775             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1931             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1776             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1932             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1777             
  1933             symbol_c *IN_type_symbol = NULL;
  1778             /* Get the value from a foo(<param_value>) style call */
  1934             
  1779             if (IN_param_value == NULL)
  1935             /* Get the value from a foo(<param_value>) style call */
  1780               IN_param_value = function_call_param_iterator.next();
  1936             if (IN_param_value == NULL)
  1781             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1937               IN_param_value = function_call_param_iterator.next();
  1782             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1938             if (IN_param_value != NULL) {
  1783             
  1939               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1784             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1940               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1941             }
       
  1942             
       
  1943             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1785             {
  1944             {
  1786         
  1945         
  1787                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  1946                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  1788                 return return_type_symbol;
  1947                 return return_type_symbol;
  1789                 
  1948                 
  1805 
  1964 
  1806         {
  1965         {
  1807             identifier_c param_name("IN");
  1966             identifier_c param_name("IN");
  1808             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1967             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1809             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1968             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1810             
  1969             symbol_c *IN_type_symbol = NULL;
  1811             /* Get the value from a foo(<param_value>) style call */
  1970             
  1812             if (IN_param_value == NULL)
  1971             /* Get the value from a foo(<param_value>) style call */
  1813               IN_param_value = function_call_param_iterator.next();
  1972             if (IN_param_value == NULL)
  1814             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1973               IN_param_value = function_call_param_iterator.next();
  1815             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  1974             if (IN_param_value != NULL) {
  1816             
  1975               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1817             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1976               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  1977             }
       
  1978             
       
  1979             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1818             {
  1980             {
  1819         
  1981         
  1820                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  1982                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  1821                 return return_type_symbol;
  1983                 return return_type_symbol;
  1822                 
  1984                 
  1838 
  2000 
  1839         {
  2001         {
  1840             identifier_c param_name("IN");
  2002             identifier_c param_name("IN");
  1841             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2003             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1842             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2004             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1843             
  2005             symbol_c *IN_type_symbol = NULL;
  1844             /* Get the value from a foo(<param_value>) style call */
  2006             
  1845             if (IN_param_value == NULL)
  2007             /* Get the value from a foo(<param_value>) style call */
  1846               IN_param_value = function_call_param_iterator.next();
  2008             if (IN_param_value == NULL)
  1847             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2009               IN_param_value = function_call_param_iterator.next();
  1848             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2010             if (IN_param_value != NULL) {
  1849             
  2011               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1850             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  2012               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2013             }
       
  2014             
       
  2015             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1851             {
  2016             {
  1852         
  2017         
  1853                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  2018                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  1854                 return return_type_symbol;
  2019                 return return_type_symbol;
  1855                 
  2020                 
  1871 
  2036 
  1872         {
  2037         {
  1873             identifier_c param_name("IN");
  2038             identifier_c param_name("IN");
  1874             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2039             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1875             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2040             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1876             
  2041             symbol_c *IN_type_symbol = NULL;
  1877             /* Get the value from a foo(<param_value>) style call */
  2042             
  1878             if (IN_param_value == NULL)
  2043             /* Get the value from a foo(<param_value>) style call */
  1879               IN_param_value = function_call_param_iterator.next();
  2044             if (IN_param_value == NULL)
  1880             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2045               IN_param_value = function_call_param_iterator.next();
  1881             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2046             if (IN_param_value != NULL) {
  1882             
  2047               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1883             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  2048               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2049             }
       
  2050             
       
  2051             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1884             {
  2052             {
  1885         
  2053         
  1886                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  2054                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  1887                 return return_type_symbol;
  2055                 return return_type_symbol;
  1888                 
  2056                 
  1904 
  2072 
  1905         {
  2073         {
  1906             identifier_c param_name("IN");
  2074             identifier_c param_name("IN");
  1907             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2075             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1908             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2076             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1909             
  2077             symbol_c *IN_type_symbol = NULL;
  1910             /* Get the value from a foo(<param_value>) style call */
  2078             
  1911             if (IN_param_value == NULL)
  2079             /* Get the value from a foo(<param_value>) style call */
  1912               IN_param_value = function_call_param_iterator.next();
  2080             if (IN_param_value == NULL)
  1913             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2081               IN_param_value = function_call_param_iterator.next();
  1914             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2082             if (IN_param_value != NULL) {
  1915             
  2083               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1916             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  2084               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2085             }
       
  2086             
       
  2087             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
  1917             {
  2088             {
  1918         
  2089         
  1919                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  2090                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  1920                 return return_type_symbol;
  2091                 return return_type_symbol;
  1921                 
  2092                 
  1937 
  2108 
  1938         {
  2109         {
  1939             identifier_c param_name("IN");
  2110             identifier_c param_name("IN");
  1940             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2111             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1941             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2112             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1942             
  2113             symbol_c *IN_type_symbol = NULL;
  1943             /* Get the value from a foo(<param_value>) style call */
  2114             
  1944             if (IN_param_value == NULL)
  2115             /* Get the value from a foo(<param_value>) style call */
  1945               IN_param_value = function_call_param_iterator.next();
  2116             if (IN_param_value == NULL)
  1946             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2117               IN_param_value = function_call_param_iterator.next();
  1947             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2118             if (IN_param_value != NULL) {
  1948             
  2119               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1949             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2120               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2121             }
       
  2122             
       
  2123             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  1950             {
  2124             {
  1951         
  2125         
  1952                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  2126                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  1953                 return return_type_symbol;
  2127                 return return_type_symbol;
  1954                 
  2128                 
  1970 
  2144 
  1971         {
  2145         {
  1972             identifier_c param_name("IN");
  2146             identifier_c param_name("IN");
  1973             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2147             /* Get the value from a foo(<param_name> = <param_value>) style call */
  1974             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2148             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  1975             
  2149             symbol_c *IN_type_symbol = NULL;
  1976             /* Get the value from a foo(<param_value>) style call */
  2150             
  1977             if (IN_param_value == NULL)
  2151             /* Get the value from a foo(<param_value>) style call */
  1978               IN_param_value = function_call_param_iterator.next();
  2152             if (IN_param_value == NULL)
  1979             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2153               IN_param_value = function_call_param_iterator.next();
  1980             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2154             if (IN_param_value != NULL) {
  1981             
  2155               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  1982             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2156               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2157             }
       
  2158             
       
  2159             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  1983             {
  2160             {
  1984         
  2161         
  1985                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  2162                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  1986                 return return_type_symbol;
  2163                 return return_type_symbol;
  1987                 
  2164                 
  2003 
  2180 
  2004         {
  2181         {
  2005             identifier_c param_name("IN");
  2182             identifier_c param_name("IN");
  2006             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2183             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2007             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2184             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2008             
  2185             symbol_c *IN_type_symbol = NULL;
  2009             /* Get the value from a foo(<param_value>) style call */
  2186             
  2010             if (IN_param_value == NULL)
  2187             /* Get the value from a foo(<param_value>) style call */
  2011               IN_param_value = function_call_param_iterator.next();
  2188             if (IN_param_value == NULL)
  2012             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2189               IN_param_value = function_call_param_iterator.next();
  2013             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2190             if (IN_param_value != NULL) {
  2014             
  2191               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2015             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2192               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2193             }
       
  2194             
       
  2195             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2016             {
  2196             {
  2017         
  2197         
  2018                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  2198                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  2019                 return return_type_symbol;
  2199                 return return_type_symbol;
  2020                 
  2200                 
  2036 
  2216 
  2037         {
  2217         {
  2038             identifier_c param_name("IN");
  2218             identifier_c param_name("IN");
  2039             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2219             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2040             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2220             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2041             
  2221             symbol_c *IN_type_symbol = NULL;
  2042             /* Get the value from a foo(<param_value>) style call */
  2222             
  2043             if (IN_param_value == NULL)
  2223             /* Get the value from a foo(<param_value>) style call */
  2044               IN_param_value = function_call_param_iterator.next();
  2224             if (IN_param_value == NULL)
  2045             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2225               IN_param_value = function_call_param_iterator.next();
  2046             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2226             if (IN_param_value != NULL) {
  2047             
  2227               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2048             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2228               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2229             }
       
  2230             
       
  2231             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2049             {
  2232             {
  2050         
  2233         
  2051                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  2234                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  2052                 return return_type_symbol;
  2235                 return return_type_symbol;
  2053                 
  2236                 
  2069 
  2252 
  2070         {
  2253         {
  2071             identifier_c param_name("IN");
  2254             identifier_c param_name("IN");
  2072             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2255             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2073             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2256             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2074             
  2257             symbol_c *IN_type_symbol = NULL;
  2075             /* Get the value from a foo(<param_value>) style call */
  2258             
  2076             if (IN_param_value == NULL)
  2259             /* Get the value from a foo(<param_value>) style call */
  2077               IN_param_value = function_call_param_iterator.next();
  2260             if (IN_param_value == NULL)
  2078             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2261               IN_param_value = function_call_param_iterator.next();
  2079             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2262             if (IN_param_value != NULL) {
  2080             
  2263               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2081             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2264               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2265             }
       
  2266             
       
  2267             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2082             {
  2268             {
  2083         
  2269         
  2084                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  2270                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  2085                 return return_type_symbol;
  2271                 return return_type_symbol;
  2086                 
  2272                 
  2102 
  2288 
  2103         {
  2289         {
  2104             identifier_c param_name("IN");
  2290             identifier_c param_name("IN");
  2105             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2291             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2106             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2292             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2107             
  2293             symbol_c *IN_type_symbol = NULL;
  2108             /* Get the value from a foo(<param_value>) style call */
  2294             
  2109             if (IN_param_value == NULL)
  2295             /* Get the value from a foo(<param_value>) style call */
  2110               IN_param_value = function_call_param_iterator.next();
  2296             if (IN_param_value == NULL)
  2111             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2297               IN_param_value = function_call_param_iterator.next();
  2112             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2298             if (IN_param_value != NULL) {
  2113             
  2299               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2114             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2300               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2301             }
       
  2302             
       
  2303             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2115             {
  2304             {
  2116         
  2305         
  2117                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  2306                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  2118                 return return_type_symbol;
  2307                 return return_type_symbol;
  2119                 
  2308                 
  2135 
  2324 
  2136         {
  2325         {
  2137             identifier_c param_name("IN");
  2326             identifier_c param_name("IN");
  2138             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2327             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2139             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2328             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2140             
  2329             symbol_c *IN_type_symbol = NULL;
  2141             /* Get the value from a foo(<param_value>) style call */
  2330             
  2142             if (IN_param_value == NULL)
  2331             /* Get the value from a foo(<param_value>) style call */
  2143               IN_param_value = function_call_param_iterator.next();
  2332             if (IN_param_value == NULL)
  2144             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2333               IN_param_value = function_call_param_iterator.next();
  2145             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2334             if (IN_param_value != NULL) {
  2146             
  2335               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2147             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2336               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2337             }
       
  2338             
       
  2339             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2148             {
  2340             {
  2149         
  2341         
  2150                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  2342                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  2151                 return return_type_symbol;
  2343                 return return_type_symbol;
  2152                 
  2344                 
  2168 
  2360 
  2169         {
  2361         {
  2170             identifier_c param_name("IN");
  2362             identifier_c param_name("IN");
  2171             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2363             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2172             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2364             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2173             
  2365             symbol_c *IN_type_symbol = NULL;
  2174             /* Get the value from a foo(<param_value>) style call */
  2366             
  2175             if (IN_param_value == NULL)
  2367             /* Get the value from a foo(<param_value>) style call */
  2176               IN_param_value = function_call_param_iterator.next();
  2368             if (IN_param_value == NULL)
  2177             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2369               IN_param_value = function_call_param_iterator.next();
  2178             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2370             if (IN_param_value != NULL) {
  2179             
  2371               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2180             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2372               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2373             }
       
  2374             
       
  2375             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2181             {
  2376             {
  2182         
  2377         
  2183                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  2378                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  2184                 return return_type_symbol;
  2379                 return return_type_symbol;
  2185                 
  2380                 
  2201 
  2396 
  2202         {
  2397         {
  2203             identifier_c param_name("IN");
  2398             identifier_c param_name("IN");
  2204             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2399             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2205             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2400             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2206             
  2401             symbol_c *IN_type_symbol = NULL;
  2207             /* Get the value from a foo(<param_value>) style call */
  2402             
  2208             if (IN_param_value == NULL)
  2403             /* Get the value from a foo(<param_value>) style call */
  2209               IN_param_value = function_call_param_iterator.next();
  2404             if (IN_param_value == NULL)
  2210             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2405               IN_param_value = function_call_param_iterator.next();
  2211             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2406             if (IN_param_value != NULL) {
  2212             
  2407               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2213             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2408               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2409             }
       
  2410             
       
  2411             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2214             {
  2412             {
  2215         
  2413         
  2216                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  2414                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  2217                 return return_type_symbol;
  2415                 return return_type_symbol;
  2218                 
  2416                 
  2234 
  2432 
  2235         {
  2433         {
  2236             identifier_c param_name("IN");
  2434             identifier_c param_name("IN");
  2237             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2435             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2238             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2436             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2239             
  2437             symbol_c *IN_type_symbol = NULL;
  2240             /* Get the value from a foo(<param_value>) style call */
  2438             
  2241             if (IN_param_value == NULL)
  2439             /* Get the value from a foo(<param_value>) style call */
  2242               IN_param_value = function_call_param_iterator.next();
  2440             if (IN_param_value == NULL)
  2243             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2441               IN_param_value = function_call_param_iterator.next();
  2244             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2442             if (IN_param_value != NULL) {
  2245             
  2443               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2246             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2444               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2445             }
       
  2446             
       
  2447             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2247             {
  2448             {
  2248         
  2449         
  2249                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  2450                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  2250                 return return_type_symbol;
  2451                 return return_type_symbol;
  2251                 
  2452                 
  2267 
  2468 
  2268         {
  2469         {
  2269             identifier_c param_name("IN");
  2470             identifier_c param_name("IN");
  2270             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2471             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2271             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2472             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2272             
  2473             symbol_c *IN_type_symbol = NULL;
  2273             /* Get the value from a foo(<param_value>) style call */
  2474             
  2274             if (IN_param_value == NULL)
  2475             /* Get the value from a foo(<param_value>) style call */
  2275               IN_param_value = function_call_param_iterator.next();
  2476             if (IN_param_value == NULL)
  2276             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2477               IN_param_value = function_call_param_iterator.next();
  2277             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2478             if (IN_param_value != NULL) {
  2278             
  2479               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2279             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2480               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2481             }
       
  2482             
       
  2483             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2280             {
  2484             {
  2281         
  2485         
  2282                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  2486                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  2283                 return return_type_symbol;
  2487                 return return_type_symbol;
  2284                 
  2488                 
  2300 
  2504 
  2301         {
  2505         {
  2302             identifier_c param_name("IN");
  2506             identifier_c param_name("IN");
  2303             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2507             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2304             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2508             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2305             
  2509             symbol_c *IN_type_symbol = NULL;
  2306             /* Get the value from a foo(<param_value>) style call */
  2510             
  2307             if (IN_param_value == NULL)
  2511             /* Get the value from a foo(<param_value>) style call */
  2308               IN_param_value = function_call_param_iterator.next();
  2512             if (IN_param_value == NULL)
  2309             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2513               IN_param_value = function_call_param_iterator.next();
  2310             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2514             if (IN_param_value != NULL) {
  2311             
  2515               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2312             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2516               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2517             }
       
  2518             
       
  2519             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2313             {
  2520             {
  2314         
  2521         
  2315                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  2522                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  2316                 return return_type_symbol;
  2523                 return return_type_symbol;
  2317                 
  2524                 
  2333 
  2540 
  2334         {
  2541         {
  2335             identifier_c param_name("IN");
  2542             identifier_c param_name("IN");
  2336             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2543             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2337             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2544             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2338             
  2545             symbol_c *IN_type_symbol = NULL;
  2339             /* Get the value from a foo(<param_value>) style call */
  2546             
  2340             if (IN_param_value == NULL)
  2547             /* Get the value from a foo(<param_value>) style call */
  2341               IN_param_value = function_call_param_iterator.next();
  2548             if (IN_param_value == NULL)
  2342             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2549               IN_param_value = function_call_param_iterator.next();
  2343             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2550             if (IN_param_value != NULL) {
  2344             
  2551               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2345             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2552               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2553             }
       
  2554             
       
  2555             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2346             {
  2556             {
  2347         
  2557         
  2348                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  2558                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  2349                 return return_type_symbol;
  2559                 return return_type_symbol;
  2350                 
  2560                 
  2366 
  2576 
  2367         {
  2577         {
  2368             identifier_c param_name("IN");
  2578             identifier_c param_name("IN");
  2369             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2579             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2370             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2580             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2371             
  2581             symbol_c *IN_type_symbol = NULL;
  2372             /* Get the value from a foo(<param_value>) style call */
  2582             
  2373             if (IN_param_value == NULL)
  2583             /* Get the value from a foo(<param_value>) style call */
  2374               IN_param_value = function_call_param_iterator.next();
  2584             if (IN_param_value == NULL)
  2375             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2585               IN_param_value = function_call_param_iterator.next();
  2376             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2586             if (IN_param_value != NULL) {
  2377             
  2587               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2378             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2588               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2589             }
       
  2590             
       
  2591             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2379             {
  2592             {
  2380         
  2593         
  2381                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  2594                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  2382                 return return_type_symbol;
  2595                 return return_type_symbol;
  2383                 
  2596                 
  2399 
  2612 
  2400         {
  2613         {
  2401             identifier_c param_name("IN");
  2614             identifier_c param_name("IN");
  2402             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2615             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2403             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2616             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2404             
  2617             symbol_c *IN_type_symbol = NULL;
  2405             /* Get the value from a foo(<param_value>) style call */
  2618             
  2406             if (IN_param_value == NULL)
  2619             /* Get the value from a foo(<param_value>) style call */
  2407               IN_param_value = function_call_param_iterator.next();
  2620             if (IN_param_value == NULL)
  2408             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2621               IN_param_value = function_call_param_iterator.next();
  2409             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2622             if (IN_param_value != NULL) {
  2410             
  2623               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2411             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2624               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2625             }
       
  2626             
       
  2627             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2412             {
  2628             {
  2413         
  2629         
  2414                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  2630                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  2415                 return return_type_symbol;
  2631                 return return_type_symbol;
  2416                 
  2632                 
  2432 
  2648 
  2433         {
  2649         {
  2434             identifier_c param_name("IN");
  2650             identifier_c param_name("IN");
  2435             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2651             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2436             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2652             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2437             
  2653             symbol_c *IN_type_symbol = NULL;
  2438             /* Get the value from a foo(<param_value>) style call */
  2654             
  2439             if (IN_param_value == NULL)
  2655             /* Get the value from a foo(<param_value>) style call */
  2440               IN_param_value = function_call_param_iterator.next();
  2656             if (IN_param_value == NULL)
  2441             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2657               IN_param_value = function_call_param_iterator.next();
  2442             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2658             if (IN_param_value != NULL) {
  2443             
  2659               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2444             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2660               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2661             }
       
  2662             
       
  2663             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2445             {
  2664             {
  2446         
  2665         
  2447                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  2666                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  2448                 return return_type_symbol;
  2667                 return return_type_symbol;
  2449                 
  2668                 
  2465 
  2684 
  2466         {
  2685         {
  2467             identifier_c param_name("IN");
  2686             identifier_c param_name("IN");
  2468             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2687             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2469             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2688             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2470             
  2689             symbol_c *IN_type_symbol = NULL;
  2471             /* Get the value from a foo(<param_value>) style call */
  2690             
  2472             if (IN_param_value == NULL)
  2691             /* Get the value from a foo(<param_value>) style call */
  2473               IN_param_value = function_call_param_iterator.next();
  2692             if (IN_param_value == NULL)
  2474             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2693               IN_param_value = function_call_param_iterator.next();
  2475             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2694             if (IN_param_value != NULL) {
  2476             
  2695               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2477             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2696               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2697             }
       
  2698             
       
  2699             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2478             {
  2700             {
  2479         
  2701         
  2480                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  2702                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  2481                 return return_type_symbol;
  2703                 return return_type_symbol;
  2482                 
  2704                 
  2498 
  2720 
  2499         {
  2721         {
  2500             identifier_c param_name("IN");
  2722             identifier_c param_name("IN");
  2501             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2723             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2502             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2724             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2503             
  2725             symbol_c *IN_type_symbol = NULL;
  2504             /* Get the value from a foo(<param_value>) style call */
  2726             
  2505             if (IN_param_value == NULL)
  2727             /* Get the value from a foo(<param_value>) style call */
  2506               IN_param_value = function_call_param_iterator.next();
  2728             if (IN_param_value == NULL)
  2507             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2729               IN_param_value = function_call_param_iterator.next();
  2508             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2730             if (IN_param_value != NULL) {
  2509             
  2731               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2510             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2732               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2733             }
       
  2734             
       
  2735             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2511             {
  2736             {
  2512         
  2737         
  2513                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  2738                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  2514                 return return_type_symbol;
  2739                 return return_type_symbol;
  2515                 
  2740                 
  2531 
  2756 
  2532         {
  2757         {
  2533             identifier_c param_name("IN");
  2758             identifier_c param_name("IN");
  2534             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2759             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2535             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2760             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2536             
  2761             symbol_c *IN_type_symbol = NULL;
  2537             /* Get the value from a foo(<param_value>) style call */
  2762             
  2538             if (IN_param_value == NULL)
  2763             /* Get the value from a foo(<param_value>) style call */
  2539               IN_param_value = function_call_param_iterator.next();
  2764             if (IN_param_value == NULL)
  2540             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2765               IN_param_value = function_call_param_iterator.next();
  2541             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2766             if (IN_param_value != NULL) {
  2542             
  2767               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2543             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2768               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2769             }
       
  2770             
       
  2771             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
  2544             {
  2772             {
  2545         
  2773         
  2546                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  2774                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  2547                 return return_type_symbol;
  2775                 return return_type_symbol;
  2548                 
  2776                 
  2564 
  2792 
  2565         {
  2793         {
  2566             identifier_c param_name("IN");
  2794             identifier_c param_name("IN");
  2567             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2795             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2568             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2796             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2569             
  2797             symbol_c *IN_type_symbol = NULL;
  2570             /* Get the value from a foo(<param_value>) style call */
  2798             
  2571             if (IN_param_value == NULL)
  2799             /* Get the value from a foo(<param_value>) style call */
  2572               IN_param_value = function_call_param_iterator.next();
  2800             if (IN_param_value == NULL)
  2573             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2801               IN_param_value = function_call_param_iterator.next();
  2574             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2802             if (IN_param_value != NULL) {
  2575             
  2803               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2576             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2804               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2805             }
       
  2806             
       
  2807             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2577             {
  2808             {
  2578         
  2809         
  2579                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  2810                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  2580                 return return_type_symbol;
  2811                 return return_type_symbol;
  2581                 
  2812                 
  2597 
  2828 
  2598         {
  2829         {
  2599             identifier_c param_name("IN");
  2830             identifier_c param_name("IN");
  2600             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2831             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2601             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2832             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2602             
  2833             symbol_c *IN_type_symbol = NULL;
  2603             /* Get the value from a foo(<param_value>) style call */
  2834             
  2604             if (IN_param_value == NULL)
  2835             /* Get the value from a foo(<param_value>) style call */
  2605               IN_param_value = function_call_param_iterator.next();
  2836             if (IN_param_value == NULL)
  2606             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2837               IN_param_value = function_call_param_iterator.next();
  2607             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2838             if (IN_param_value != NULL) {
  2608             
  2839               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2609             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2840               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2841             }
       
  2842             
       
  2843             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2610             {
  2844             {
  2611         
  2845         
  2612                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  2846                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  2613                 return return_type_symbol;
  2847                 return return_type_symbol;
  2614                 
  2848                 
  2630 
  2864 
  2631         {
  2865         {
  2632             identifier_c param_name("IN");
  2866             identifier_c param_name("IN");
  2633             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2867             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2634             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2868             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2635             
  2869             symbol_c *IN_type_symbol = NULL;
  2636             /* Get the value from a foo(<param_value>) style call */
  2870             
  2637             if (IN_param_value == NULL)
  2871             /* Get the value from a foo(<param_value>) style call */
  2638               IN_param_value = function_call_param_iterator.next();
  2872             if (IN_param_value == NULL)
  2639             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2873               IN_param_value = function_call_param_iterator.next();
  2640             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2874             if (IN_param_value != NULL) {
  2641             
  2875               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2642             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2876               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2877             }
       
  2878             
       
  2879             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2643             {
  2880             {
  2644         
  2881         
  2645                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  2882                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  2646                 return return_type_symbol;
  2883                 return return_type_symbol;
  2647                 
  2884                 
  2663 
  2900 
  2664         {
  2901         {
  2665             identifier_c param_name("IN");
  2902             identifier_c param_name("IN");
  2666             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2903             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2667             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2904             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2668             
  2905             symbol_c *IN_type_symbol = NULL;
  2669             /* Get the value from a foo(<param_value>) style call */
  2906             
  2670             if (IN_param_value == NULL)
  2907             /* Get the value from a foo(<param_value>) style call */
  2671               IN_param_value = function_call_param_iterator.next();
  2908             if (IN_param_value == NULL)
  2672             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2909               IN_param_value = function_call_param_iterator.next();
  2673             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2910             if (IN_param_value != NULL) {
  2674             
  2911               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2675             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2912               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2913             }
       
  2914             
       
  2915             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2676             {
  2916             {
  2677         
  2917         
  2678                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  2918                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  2679                 return return_type_symbol;
  2919                 return return_type_symbol;
  2680                 
  2920                 
  2696 
  2936 
  2697         {
  2937         {
  2698             identifier_c param_name("IN");
  2938             identifier_c param_name("IN");
  2699             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2939             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2700             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2940             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2701             
  2941             symbol_c *IN_type_symbol = NULL;
  2702             /* Get the value from a foo(<param_value>) style call */
  2942             
  2703             if (IN_param_value == NULL)
  2943             /* Get the value from a foo(<param_value>) style call */
  2704               IN_param_value = function_call_param_iterator.next();
  2944             if (IN_param_value == NULL)
  2705             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2945               IN_param_value = function_call_param_iterator.next();
  2706             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2946             if (IN_param_value != NULL) {
  2707             
  2947               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2708             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2948               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2949             }
       
  2950             
       
  2951             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2709             {
  2952             {
  2710         
  2953         
  2711                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  2954                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  2712                 return return_type_symbol;
  2955                 return return_type_symbol;
  2713                 
  2956                 
  2729 
  2972 
  2730         {
  2973         {
  2731             identifier_c param_name("IN");
  2974             identifier_c param_name("IN");
  2732             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2975             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2733             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2976             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2734             
  2977             symbol_c *IN_type_symbol = NULL;
  2735             /* Get the value from a foo(<param_value>) style call */
  2978             
  2736             if (IN_param_value == NULL)
  2979             /* Get the value from a foo(<param_value>) style call */
  2737               IN_param_value = function_call_param_iterator.next();
  2980             if (IN_param_value == NULL)
  2738             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2981               IN_param_value = function_call_param_iterator.next();
  2739             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  2982             if (IN_param_value != NULL) {
  2740             
  2983               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2741             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2984               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  2985             }
       
  2986             
       
  2987             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2742             {
  2988             {
  2743         
  2989         
  2744                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  2990                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  2745                 return return_type_symbol;
  2991                 return return_type_symbol;
  2746                 
  2992                 
  2762 
  3008 
  2763         {
  3009         {
  2764             identifier_c param_name("IN");
  3010             identifier_c param_name("IN");
  2765             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3011             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2766             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3012             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2767             
  3013             symbol_c *IN_type_symbol = NULL;
  2768             /* Get the value from a foo(<param_value>) style call */
  3014             
  2769             if (IN_param_value == NULL)
  3015             /* Get the value from a foo(<param_value>) style call */
  2770               IN_param_value = function_call_param_iterator.next();
  3016             if (IN_param_value == NULL)
  2771             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3017               IN_param_value = function_call_param_iterator.next();
  2772             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3018             if (IN_param_value != NULL) {
  2773             
  3019               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2774             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  3020               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3021             }
       
  3022             
       
  3023             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2775             {
  3024             {
  2776         
  3025         
  2777                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  3026                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  2778                 return return_type_symbol;
  3027                 return return_type_symbol;
  2779                 
  3028                 
  2795 
  3044 
  2796         {
  3045         {
  2797             identifier_c param_name("IN");
  3046             identifier_c param_name("IN");
  2798             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3047             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2799             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3048             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2800             
  3049             symbol_c *IN_type_symbol = NULL;
  2801             /* Get the value from a foo(<param_value>) style call */
  3050             
  2802             if (IN_param_value == NULL)
  3051             /* Get the value from a foo(<param_value>) style call */
  2803               IN_param_value = function_call_param_iterator.next();
  3052             if (IN_param_value == NULL)
  2804             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3053               IN_param_value = function_call_param_iterator.next();
  2805             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3054             if (IN_param_value != NULL) {
  2806             
  3055               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2807             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  3056               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3057             }
       
  3058             
       
  3059             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2808             {
  3060             {
  2809         
  3061         
  2810                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  3062                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  2811                 return return_type_symbol;
  3063                 return return_type_symbol;
  2812                 
  3064                 
  2828 
  3080 
  2829         {
  3081         {
  2830             identifier_c param_name("IN");
  3082             identifier_c param_name("IN");
  2831             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3083             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2832             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3084             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2833             
  3085             symbol_c *IN_type_symbol = NULL;
  2834             /* Get the value from a foo(<param_value>) style call */
  3086             
  2835             if (IN_param_value == NULL)
  3087             /* Get the value from a foo(<param_value>) style call */
  2836               IN_param_value = function_call_param_iterator.next();
  3088             if (IN_param_value == NULL)
  2837             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3089               IN_param_value = function_call_param_iterator.next();
  2838             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3090             if (IN_param_value != NULL) {
  2839             
  3091               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2840             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  3092               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3093             }
       
  3094             
       
  3095             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2841             {
  3096             {
  2842         
  3097         
  2843                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  3098                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  2844                 return return_type_symbol;
  3099                 return return_type_symbol;
  2845                 
  3100                 
  2861 
  3116 
  2862         {
  3117         {
  2863             identifier_c param_name("IN");
  3118             identifier_c param_name("IN");
  2864             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3119             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2865             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3120             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2866             
  3121             symbol_c *IN_type_symbol = NULL;
  2867             /* Get the value from a foo(<param_value>) style call */
  3122             
  2868             if (IN_param_value == NULL)
  3123             /* Get the value from a foo(<param_value>) style call */
  2869               IN_param_value = function_call_param_iterator.next();
  3124             if (IN_param_value == NULL)
  2870             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3125               IN_param_value = function_call_param_iterator.next();
  2871             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3126             if (IN_param_value != NULL) {
  2872             
  3127               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2873             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  3128               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3129             }
       
  3130             
       
  3131             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2874             {
  3132             {
  2875         
  3133         
  2876                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  3134                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  2877                 return return_type_symbol;
  3135                 return return_type_symbol;
  2878                 
  3136                 
  2894 
  3152 
  2895         {
  3153         {
  2896             identifier_c param_name("IN");
  3154             identifier_c param_name("IN");
  2897             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3155             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2898             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3156             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2899             
  3157             symbol_c *IN_type_symbol = NULL;
  2900             /* Get the value from a foo(<param_value>) style call */
  3158             
  2901             if (IN_param_value == NULL)
  3159             /* Get the value from a foo(<param_value>) style call */
  2902               IN_param_value = function_call_param_iterator.next();
  3160             if (IN_param_value == NULL)
  2903             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3161               IN_param_value = function_call_param_iterator.next();
  2904             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3162             if (IN_param_value != NULL) {
  2905             
  3163               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2906             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  3164               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3165             }
       
  3166             
       
  3167             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2907             {
  3168             {
  2908         
  3169         
  2909                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  3170                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  2910                 return return_type_symbol;
  3171                 return return_type_symbol;
  2911                 
  3172                 
  2927 
  3188 
  2928         {
  3189         {
  2929             identifier_c param_name("IN");
  3190             identifier_c param_name("IN");
  2930             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3191             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2931             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3192             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2932             
  3193             symbol_c *IN_type_symbol = NULL;
  2933             /* Get the value from a foo(<param_value>) style call */
  3194             
  2934             if (IN_param_value == NULL)
  3195             /* Get the value from a foo(<param_value>) style call */
  2935               IN_param_value = function_call_param_iterator.next();
  3196             if (IN_param_value == NULL)
  2936             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3197               IN_param_value = function_call_param_iterator.next();
  2937             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3198             if (IN_param_value != NULL) {
  2938             
  3199               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2939             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  3200               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3201             }
       
  3202             
       
  3203             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2940             {
  3204             {
  2941         
  3205         
  2942                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  3206                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  2943                 return return_type_symbol;
  3207                 return return_type_symbol;
  2944                 
  3208                 
  2960 
  3224 
  2961         {
  3225         {
  2962             identifier_c param_name("IN");
  3226             identifier_c param_name("IN");
  2963             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3227             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2964             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3228             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2965             
  3229             symbol_c *IN_type_symbol = NULL;
  2966             /* Get the value from a foo(<param_value>) style call */
  3230             
  2967             if (IN_param_value == NULL)
  3231             /* Get the value from a foo(<param_value>) style call */
  2968               IN_param_value = function_call_param_iterator.next();
  3232             if (IN_param_value == NULL)
  2969             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3233               IN_param_value = function_call_param_iterator.next();
  2970             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3234             if (IN_param_value != NULL) {
  2971             
  3235               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  2972             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  3236               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3237             }
       
  3238             
       
  3239             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  2973             {
  3240             {
  2974         
  3241         
  2975                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  3242                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  2976                 return return_type_symbol;
  3243                 return return_type_symbol;
  2977                 
  3244                 
  2993 
  3260 
  2994         {
  3261         {
  2995             identifier_c param_name("IN");
  3262             identifier_c param_name("IN");
  2996             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3263             /* Get the value from a foo(<param_name> = <param_value>) style call */
  2997             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3264             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  2998             
  3265             symbol_c *IN_type_symbol = NULL;
  2999             /* Get the value from a foo(<param_value>) style call */
  3266             
  3000             if (IN_param_value == NULL)
  3267             /* Get the value from a foo(<param_value>) style call */
  3001               IN_param_value = function_call_param_iterator.next();
  3268             if (IN_param_value == NULL)
  3002             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3269               IN_param_value = function_call_param_iterator.next();
  3003             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3270             if (IN_param_value != NULL) {
  3004             
  3271               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3005             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  3272               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3273             }
       
  3274             
       
  3275             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  3006             {
  3276             {
  3007         
  3277         
  3008                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  3278                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  3009                 return return_type_symbol;
  3279                 return return_type_symbol;
  3010                 
  3280                 
  3026 
  3296 
  3027         {
  3297         {
  3028             identifier_c param_name("IN");
  3298             identifier_c param_name("IN");
  3029             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3299             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3030             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3300             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3031             
  3301             symbol_c *IN_type_symbol = NULL;
  3032             /* Get the value from a foo(<param_value>) style call */
  3302             
  3033             if (IN_param_value == NULL)
  3303             /* Get the value from a foo(<param_value>) style call */
  3034               IN_param_value = function_call_param_iterator.next();
  3304             if (IN_param_value == NULL)
  3035             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3305               IN_param_value = function_call_param_iterator.next();
  3036             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3306             if (IN_param_value != NULL) {
  3037             
  3307               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3038             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  3308               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3309             }
       
  3310             
       
  3311             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
  3039             {
  3312             {
  3040         
  3313         
  3041                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  3314                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  3042                 return return_type_symbol;
  3315                 return return_type_symbol;
  3043                 
  3316                 
  3059 
  3332 
  3060         {
  3333         {
  3061             identifier_c param_name("IN");
  3334             identifier_c param_name("IN");
  3062             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3335             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3063             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3336             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3064             
  3337             symbol_c *IN_type_symbol = NULL;
  3065             /* Get the value from a foo(<param_value>) style call */
  3338             
  3066             if (IN_param_value == NULL)
  3339             /* Get the value from a foo(<param_value>) style call */
  3067               IN_param_value = function_call_param_iterator.next();
  3340             if (IN_param_value == NULL)
  3068             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3341               IN_param_value = function_call_param_iterator.next();
  3069             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3342             if (IN_param_value != NULL) {
  3070             
  3343               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3071             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3344               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3345             }
       
  3346             
       
  3347             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3072             {
  3348             {
  3073         
  3349         
  3074                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  3350                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  3075                 return return_type_symbol;
  3351                 return return_type_symbol;
  3076                 
  3352                 
  3092 
  3368 
  3093         {
  3369         {
  3094             identifier_c param_name("IN");
  3370             identifier_c param_name("IN");
  3095             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3371             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3096             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3372             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3097             
  3373             symbol_c *IN_type_symbol = NULL;
  3098             /* Get the value from a foo(<param_value>) style call */
  3374             
  3099             if (IN_param_value == NULL)
  3375             /* Get the value from a foo(<param_value>) style call */
  3100               IN_param_value = function_call_param_iterator.next();
  3376             if (IN_param_value == NULL)
  3101             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3377               IN_param_value = function_call_param_iterator.next();
  3102             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3378             if (IN_param_value != NULL) {
  3103             
  3379               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3104             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3380               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3381             }
       
  3382             
       
  3383             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3105             {
  3384             {
  3106         
  3385         
  3107                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  3386                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  3108                 return return_type_symbol;
  3387                 return return_type_symbol;
  3109                 
  3388                 
  3125 
  3404 
  3126         {
  3405         {
  3127             identifier_c param_name("IN");
  3406             identifier_c param_name("IN");
  3128             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3407             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3129             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3408             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3130             
  3409             symbol_c *IN_type_symbol = NULL;
  3131             /* Get the value from a foo(<param_value>) style call */
  3410             
  3132             if (IN_param_value == NULL)
  3411             /* Get the value from a foo(<param_value>) style call */
  3133               IN_param_value = function_call_param_iterator.next();
  3412             if (IN_param_value == NULL)
  3134             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3413               IN_param_value = function_call_param_iterator.next();
  3135             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3414             if (IN_param_value != NULL) {
  3136             
  3415               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3137             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3416               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3417             }
       
  3418             
       
  3419             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3138             {
  3420             {
  3139         
  3421         
  3140                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  3422                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  3141                 return return_type_symbol;
  3423                 return return_type_symbol;
  3142                 
  3424                 
  3158 
  3440 
  3159         {
  3441         {
  3160             identifier_c param_name("IN");
  3442             identifier_c param_name("IN");
  3161             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3443             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3162             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3444             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3163             
  3445             symbol_c *IN_type_symbol = NULL;
  3164             /* Get the value from a foo(<param_value>) style call */
  3446             
  3165             if (IN_param_value == NULL)
  3447             /* Get the value from a foo(<param_value>) style call */
  3166               IN_param_value = function_call_param_iterator.next();
  3448             if (IN_param_value == NULL)
  3167             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3449               IN_param_value = function_call_param_iterator.next();
  3168             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3450             if (IN_param_value != NULL) {
  3169             
  3451               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3170             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3452               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3453             }
       
  3454             
       
  3455             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3171             {
  3456             {
  3172         
  3457         
  3173                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  3458                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  3174                 return return_type_symbol;
  3459                 return return_type_symbol;
  3175                 
  3460                 
  3191 
  3476 
  3192         {
  3477         {
  3193             identifier_c param_name("IN");
  3478             identifier_c param_name("IN");
  3194             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3479             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3195             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3480             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3196             
  3481             symbol_c *IN_type_symbol = NULL;
  3197             /* Get the value from a foo(<param_value>) style call */
  3482             
  3198             if (IN_param_value == NULL)
  3483             /* Get the value from a foo(<param_value>) style call */
  3199               IN_param_value = function_call_param_iterator.next();
  3484             if (IN_param_value == NULL)
  3200             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3485               IN_param_value = function_call_param_iterator.next();
  3201             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3486             if (IN_param_value != NULL) {
  3202             
  3487               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3203             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3488               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3489             }
       
  3490             
       
  3491             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3204             {
  3492             {
  3205         
  3493         
  3206                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  3494                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  3207                 return return_type_symbol;
  3495                 return return_type_symbol;
  3208                 
  3496                 
  3224 
  3512 
  3225         {
  3513         {
  3226             identifier_c param_name("IN");
  3514             identifier_c param_name("IN");
  3227             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3515             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3228             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3516             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3229             
  3517             symbol_c *IN_type_symbol = NULL;
  3230             /* Get the value from a foo(<param_value>) style call */
  3518             
  3231             if (IN_param_value == NULL)
  3519             /* Get the value from a foo(<param_value>) style call */
  3232               IN_param_value = function_call_param_iterator.next();
  3520             if (IN_param_value == NULL)
  3233             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3521               IN_param_value = function_call_param_iterator.next();
  3234             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3522             if (IN_param_value != NULL) {
  3235             
  3523               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3236             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3524               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3525             }
       
  3526             
       
  3527             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3237             {
  3528             {
  3238         
  3529         
  3239                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  3530                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  3240                 return return_type_symbol;
  3531                 return return_type_symbol;
  3241                 
  3532                 
  3257 
  3548 
  3258         {
  3549         {
  3259             identifier_c param_name("IN");
  3550             identifier_c param_name("IN");
  3260             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3551             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3261             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3552             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3262             
  3553             symbol_c *IN_type_symbol = NULL;
  3263             /* Get the value from a foo(<param_value>) style call */
  3554             
  3264             if (IN_param_value == NULL)
  3555             /* Get the value from a foo(<param_value>) style call */
  3265               IN_param_value = function_call_param_iterator.next();
  3556             if (IN_param_value == NULL)
  3266             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3557               IN_param_value = function_call_param_iterator.next();
  3267             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3558             if (IN_param_value != NULL) {
  3268             
  3559               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3269             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3560               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3561             }
       
  3562             
       
  3563             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3270             {
  3564             {
  3271         
  3565         
  3272                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  3566                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  3273                 return return_type_symbol;
  3567                 return return_type_symbol;
  3274                 
  3568                 
  3290 
  3584 
  3291         {
  3585         {
  3292             identifier_c param_name("IN");
  3586             identifier_c param_name("IN");
  3293             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3587             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3294             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3588             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3295             
  3589             symbol_c *IN_type_symbol = NULL;
  3296             /* Get the value from a foo(<param_value>) style call */
  3590             
  3297             if (IN_param_value == NULL)
  3591             /* Get the value from a foo(<param_value>) style call */
  3298               IN_param_value = function_call_param_iterator.next();
  3592             if (IN_param_value == NULL)
  3299             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3593               IN_param_value = function_call_param_iterator.next();
  3300             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3594             if (IN_param_value != NULL) {
  3301             
  3595               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3302             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3596               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3597             }
       
  3598             
       
  3599             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3303             {
  3600             {
  3304         
  3601         
  3305                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  3602                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  3306                 return return_type_symbol;
  3603                 return return_type_symbol;
  3307                 
  3604                 
  3323 
  3620 
  3324         {
  3621         {
  3325             identifier_c param_name("IN");
  3622             identifier_c param_name("IN");
  3326             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3623             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3327             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3624             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3328             
  3625             symbol_c *IN_type_symbol = NULL;
  3329             /* Get the value from a foo(<param_value>) style call */
  3626             
  3330             if (IN_param_value == NULL)
  3627             /* Get the value from a foo(<param_value>) style call */
  3331               IN_param_value = function_call_param_iterator.next();
  3628             if (IN_param_value == NULL)
  3332             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3629               IN_param_value = function_call_param_iterator.next();
  3333             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3630             if (IN_param_value != NULL) {
  3334             
  3631               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3335             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3632               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3633             }
       
  3634             
       
  3635             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3336             {
  3636             {
  3337         
  3637         
  3338                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  3638                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  3339                 return return_type_symbol;
  3639                 return return_type_symbol;
  3340                 
  3640                 
  3356 
  3656 
  3357         {
  3657         {
  3358             identifier_c param_name("IN");
  3658             identifier_c param_name("IN");
  3359             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3659             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3360             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3660             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3361             
  3661             symbol_c *IN_type_symbol = NULL;
  3362             /* Get the value from a foo(<param_value>) style call */
  3662             
  3363             if (IN_param_value == NULL)
  3663             /* Get the value from a foo(<param_value>) style call */
  3364               IN_param_value = function_call_param_iterator.next();
  3664             if (IN_param_value == NULL)
  3365             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3665               IN_param_value = function_call_param_iterator.next();
  3366             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3666             if (IN_param_value != NULL) {
  3367             
  3667               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3368             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3668               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3669             }
       
  3670             
       
  3671             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3369             {
  3672             {
  3370         
  3673         
  3371                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  3674                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  3372                 return return_type_symbol;
  3675                 return return_type_symbol;
  3373                 
  3676                 
  3389 
  3692 
  3390         {
  3693         {
  3391             identifier_c param_name("IN");
  3694             identifier_c param_name("IN");
  3392             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3695             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3393             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3696             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3394             
  3697             symbol_c *IN_type_symbol = NULL;
  3395             /* Get the value from a foo(<param_value>) style call */
  3698             
  3396             if (IN_param_value == NULL)
  3699             /* Get the value from a foo(<param_value>) style call */
  3397               IN_param_value = function_call_param_iterator.next();
  3700             if (IN_param_value == NULL)
  3398             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3701               IN_param_value = function_call_param_iterator.next();
  3399             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3702             if (IN_param_value != NULL) {
  3400             
  3703               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3401             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3704               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3705             }
       
  3706             
       
  3707             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3402             {
  3708             {
  3403         
  3709         
  3404                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  3710                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  3405                 return return_type_symbol;
  3711                 return return_type_symbol;
  3406                 
  3712                 
  3422 
  3728 
  3423         {
  3729         {
  3424             identifier_c param_name("IN");
  3730             identifier_c param_name("IN");
  3425             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3731             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3426             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3732             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3427             
  3733             symbol_c *IN_type_symbol = NULL;
  3428             /* Get the value from a foo(<param_value>) style call */
  3734             
  3429             if (IN_param_value == NULL)
  3735             /* Get the value from a foo(<param_value>) style call */
  3430               IN_param_value = function_call_param_iterator.next();
  3736             if (IN_param_value == NULL)
  3431             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3737               IN_param_value = function_call_param_iterator.next();
  3432             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3738             if (IN_param_value != NULL) {
  3433             
  3739               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3434             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3740               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3741             }
       
  3742             
       
  3743             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3435             {
  3744             {
  3436         
  3745         
  3437                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  3746                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  3438                 return return_type_symbol;
  3747                 return return_type_symbol;
  3439                 
  3748                 
  3455 
  3764 
  3456         {
  3765         {
  3457             identifier_c param_name("IN");
  3766             identifier_c param_name("IN");
  3458             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3767             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3459             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3768             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3460             
  3769             symbol_c *IN_type_symbol = NULL;
  3461             /* Get the value from a foo(<param_value>) style call */
  3770             
  3462             if (IN_param_value == NULL)
  3771             /* Get the value from a foo(<param_value>) style call */
  3463               IN_param_value = function_call_param_iterator.next();
  3772             if (IN_param_value == NULL)
  3464             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3773               IN_param_value = function_call_param_iterator.next();
  3465             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3774             if (IN_param_value != NULL) {
  3466             
  3775               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3467             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3776               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3777             }
       
  3778             
       
  3779             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3468             {
  3780             {
  3469         
  3781         
  3470                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  3782                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  3471                 return return_type_symbol;
  3783                 return return_type_symbol;
  3472                 
  3784                 
  3488 
  3800 
  3489         {
  3801         {
  3490             identifier_c param_name("IN");
  3802             identifier_c param_name("IN");
  3491             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3803             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3492             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3804             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3493             
  3805             symbol_c *IN_type_symbol = NULL;
  3494             /* Get the value from a foo(<param_value>) style call */
  3806             
  3495             if (IN_param_value == NULL)
  3807             /* Get the value from a foo(<param_value>) style call */
  3496               IN_param_value = function_call_param_iterator.next();
  3808             if (IN_param_value == NULL)
  3497             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3809               IN_param_value = function_call_param_iterator.next();
  3498             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3810             if (IN_param_value != NULL) {
  3499             
  3811               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3500             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3812               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3813             }
       
  3814             
       
  3815             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3501             {
  3816             {
  3502         
  3817         
  3503                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  3818                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  3504                 return return_type_symbol;
  3819                 return return_type_symbol;
  3505                 
  3820                 
  3521 
  3836 
  3522         {
  3837         {
  3523             identifier_c param_name("IN");
  3838             identifier_c param_name("IN");
  3524             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3839             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3525             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3840             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3526             
  3841             symbol_c *IN_type_symbol = NULL;
  3527             /* Get the value from a foo(<param_value>) style call */
  3842             
  3528             if (IN_param_value == NULL)
  3843             /* Get the value from a foo(<param_value>) style call */
  3529               IN_param_value = function_call_param_iterator.next();
  3844             if (IN_param_value == NULL)
  3530             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3845               IN_param_value = function_call_param_iterator.next();
  3531             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3846             if (IN_param_value != NULL) {
  3532             
  3847               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3533             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3848               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3849             }
       
  3850             
       
  3851             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3534             {
  3852             {
  3535         
  3853         
  3536                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  3854                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  3537                 return return_type_symbol;
  3855                 return return_type_symbol;
  3538                 
  3856                 
  3554 
  3872 
  3555         {
  3873         {
  3556             identifier_c param_name("IN");
  3874             identifier_c param_name("IN");
  3557             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3875             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3558             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3876             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3559             
  3877             symbol_c *IN_type_symbol = NULL;
  3560             /* Get the value from a foo(<param_value>) style call */
  3878             
  3561             if (IN_param_value == NULL)
  3879             /* Get the value from a foo(<param_value>) style call */
  3562               IN_param_value = function_call_param_iterator.next();
  3880             if (IN_param_value == NULL)
  3563             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3881               IN_param_value = function_call_param_iterator.next();
  3564             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3882             if (IN_param_value != NULL) {
  3565             
  3883               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3566             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3884               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3885             }
       
  3886             
       
  3887             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3567             {
  3888             {
  3568         
  3889         
  3569                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  3890                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  3570                 return return_type_symbol;
  3891                 return return_type_symbol;
  3571                 
  3892                 
  3587 
  3908 
  3588         {
  3909         {
  3589             identifier_c param_name("IN");
  3910             identifier_c param_name("IN");
  3590             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3911             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3591             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3912             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3592             
  3913             symbol_c *IN_type_symbol = NULL;
  3593             /* Get the value from a foo(<param_value>) style call */
  3914             
  3594             if (IN_param_value == NULL)
  3915             /* Get the value from a foo(<param_value>) style call */
  3595               IN_param_value = function_call_param_iterator.next();
  3916             if (IN_param_value == NULL)
  3596             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3917               IN_param_value = function_call_param_iterator.next();
  3597             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3918             if (IN_param_value != NULL) {
  3598             
  3919               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3599             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3920               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3921             }
       
  3922             
       
  3923             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3600             {
  3924             {
  3601         
  3925         
  3602                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  3926                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  3603                 return return_type_symbol;
  3927                 return return_type_symbol;
  3604                 
  3928                 
  3620 
  3944 
  3621         {
  3945         {
  3622             identifier_c param_name("IN");
  3946             identifier_c param_name("IN");
  3623             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3947             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3624             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3948             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3625             
  3949             symbol_c *IN_type_symbol = NULL;
  3626             /* Get the value from a foo(<param_value>) style call */
  3950             
  3627             if (IN_param_value == NULL)
  3951             /* Get the value from a foo(<param_value>) style call */
  3628               IN_param_value = function_call_param_iterator.next();
  3952             if (IN_param_value == NULL)
  3629             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3953               IN_param_value = function_call_param_iterator.next();
  3630             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3954             if (IN_param_value != NULL) {
  3631             
  3955               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3632             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3956               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3957             }
       
  3958             
       
  3959             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3633             {
  3960             {
  3634         
  3961         
  3635                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  3962                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  3636                 return return_type_symbol;
  3963                 return return_type_symbol;
  3637                 
  3964                 
  3653 
  3980 
  3654         {
  3981         {
  3655             identifier_c param_name("IN");
  3982             identifier_c param_name("IN");
  3656             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3983             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3657             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3984             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3658             
  3985             symbol_c *IN_type_symbol = NULL;
  3659             /* Get the value from a foo(<param_value>) style call */
  3986             
  3660             if (IN_param_value == NULL)
  3987             /* Get the value from a foo(<param_value>) style call */
  3661               IN_param_value = function_call_param_iterator.next();
  3988             if (IN_param_value == NULL)
  3662             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3989               IN_param_value = function_call_param_iterator.next();
  3663             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  3990             if (IN_param_value != NULL) {
  3664             
  3991               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3665             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3992               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  3993             }
       
  3994             
       
  3995             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
  3666             {
  3996             {
  3667         
  3997         
  3668                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  3998                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  3669                 return return_type_symbol;
  3999                 return return_type_symbol;
  3670                 
  4000                 
  3686 
  4016 
  3687         {
  4017         {
  3688             identifier_c param_name("IN");
  4018             identifier_c param_name("IN");
  3689             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4019             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3690             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4020             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3691             
  4021             symbol_c *IN_type_symbol = NULL;
  3692             /* Get the value from a foo(<param_value>) style call */
  4022             
  3693             if (IN_param_value == NULL)
  4023             /* Get the value from a foo(<param_value>) style call */
  3694               IN_param_value = function_call_param_iterator.next();
  4024             if (IN_param_value == NULL)
  3695             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4025               IN_param_value = function_call_param_iterator.next();
  3696             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4026             if (IN_param_value != NULL) {
  3697             
  4027               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3698             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4028               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4029             }
       
  4030             
       
  4031             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  3699             {
  4032             {
  3700         
  4033         
  3701                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  4034                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  3702                 return return_type_symbol;
  4035                 return return_type_symbol;
  3703                 
  4036                 
  3719 
  4052 
  3720         {
  4053         {
  3721             identifier_c param_name("IN");
  4054             identifier_c param_name("IN");
  3722             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4055             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3723             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4056             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3724             
  4057             symbol_c *IN_type_symbol = NULL;
  3725             /* Get the value from a foo(<param_value>) style call */
  4058             
  3726             if (IN_param_value == NULL)
  4059             /* Get the value from a foo(<param_value>) style call */
  3727               IN_param_value = function_call_param_iterator.next();
  4060             if (IN_param_value == NULL)
  3728             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4061               IN_param_value = function_call_param_iterator.next();
  3729             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4062             if (IN_param_value != NULL) {
  3730             
  4063               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3731             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4064               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4065             }
       
  4066             
       
  4067             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  3732             {
  4068             {
  3733         
  4069         
  3734                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  4070                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  3735                 return return_type_symbol;
  4071                 return return_type_symbol;
  3736                 
  4072                 
  3752 
  4088 
  3753         {
  4089         {
  3754             identifier_c param_name("IN");
  4090             identifier_c param_name("IN");
  3755             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4091             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3756             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4092             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3757             
  4093             symbol_c *IN_type_symbol = NULL;
  3758             /* Get the value from a foo(<param_value>) style call */
  4094             
  3759             if (IN_param_value == NULL)
  4095             /* Get the value from a foo(<param_value>) style call */
  3760               IN_param_value = function_call_param_iterator.next();
  4096             if (IN_param_value == NULL)
  3761             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4097               IN_param_value = function_call_param_iterator.next();
  3762             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4098             if (IN_param_value != NULL) {
  3763             
  4099               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3764             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4100               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4101             }
       
  4102             
       
  4103             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  3765             {
  4104             {
  3766         
  4105         
  3767                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  4106                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  3768                 return return_type_symbol;
  4107                 return return_type_symbol;
  3769                 
  4108                 
  3785 
  4124 
  3786         {
  4125         {
  3787             identifier_c param_name("IN");
  4126             identifier_c param_name("IN");
  3788             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4127             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3789             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4128             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3790             
  4129             symbol_c *IN_type_symbol = NULL;
  3791             /* Get the value from a foo(<param_value>) style call */
  4130             
  3792             if (IN_param_value == NULL)
  4131             /* Get the value from a foo(<param_value>) style call */
  3793               IN_param_value = function_call_param_iterator.next();
  4132             if (IN_param_value == NULL)
  3794             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4133               IN_param_value = function_call_param_iterator.next();
  3795             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4134             if (IN_param_value != NULL) {
  3796             
  4135               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3797             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4136               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4137             }
       
  4138             
       
  4139             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  3798             {
  4140             {
  3799         
  4141         
  3800                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  4142                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  3801                 return return_type_symbol;
  4143                 return return_type_symbol;
  3802                 
  4144                 
  3818 
  4160 
  3819         {
  4161         {
  3820             identifier_c param_name("IN");
  4162             identifier_c param_name("IN");
  3821             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4163             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3822             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4164             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3823             
  4165             symbol_c *IN_type_symbol = NULL;
  3824             /* Get the value from a foo(<param_value>) style call */
  4166             
  3825             if (IN_param_value == NULL)
  4167             /* Get the value from a foo(<param_value>) style call */
  3826               IN_param_value = function_call_param_iterator.next();
  4168             if (IN_param_value == NULL)
  3827             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4169               IN_param_value = function_call_param_iterator.next();
  3828             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4170             if (IN_param_value != NULL) {
  3829             
  4171               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3830             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4172               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4173             }
       
  4174             
       
  4175             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  3831             {
  4176             {
  3832         
  4177         
  3833                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  4178                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  3834                 return return_type_symbol;
  4179                 return return_type_symbol;
  3835                 
  4180                 
  3851 
  4196 
  3852         {
  4197         {
  3853             identifier_c param_name("IN");
  4198             identifier_c param_name("IN");
  3854             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4199             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3855             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4200             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3856             
  4201             symbol_c *IN_type_symbol = NULL;
  3857             /* Get the value from a foo(<param_value>) style call */
  4202             
  3858             if (IN_param_value == NULL)
  4203             /* Get the value from a foo(<param_value>) style call */
  3859               IN_param_value = function_call_param_iterator.next();
  4204             if (IN_param_value == NULL)
  3860             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4205               IN_param_value = function_call_param_iterator.next();
  3861             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4206             if (IN_param_value != NULL) {
  3862             
  4207               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3863             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4208               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4209             }
       
  4210             
       
  4211             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  3864             {
  4212             {
  3865         
  4213         
  3866                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  4214                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  3867                 return return_type_symbol;
  4215                 return return_type_symbol;
  3868                 
  4216                 
  3884 
  4232 
  3885         {
  4233         {
  3886             identifier_c param_name("IN");
  4234             identifier_c param_name("IN");
  3887             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4235             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3888             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4236             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3889             
  4237             symbol_c *IN_type_symbol = NULL;
  3890             /* Get the value from a foo(<param_value>) style call */
  4238             
  3891             if (IN_param_value == NULL)
  4239             /* Get the value from a foo(<param_value>) style call */
  3892               IN_param_value = function_call_param_iterator.next();
  4240             if (IN_param_value == NULL)
  3893             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4241               IN_param_value = function_call_param_iterator.next();
  3894             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4242             if (IN_param_value != NULL) {
  3895             
  4243               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3896             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4244               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4245             }
       
  4246             
       
  4247             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  3897             {
  4248             {
  3898         
  4249         
  3899                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  4250                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  3900                 return return_type_symbol;
  4251                 return return_type_symbol;
  3901                 
  4252                 
  3917 
  4268 
  3918         {
  4269         {
  3919             identifier_c param_name("IN");
  4270             identifier_c param_name("IN");
  3920             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4271             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3921             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4272             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3922             
  4273             symbol_c *IN_type_symbol = NULL;
  3923             /* Get the value from a foo(<param_value>) style call */
  4274             
  3924             if (IN_param_value == NULL)
  4275             /* Get the value from a foo(<param_value>) style call */
  3925               IN_param_value = function_call_param_iterator.next();
  4276             if (IN_param_value == NULL)
  3926             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4277               IN_param_value = function_call_param_iterator.next();
  3927             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4278             if (IN_param_value != NULL) {
  3928             
  4279               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3929             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4280               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4281             }
       
  4282             
       
  4283             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  3930             {
  4284             {
  3931         
  4285         
  3932                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  4286                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  3933                 return return_type_symbol;
  4287                 return return_type_symbol;
  3934                 
  4288                 
  3950 
  4304 
  3951         {
  4305         {
  3952             identifier_c param_name("IN");
  4306             identifier_c param_name("IN");
  3953             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4307             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3954             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4308             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3955             
  4309             symbol_c *IN_type_symbol = NULL;
  3956             /* Get the value from a foo(<param_value>) style call */
  4310             
  3957             if (IN_param_value == NULL)
  4311             /* Get the value from a foo(<param_value>) style call */
  3958               IN_param_value = function_call_param_iterator.next();
  4312             if (IN_param_value == NULL)
  3959             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4313               IN_param_value = function_call_param_iterator.next();
  3960             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4314             if (IN_param_value != NULL) {
  3961             
  4315               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3962             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4316               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4317             }
       
  4318             
       
  4319             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  3963             {
  4320             {
  3964         
  4321         
  3965                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  4322                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  3966                 return return_type_symbol;
  4323                 return return_type_symbol;
  3967                 
  4324                 
  3983 
  4340 
  3984         {
  4341         {
  3985             identifier_c param_name("IN");
  4342             identifier_c param_name("IN");
  3986             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4343             /* Get the value from a foo(<param_name> = <param_value>) style call */
  3987             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4344             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  3988             
  4345             symbol_c *IN_type_symbol = NULL;
  3989             /* Get the value from a foo(<param_value>) style call */
  4346             
  3990             if (IN_param_value == NULL)
  4347             /* Get the value from a foo(<param_value>) style call */
  3991               IN_param_value = function_call_param_iterator.next();
  4348             if (IN_param_value == NULL)
  3992             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4349               IN_param_value = function_call_param_iterator.next();
  3993             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4350             if (IN_param_value != NULL) {
  3994             
  4351               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  3995             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4352               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4353             }
       
  4354             
       
  4355             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  3996             {
  4356             {
  3997         
  4357         
  3998                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  4358                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  3999                 return return_type_symbol;
  4359                 return return_type_symbol;
  4000                 
  4360                 
  4016 
  4376 
  4017         {
  4377         {
  4018             identifier_c param_name("IN");
  4378             identifier_c param_name("IN");
  4019             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4379             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4020             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4380             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4021             
  4381             symbol_c *IN_type_symbol = NULL;
  4022             /* Get the value from a foo(<param_value>) style call */
  4382             
  4023             if (IN_param_value == NULL)
  4383             /* Get the value from a foo(<param_value>) style call */
  4024               IN_param_value = function_call_param_iterator.next();
  4384             if (IN_param_value == NULL)
  4025             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4385               IN_param_value = function_call_param_iterator.next();
  4026             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4386             if (IN_param_value != NULL) {
  4027             
  4387               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4028             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4388               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4389             }
       
  4390             
       
  4391             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4029             {
  4392             {
  4030         
  4393         
  4031                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  4394                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  4032                 return return_type_symbol;
  4395                 return return_type_symbol;
  4033                 
  4396                 
  4049 
  4412 
  4050         {
  4413         {
  4051             identifier_c param_name("IN");
  4414             identifier_c param_name("IN");
  4052             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4415             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4053             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4416             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4054             
  4417             symbol_c *IN_type_symbol = NULL;
  4055             /* Get the value from a foo(<param_value>) style call */
  4418             
  4056             if (IN_param_value == NULL)
  4419             /* Get the value from a foo(<param_value>) style call */
  4057               IN_param_value = function_call_param_iterator.next();
  4420             if (IN_param_value == NULL)
  4058             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4421               IN_param_value = function_call_param_iterator.next();
  4059             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4422             if (IN_param_value != NULL) {
  4060             
  4423               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4061             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4424               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4425             }
       
  4426             
       
  4427             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4062             {
  4428             {
  4063         
  4429         
  4064                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  4430                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  4065                 return return_type_symbol;
  4431                 return return_type_symbol;
  4066                 
  4432                 
  4082 
  4448 
  4083         {
  4449         {
  4084             identifier_c param_name("IN");
  4450             identifier_c param_name("IN");
  4085             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4451             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4086             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4452             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4087             
  4453             symbol_c *IN_type_symbol = NULL;
  4088             /* Get the value from a foo(<param_value>) style call */
  4454             
  4089             if (IN_param_value == NULL)
  4455             /* Get the value from a foo(<param_value>) style call */
  4090               IN_param_value = function_call_param_iterator.next();
  4456             if (IN_param_value == NULL)
  4091             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4457               IN_param_value = function_call_param_iterator.next();
  4092             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4458             if (IN_param_value != NULL) {
  4093             
  4459               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4094             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4460               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4461             }
       
  4462             
       
  4463             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4095             {
  4464             {
  4096         
  4465         
  4097                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  4466                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  4098                 return return_type_symbol;
  4467                 return return_type_symbol;
  4099                 
  4468                 
  4115 
  4484 
  4116         {
  4485         {
  4117             identifier_c param_name("IN");
  4486             identifier_c param_name("IN");
  4118             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4487             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4119             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4488             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4120             
  4489             symbol_c *IN_type_symbol = NULL;
  4121             /* Get the value from a foo(<param_value>) style call */
  4490             
  4122             if (IN_param_value == NULL)
  4491             /* Get the value from a foo(<param_value>) style call */
  4123               IN_param_value = function_call_param_iterator.next();
  4492             if (IN_param_value == NULL)
  4124             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4493               IN_param_value = function_call_param_iterator.next();
  4125             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4494             if (IN_param_value != NULL) {
  4126             
  4495               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4127             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4496               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4497             }
       
  4498             
       
  4499             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4128             {
  4500             {
  4129         
  4501         
  4130                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  4502                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  4131                 return return_type_symbol;
  4503                 return return_type_symbol;
  4132                 
  4504                 
  4148 
  4520 
  4149         {
  4521         {
  4150             identifier_c param_name("IN");
  4522             identifier_c param_name("IN");
  4151             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4523             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4152             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4524             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4153             
  4525             symbol_c *IN_type_symbol = NULL;
  4154             /* Get the value from a foo(<param_value>) style call */
  4526             
  4155             if (IN_param_value == NULL)
  4527             /* Get the value from a foo(<param_value>) style call */
  4156               IN_param_value = function_call_param_iterator.next();
  4528             if (IN_param_value == NULL)
  4157             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4529               IN_param_value = function_call_param_iterator.next();
  4158             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4530             if (IN_param_value != NULL) {
  4159             
  4531               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4160             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4532               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4533             }
       
  4534             
       
  4535             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
  4161             {
  4536             {
  4162         
  4537         
  4163                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  4538                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  4164                 return return_type_symbol;
  4539                 return return_type_symbol;
  4165                 
  4540                 
  4181 
  4556 
  4182         {
  4557         {
  4183             identifier_c param_name("IN");
  4558             identifier_c param_name("IN");
  4184             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4559             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4185             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4560             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4186             
  4561             symbol_c *IN_type_symbol = NULL;
  4187             /* Get the value from a foo(<param_value>) style call */
  4562             
  4188             if (IN_param_value == NULL)
  4563             /* Get the value from a foo(<param_value>) style call */
  4189               IN_param_value = function_call_param_iterator.next();
  4564             if (IN_param_value == NULL)
  4190             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4565               IN_param_value = function_call_param_iterator.next();
  4191             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4566             if (IN_param_value != NULL) {
  4192             
  4567               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4193             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4568               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4569             }
       
  4570             
       
  4571             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4194             {
  4572             {
  4195         
  4573         
  4196                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  4574                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  4197                 return return_type_symbol;
  4575                 return return_type_symbol;
  4198                 
  4576                 
  4214 
  4592 
  4215         {
  4593         {
  4216             identifier_c param_name("IN");
  4594             identifier_c param_name("IN");
  4217             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4595             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4218             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4596             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4219             
  4597             symbol_c *IN_type_symbol = NULL;
  4220             /* Get the value from a foo(<param_value>) style call */
  4598             
  4221             if (IN_param_value == NULL)
  4599             /* Get the value from a foo(<param_value>) style call */
  4222               IN_param_value = function_call_param_iterator.next();
  4600             if (IN_param_value == NULL)
  4223             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4601               IN_param_value = function_call_param_iterator.next();
  4224             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4602             if (IN_param_value != NULL) {
  4225             
  4603               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4226             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4604               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4605             }
       
  4606             
       
  4607             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4227             {
  4608             {
  4228         
  4609         
  4229                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  4610                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  4230                 return return_type_symbol;
  4611                 return return_type_symbol;
  4231                 
  4612                 
  4247 
  4628 
  4248         {
  4629         {
  4249             identifier_c param_name("IN");
  4630             identifier_c param_name("IN");
  4250             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4631             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4251             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4632             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4252             
  4633             symbol_c *IN_type_symbol = NULL;
  4253             /* Get the value from a foo(<param_value>) style call */
  4634             
  4254             if (IN_param_value == NULL)
  4635             /* Get the value from a foo(<param_value>) style call */
  4255               IN_param_value = function_call_param_iterator.next();
  4636             if (IN_param_value == NULL)
  4256             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4637               IN_param_value = function_call_param_iterator.next();
  4257             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4638             if (IN_param_value != NULL) {
  4258             
  4639               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4259             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4640               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4641             }
       
  4642             
       
  4643             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4260             {
  4644             {
  4261         
  4645         
  4262                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  4646                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  4263                 return return_type_symbol;
  4647                 return return_type_symbol;
  4264                 
  4648                 
  4280 
  4664 
  4281         {
  4665         {
  4282             identifier_c param_name("IN");
  4666             identifier_c param_name("IN");
  4283             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4667             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4284             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4668             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4285             
  4669             symbol_c *IN_type_symbol = NULL;
  4286             /* Get the value from a foo(<param_value>) style call */
  4670             
  4287             if (IN_param_value == NULL)
  4671             /* Get the value from a foo(<param_value>) style call */
  4288               IN_param_value = function_call_param_iterator.next();
  4672             if (IN_param_value == NULL)
  4289             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4673               IN_param_value = function_call_param_iterator.next();
  4290             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4674             if (IN_param_value != NULL) {
  4291             
  4675               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4292             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4676               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4677             }
       
  4678             
       
  4679             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4293             {
  4680             {
  4294         
  4681         
  4295                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  4682                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  4296                 return return_type_symbol;
  4683                 return return_type_symbol;
  4297                 
  4684                 
  4313 
  4700 
  4314         {
  4701         {
  4315             identifier_c param_name("IN");
  4702             identifier_c param_name("IN");
  4316             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4703             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4317             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4704             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4318             
  4705             symbol_c *IN_type_symbol = NULL;
  4319             /* Get the value from a foo(<param_value>) style call */
  4706             
  4320             if (IN_param_value == NULL)
  4707             /* Get the value from a foo(<param_value>) style call */
  4321               IN_param_value = function_call_param_iterator.next();
  4708             if (IN_param_value == NULL)
  4322             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4709               IN_param_value = function_call_param_iterator.next();
  4323             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4710             if (IN_param_value != NULL) {
  4324             
  4711               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4325             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4712               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4713             }
       
  4714             
       
  4715             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4326             {
  4716             {
  4327         
  4717         
  4328                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  4718                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  4329                 return return_type_symbol;
  4719                 return return_type_symbol;
  4330                 
  4720                 
  4346 
  4736 
  4347         {
  4737         {
  4348             identifier_c param_name("IN");
  4738             identifier_c param_name("IN");
  4349             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4739             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4350             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4740             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4351             
  4741             symbol_c *IN_type_symbol = NULL;
  4352             /* Get the value from a foo(<param_value>) style call */
  4742             
  4353             if (IN_param_value == NULL)
  4743             /* Get the value from a foo(<param_value>) style call */
  4354               IN_param_value = function_call_param_iterator.next();
  4744             if (IN_param_value == NULL)
  4355             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4745               IN_param_value = function_call_param_iterator.next();
  4356             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4746             if (IN_param_value != NULL) {
  4357             
  4747               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4358             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4748               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4749             }
       
  4750             
       
  4751             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4359             {
  4752             {
  4360         
  4753         
  4361                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  4754                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  4362                 return return_type_symbol;
  4755                 return return_type_symbol;
  4363                 
  4756                 
  4379 
  4772 
  4380         {
  4773         {
  4381             identifier_c param_name("IN");
  4774             identifier_c param_name("IN");
  4382             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4775             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4383             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4776             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4384             
  4777             symbol_c *IN_type_symbol = NULL;
  4385             /* Get the value from a foo(<param_value>) style call */
  4778             
  4386             if (IN_param_value == NULL)
  4779             /* Get the value from a foo(<param_value>) style call */
  4387               IN_param_value = function_call_param_iterator.next();
  4780             if (IN_param_value == NULL)
  4388             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4781               IN_param_value = function_call_param_iterator.next();
  4389             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4782             if (IN_param_value != NULL) {
  4390             
  4783               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4391             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4784               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4785             }
       
  4786             
       
  4787             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4392             {
  4788             {
  4393         
  4789         
  4394                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  4790                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  4395                 return return_type_symbol;
  4791                 return return_type_symbol;
  4396                 
  4792                 
  4412 
  4808 
  4413         {
  4809         {
  4414             identifier_c param_name("IN");
  4810             identifier_c param_name("IN");
  4415             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4811             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4416             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4812             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4417             
  4813             symbol_c *IN_type_symbol = NULL;
  4418             /* Get the value from a foo(<param_value>) style call */
  4814             
  4419             if (IN_param_value == NULL)
  4815             /* Get the value from a foo(<param_value>) style call */
  4420               IN_param_value = function_call_param_iterator.next();
  4816             if (IN_param_value == NULL)
  4421             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4817               IN_param_value = function_call_param_iterator.next();
  4422             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4818             if (IN_param_value != NULL) {
  4423             
  4819               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4424             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4820               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4821             }
       
  4822             
       
  4823             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4425             {
  4824             {
  4426         
  4825         
  4427                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  4826                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  4428                 return return_type_symbol;
  4827                 return return_type_symbol;
  4429                 
  4828                 
  4445 
  4844 
  4446         {
  4845         {
  4447             identifier_c param_name("IN");
  4846             identifier_c param_name("IN");
  4448             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4847             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4449             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4848             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4450             
  4849             symbol_c *IN_type_symbol = NULL;
  4451             /* Get the value from a foo(<param_value>) style call */
  4850             
  4452             if (IN_param_value == NULL)
  4851             /* Get the value from a foo(<param_value>) style call */
  4453               IN_param_value = function_call_param_iterator.next();
  4852             if (IN_param_value == NULL)
  4454             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4853               IN_param_value = function_call_param_iterator.next();
  4455             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4854             if (IN_param_value != NULL) {
  4456             
  4855               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4457             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4856               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4857             }
       
  4858             
       
  4859             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4458             {
  4860             {
  4459         
  4861         
  4460                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  4862                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  4461                 return return_type_symbol;
  4863                 return return_type_symbol;
  4462                 
  4864                 
  4478 
  4880 
  4479         {
  4881         {
  4480             identifier_c param_name("IN");
  4882             identifier_c param_name("IN");
  4481             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4883             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4482             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4884             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4483             
  4885             symbol_c *IN_type_symbol = NULL;
  4484             /* Get the value from a foo(<param_value>) style call */
  4886             
  4485             if (IN_param_value == NULL)
  4887             /* Get the value from a foo(<param_value>) style call */
  4486               IN_param_value = function_call_param_iterator.next();
  4888             if (IN_param_value == NULL)
  4487             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4889               IN_param_value = function_call_param_iterator.next();
  4488             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4890             if (IN_param_value != NULL) {
  4489             
  4891               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4490             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4892               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4893             }
       
  4894             
       
  4895             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4491             {
  4896             {
  4492         
  4897         
  4493                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  4898                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  4494                 return return_type_symbol;
  4899                 return return_type_symbol;
  4495                 
  4900                 
  4511 
  4916 
  4512         {
  4917         {
  4513             identifier_c param_name("IN");
  4918             identifier_c param_name("IN");
  4514             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4919             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4515             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4920             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4516             
  4921             symbol_c *IN_type_symbol = NULL;
  4517             /* Get the value from a foo(<param_value>) style call */
  4922             
  4518             if (IN_param_value == NULL)
  4923             /* Get the value from a foo(<param_value>) style call */
  4519               IN_param_value = function_call_param_iterator.next();
  4924             if (IN_param_value == NULL)
  4520             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4925               IN_param_value = function_call_param_iterator.next();
  4521             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4926             if (IN_param_value != NULL) {
  4522             
  4927               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4523             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4928               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4929             }
       
  4930             
       
  4931             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4524             {
  4932             {
  4525         
  4933         
  4526                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  4934                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  4527                 return return_type_symbol;
  4935                 return return_type_symbol;
  4528                 
  4936                 
  4544 
  4952 
  4545         {
  4953         {
  4546             identifier_c param_name("IN");
  4954             identifier_c param_name("IN");
  4547             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4955             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4548             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4956             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4549             
  4957             symbol_c *IN_type_symbol = NULL;
  4550             /* Get the value from a foo(<param_value>) style call */
  4958             
  4551             if (IN_param_value == NULL)
  4959             /* Get the value from a foo(<param_value>) style call */
  4552               IN_param_value = function_call_param_iterator.next();
  4960             if (IN_param_value == NULL)
  4553             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4961               IN_param_value = function_call_param_iterator.next();
  4554             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4962             if (IN_param_value != NULL) {
  4555             
  4963               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4556             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4964               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  4965             }
       
  4966             
       
  4967             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4557             {
  4968             {
  4558         
  4969         
  4559                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  4970                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  4560                 return return_type_symbol;
  4971                 return return_type_symbol;
  4561                 
  4972                 
  4577 
  4988 
  4578         {
  4989         {
  4579             identifier_c param_name("IN");
  4990             identifier_c param_name("IN");
  4580             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4991             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4581             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4992             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4582             
  4993             symbol_c *IN_type_symbol = NULL;
  4583             /* Get the value from a foo(<param_value>) style call */
  4994             
  4584             if (IN_param_value == NULL)
  4995             /* Get the value from a foo(<param_value>) style call */
  4585               IN_param_value = function_call_param_iterator.next();
  4996             if (IN_param_value == NULL)
  4586             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4997               IN_param_value = function_call_param_iterator.next();
  4587             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  4998             if (IN_param_value != NULL) {
  4588             
  4999               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4589             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  5000               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5001             }
       
  5002             
       
  5003             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4590             {
  5004             {
  4591         
  5005         
  4592                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  5006                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  4593                 return return_type_symbol;
  5007                 return return_type_symbol;
  4594                 
  5008                 
  4610 
  5024 
  4611         {
  5025         {
  4612             identifier_c param_name("IN");
  5026             identifier_c param_name("IN");
  4613             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5027             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4614             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5028             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4615             
  5029             symbol_c *IN_type_symbol = NULL;
  4616             /* Get the value from a foo(<param_value>) style call */
  5030             
  4617             if (IN_param_value == NULL)
  5031             /* Get the value from a foo(<param_value>) style call */
  4618               IN_param_value = function_call_param_iterator.next();
  5032             if (IN_param_value == NULL)
  4619             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5033               IN_param_value = function_call_param_iterator.next();
  4620             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5034             if (IN_param_value != NULL) {
  4621             
  5035               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4622             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  5036               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5037             }
       
  5038             
       
  5039             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4623             {
  5040             {
  4624         
  5041         
  4625                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  5042                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  4626                 return return_type_symbol;
  5043                 return return_type_symbol;
  4627                 
  5044                 
  4643 
  5060 
  4644         {
  5061         {
  4645             identifier_c param_name("IN");
  5062             identifier_c param_name("IN");
  4646             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5063             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4647             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5064             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4648             
  5065             symbol_c *IN_type_symbol = NULL;
  4649             /* Get the value from a foo(<param_value>) style call */
  5066             
  4650             if (IN_param_value == NULL)
  5067             /* Get the value from a foo(<param_value>) style call */
  4651               IN_param_value = function_call_param_iterator.next();
  5068             if (IN_param_value == NULL)
  4652             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5069               IN_param_value = function_call_param_iterator.next();
  4653             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5070             if (IN_param_value != NULL) {
  4654             
  5071               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4655             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  5072               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5073             }
       
  5074             
       
  5075             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
  4656             {
  5076             {
  4657         
  5077         
  4658                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  5078                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  4659                 return return_type_symbol;
  5079                 return return_type_symbol;
  4660                 
  5080                 
  4676 
  5096 
  4677         {
  5097         {
  4678             identifier_c param_name("IN");
  5098             identifier_c param_name("IN");
  4679             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5099             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4680             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5100             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4681             
  5101             symbol_c *IN_type_symbol = NULL;
  4682             /* Get the value from a foo(<param_value>) style call */
  5102             
  4683             if (IN_param_value == NULL)
  5103             /* Get the value from a foo(<param_value>) style call */
  4684               IN_param_value = function_call_param_iterator.next();
  5104             if (IN_param_value == NULL)
  4685             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5105               IN_param_value = function_call_param_iterator.next();
  4686             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5106             if (IN_param_value != NULL) {
  4687             
  5107               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4688             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5108               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5109             }
       
  5110             
       
  5111             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  4689             {
  5112             {
  4690         
  5113         
  4691                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  5114                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  4692                 return return_type_symbol;
  5115                 return return_type_symbol;
  4693                 
  5116                 
  4709 
  5132 
  4710         {
  5133         {
  4711             identifier_c param_name("IN");
  5134             identifier_c param_name("IN");
  4712             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5135             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4713             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5136             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4714             
  5137             symbol_c *IN_type_symbol = NULL;
  4715             /* Get the value from a foo(<param_value>) style call */
  5138             
  4716             if (IN_param_value == NULL)
  5139             /* Get the value from a foo(<param_value>) style call */
  4717               IN_param_value = function_call_param_iterator.next();
  5140             if (IN_param_value == NULL)
  4718             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5141               IN_param_value = function_call_param_iterator.next();
  4719             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5142             if (IN_param_value != NULL) {
  4720             
  5143               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4721             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5144               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5145             }
       
  5146             
       
  5147             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  4722             {
  5148             {
  4723         
  5149         
  4724                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  5150                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  4725                 return return_type_symbol;
  5151                 return return_type_symbol;
  4726                 
  5152                 
  4742 
  5168 
  4743         {
  5169         {
  4744             identifier_c param_name("IN");
  5170             identifier_c param_name("IN");
  4745             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5171             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4746             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5172             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4747             
  5173             symbol_c *IN_type_symbol = NULL;
  4748             /* Get the value from a foo(<param_value>) style call */
  5174             
  4749             if (IN_param_value == NULL)
  5175             /* Get the value from a foo(<param_value>) style call */
  4750               IN_param_value = function_call_param_iterator.next();
  5176             if (IN_param_value == NULL)
  4751             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5177               IN_param_value = function_call_param_iterator.next();
  4752             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5178             if (IN_param_value != NULL) {
  4753             
  5179               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4754             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5180               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5181             }
       
  5182             
       
  5183             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  4755             {
  5184             {
  4756         
  5185         
  4757                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  5186                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  4758                 return return_type_symbol;
  5187                 return return_type_symbol;
  4759                 
  5188                 
  4775 
  5204 
  4776         {
  5205         {
  4777             identifier_c param_name("IN");
  5206             identifier_c param_name("IN");
  4778             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5207             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4779             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5208             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4780             
  5209             symbol_c *IN_type_symbol = NULL;
  4781             /* Get the value from a foo(<param_value>) style call */
  5210             
  4782             if (IN_param_value == NULL)
  5211             /* Get the value from a foo(<param_value>) style call */
  4783               IN_param_value = function_call_param_iterator.next();
  5212             if (IN_param_value == NULL)
  4784             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5213               IN_param_value = function_call_param_iterator.next();
  4785             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5214             if (IN_param_value != NULL) {
  4786             
  5215               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4787             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5216               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5217             }
       
  5218             
       
  5219             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  4788             {
  5220             {
  4789         
  5221         
  4790                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  5222                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  4791                 return return_type_symbol;
  5223                 return return_type_symbol;
  4792                 
  5224                 
  4808 
  5240 
  4809         {
  5241         {
  4810             identifier_c param_name("IN");
  5242             identifier_c param_name("IN");
  4811             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5243             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4812             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5244             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4813             
  5245             symbol_c *IN_type_symbol = NULL;
  4814             /* Get the value from a foo(<param_value>) style call */
  5246             
  4815             if (IN_param_value == NULL)
  5247             /* Get the value from a foo(<param_value>) style call */
  4816               IN_param_value = function_call_param_iterator.next();
  5248             if (IN_param_value == NULL)
  4817             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5249               IN_param_value = function_call_param_iterator.next();
  4818             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5250             if (IN_param_value != NULL) {
  4819             
  5251               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4820             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5252               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5253             }
       
  5254             
       
  5255             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  4821             {
  5256             {
  4822         
  5257         
  4823                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  5258                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  4824                 return return_type_symbol;
  5259                 return return_type_symbol;
  4825                 
  5260                 
  4841 
  5276 
  4842         {
  5277         {
  4843             identifier_c param_name("IN");
  5278             identifier_c param_name("IN");
  4844             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5279             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4845             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5280             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4846             
  5281             symbol_c *IN_type_symbol = NULL;
  4847             /* Get the value from a foo(<param_value>) style call */
  5282             
  4848             if (IN_param_value == NULL)
  5283             /* Get the value from a foo(<param_value>) style call */
  4849               IN_param_value = function_call_param_iterator.next();
  5284             if (IN_param_value == NULL)
  4850             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5285               IN_param_value = function_call_param_iterator.next();
  4851             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5286             if (IN_param_value != NULL) {
  4852             
  5287               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4853             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5288               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5289             }
       
  5290             
       
  5291             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  4854             {
  5292             {
  4855         
  5293         
  4856                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  5294                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  4857                 return return_type_symbol;
  5295                 return return_type_symbol;
  4858                 
  5296                 
  4874 
  5312 
  4875         {
  5313         {
  4876             identifier_c param_name("IN");
  5314             identifier_c param_name("IN");
  4877             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5315             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4878             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5316             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4879             
  5317             symbol_c *IN_type_symbol = NULL;
  4880             /* Get the value from a foo(<param_value>) style call */
  5318             
  4881             if (IN_param_value == NULL)
  5319             /* Get the value from a foo(<param_value>) style call */
  4882               IN_param_value = function_call_param_iterator.next();
  5320             if (IN_param_value == NULL)
  4883             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5321               IN_param_value = function_call_param_iterator.next();
  4884             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5322             if (IN_param_value != NULL) {
  4885             
  5323               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4886             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5324               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5325             }
       
  5326             
       
  5327             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  4887             {
  5328             {
  4888         
  5329         
  4889                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  5330                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  4890                 return return_type_symbol;
  5331                 return return_type_symbol;
  4891                 
  5332                 
  4907 
  5348 
  4908         {
  5349         {
  4909             identifier_c param_name("IN");
  5350             identifier_c param_name("IN");
  4910             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5351             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4911             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5352             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4912             
  5353             symbol_c *IN_type_symbol = NULL;
  4913             /* Get the value from a foo(<param_value>) style call */
  5354             
  4914             if (IN_param_value == NULL)
  5355             /* Get the value from a foo(<param_value>) style call */
  4915               IN_param_value = function_call_param_iterator.next();
  5356             if (IN_param_value == NULL)
  4916             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5357               IN_param_value = function_call_param_iterator.next();
  4917             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5358             if (IN_param_value != NULL) {
  4918             
  5359               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4919             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5360               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5361             }
       
  5362             
       
  5363             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  4920             {
  5364             {
  4921         
  5365         
  4922                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  5366                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  4923                 return return_type_symbol;
  5367                 return return_type_symbol;
  4924                 
  5368                 
  4940 
  5384 
  4941         {
  5385         {
  4942             identifier_c param_name("IN");
  5386             identifier_c param_name("IN");
  4943             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5387             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4944             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5388             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4945             
  5389             symbol_c *IN_type_symbol = NULL;
  4946             /* Get the value from a foo(<param_value>) style call */
  5390             
  4947             if (IN_param_value == NULL)
  5391             /* Get the value from a foo(<param_value>) style call */
  4948               IN_param_value = function_call_param_iterator.next();
  5392             if (IN_param_value == NULL)
  4949             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5393               IN_param_value = function_call_param_iterator.next();
  4950             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5394             if (IN_param_value != NULL) {
  4951             
  5395               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4952             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5396               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5397             }
       
  5398             
       
  5399             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  4953             {
  5400             {
  4954         
  5401         
  4955                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  5402                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  4956                 return return_type_symbol;
  5403                 return return_type_symbol;
  4957                 
  5404                 
  4973 
  5420 
  4974         {
  5421         {
  4975             identifier_c param_name("IN");
  5422             identifier_c param_name("IN");
  4976             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5423             /* Get the value from a foo(<param_name> = <param_value>) style call */
  4977             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5424             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  4978             
  5425             symbol_c *IN_type_symbol = NULL;
  4979             /* Get the value from a foo(<param_value>) style call */
  5426             
  4980             if (IN_param_value == NULL)
  5427             /* Get the value from a foo(<param_value>) style call */
  4981               IN_param_value = function_call_param_iterator.next();
  5428             if (IN_param_value == NULL)
  4982             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5429               IN_param_value = function_call_param_iterator.next();
  4983             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5430             if (IN_param_value != NULL) {
  4984             
  5431               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  4985             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5432               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5433             }
       
  5434             
       
  5435             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  4986             {
  5436             {
  4987         
  5437         
  4988                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  5438                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  4989                 return return_type_symbol;
  5439                 return return_type_symbol;
  4990                 
  5440                 
  5006 
  5456 
  5007         {
  5457         {
  5008             identifier_c param_name("IN");
  5458             identifier_c param_name("IN");
  5009             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5459             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5010             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5460             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5011             
  5461             symbol_c *IN_type_symbol = NULL;
  5012             /* Get the value from a foo(<param_value>) style call */
  5462             
  5013             if (IN_param_value == NULL)
  5463             /* Get the value from a foo(<param_value>) style call */
  5014               IN_param_value = function_call_param_iterator.next();
  5464             if (IN_param_value == NULL)
  5015             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5465               IN_param_value = function_call_param_iterator.next();
  5016             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5466             if (IN_param_value != NULL) {
  5017             
  5467               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5018             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5468               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5469             }
       
  5470             
       
  5471             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5019             {
  5472             {
  5020         
  5473         
  5021                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  5474                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  5022                 return return_type_symbol;
  5475                 return return_type_symbol;
  5023                 
  5476                 
  5039 
  5492 
  5040         {
  5493         {
  5041             identifier_c param_name("IN");
  5494             identifier_c param_name("IN");
  5042             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5495             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5043             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5496             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5044             
  5497             symbol_c *IN_type_symbol = NULL;
  5045             /* Get the value from a foo(<param_value>) style call */
  5498             
  5046             if (IN_param_value == NULL)
  5499             /* Get the value from a foo(<param_value>) style call */
  5047               IN_param_value = function_call_param_iterator.next();
  5500             if (IN_param_value == NULL)
  5048             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5501               IN_param_value = function_call_param_iterator.next();
  5049             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5502             if (IN_param_value != NULL) {
  5050             
  5503               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5051             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5504               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5505             }
       
  5506             
       
  5507             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5052             {
  5508             {
  5053         
  5509         
  5054                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  5510                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  5055                 return return_type_symbol;
  5511                 return return_type_symbol;
  5056                 
  5512                 
  5072 
  5528 
  5073         {
  5529         {
  5074             identifier_c param_name("IN");
  5530             identifier_c param_name("IN");
  5075             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5531             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5076             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5532             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5077             
  5533             symbol_c *IN_type_symbol = NULL;
  5078             /* Get the value from a foo(<param_value>) style call */
  5534             
  5079             if (IN_param_value == NULL)
  5535             /* Get the value from a foo(<param_value>) style call */
  5080               IN_param_value = function_call_param_iterator.next();
  5536             if (IN_param_value == NULL)
  5081             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5537               IN_param_value = function_call_param_iterator.next();
  5082             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5538             if (IN_param_value != NULL) {
  5083             
  5539               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5084             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5540               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5541             }
       
  5542             
       
  5543             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5085             {
  5544             {
  5086         
  5545         
  5087                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  5546                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  5088                 return return_type_symbol;
  5547                 return return_type_symbol;
  5089                 
  5548                 
  5105 
  5564 
  5106         {
  5565         {
  5107             identifier_c param_name("IN");
  5566             identifier_c param_name("IN");
  5108             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5567             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5109             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5568             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5110             
  5569             symbol_c *IN_type_symbol = NULL;
  5111             /* Get the value from a foo(<param_value>) style call */
  5570             
  5112             if (IN_param_value == NULL)
  5571             /* Get the value from a foo(<param_value>) style call */
  5113               IN_param_value = function_call_param_iterator.next();
  5572             if (IN_param_value == NULL)
  5114             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5573               IN_param_value = function_call_param_iterator.next();
  5115             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5574             if (IN_param_value != NULL) {
  5116             
  5575               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5117             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5576               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5577             }
       
  5578             
       
  5579             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5118             {
  5580             {
  5119         
  5581         
  5120                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  5582                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  5121                 return return_type_symbol;
  5583                 return return_type_symbol;
  5122                 
  5584                 
  5138 
  5600 
  5139         {
  5601         {
  5140             identifier_c param_name("IN");
  5602             identifier_c param_name("IN");
  5141             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5603             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5142             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5604             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5143             
  5605             symbol_c *IN_type_symbol = NULL;
  5144             /* Get the value from a foo(<param_value>) style call */
  5606             
  5145             if (IN_param_value == NULL)
  5607             /* Get the value from a foo(<param_value>) style call */
  5146               IN_param_value = function_call_param_iterator.next();
  5608             if (IN_param_value == NULL)
  5147             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5609               IN_param_value = function_call_param_iterator.next();
  5148             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5610             if (IN_param_value != NULL) {
  5149             
  5611               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5150             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5612               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5613             }
       
  5614             
       
  5615             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5151             {
  5616             {
  5152         
  5617         
  5153                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  5618                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  5154                 return return_type_symbol;
  5619                 return return_type_symbol;
  5155                 
  5620                 
  5171 
  5636 
  5172         {
  5637         {
  5173             identifier_c param_name("IN");
  5638             identifier_c param_name("IN");
  5174             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5639             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5175             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5640             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5176             
  5641             symbol_c *IN_type_symbol = NULL;
  5177             /* Get the value from a foo(<param_value>) style call */
  5642             
  5178             if (IN_param_value == NULL)
  5643             /* Get the value from a foo(<param_value>) style call */
  5179               IN_param_value = function_call_param_iterator.next();
  5644             if (IN_param_value == NULL)
  5180             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5645               IN_param_value = function_call_param_iterator.next();
  5181             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5646             if (IN_param_value != NULL) {
  5182             
  5647               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5183             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5648               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5649             }
       
  5650             
       
  5651             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5184             {
  5652             {
  5185         
  5653         
  5186                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  5654                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  5187                 return return_type_symbol;
  5655                 return return_type_symbol;
  5188                 
  5656                 
  5204 
  5672 
  5205         {
  5673         {
  5206             identifier_c param_name("IN");
  5674             identifier_c param_name("IN");
  5207             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5675             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5208             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5676             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5209             
  5677             symbol_c *IN_type_symbol = NULL;
  5210             /* Get the value from a foo(<param_value>) style call */
  5678             
  5211             if (IN_param_value == NULL)
  5679             /* Get the value from a foo(<param_value>) style call */
  5212               IN_param_value = function_call_param_iterator.next();
  5680             if (IN_param_value == NULL)
  5213             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5681               IN_param_value = function_call_param_iterator.next();
  5214             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5682             if (IN_param_value != NULL) {
  5215             
  5683               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5216             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5684               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5685             }
       
  5686             
       
  5687             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5217             {
  5688             {
  5218         
  5689         
  5219                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  5690                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  5220                 return return_type_symbol;
  5691                 return return_type_symbol;
  5221                 
  5692                 
  5237 
  5708 
  5238         {
  5709         {
  5239             identifier_c param_name("IN");
  5710             identifier_c param_name("IN");
  5240             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5711             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5241             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5712             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5242             
  5713             symbol_c *IN_type_symbol = NULL;
  5243             /* Get the value from a foo(<param_value>) style call */
  5714             
  5244             if (IN_param_value == NULL)
  5715             /* Get the value from a foo(<param_value>) style call */
  5245               IN_param_value = function_call_param_iterator.next();
  5716             if (IN_param_value == NULL)
  5246             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5717               IN_param_value = function_call_param_iterator.next();
  5247             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5718             if (IN_param_value != NULL) {
  5248             
  5719               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5249             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5720               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5721             }
       
  5722             
       
  5723             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5250             {
  5724             {
  5251         
  5725         
  5252                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  5726                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  5253                 return return_type_symbol;
  5727                 return return_type_symbol;
  5254                 
  5728                 
  5270 
  5744 
  5271         {
  5745         {
  5272             identifier_c param_name("IN");
  5746             identifier_c param_name("IN");
  5273             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5747             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5274             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5748             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5275             
  5749             symbol_c *IN_type_symbol = NULL;
  5276             /* Get the value from a foo(<param_value>) style call */
  5750             
  5277             if (IN_param_value == NULL)
  5751             /* Get the value from a foo(<param_value>) style call */
  5278               IN_param_value = function_call_param_iterator.next();
  5752             if (IN_param_value == NULL)
  5279             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5753               IN_param_value = function_call_param_iterator.next();
  5280             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5754             if (IN_param_value != NULL) {
  5281             
  5755               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5282             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5756               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5757             }
       
  5758             
       
  5759             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
  5283             {
  5760             {
  5284         
  5761         
  5285                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  5762                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  5286                 return return_type_symbol;
  5763                 return return_type_symbol;
  5287                 
  5764                 
  5303 
  5780 
  5304         {
  5781         {
  5305             identifier_c param_name("IN");
  5782             identifier_c param_name("IN");
  5306             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5783             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5307             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5784             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5308             
  5785             symbol_c *IN_type_symbol = NULL;
  5309             /* Get the value from a foo(<param_value>) style call */
  5786             
  5310             if (IN_param_value == NULL)
  5787             /* Get the value from a foo(<param_value>) style call */
  5311               IN_param_value = function_call_param_iterator.next();
  5788             if (IN_param_value == NULL)
  5312             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5789               IN_param_value = function_call_param_iterator.next();
  5313             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5790             if (IN_param_value != NULL) {
  5314             
  5791               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5315             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5792               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5793             }
       
  5794             
       
  5795             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5316             {
  5796             {
  5317         
  5797         
  5318                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  5798                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  5319                 return return_type_symbol;
  5799                 return return_type_symbol;
  5320                 
  5800                 
  5336 
  5816 
  5337         {
  5817         {
  5338             identifier_c param_name("IN");
  5818             identifier_c param_name("IN");
  5339             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5819             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5340             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5820             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5341             
  5821             symbol_c *IN_type_symbol = NULL;
  5342             /* Get the value from a foo(<param_value>) style call */
  5822             
  5343             if (IN_param_value == NULL)
  5823             /* Get the value from a foo(<param_value>) style call */
  5344               IN_param_value = function_call_param_iterator.next();
  5824             if (IN_param_value == NULL)
  5345             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5825               IN_param_value = function_call_param_iterator.next();
  5346             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5826             if (IN_param_value != NULL) {
  5347             
  5827               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5348             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5828               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5829             }
       
  5830             
       
  5831             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5349             {
  5832             {
  5350         
  5833         
  5351                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  5834                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  5352                 return return_type_symbol;
  5835                 return return_type_symbol;
  5353                 
  5836                 
  5369 
  5852 
  5370         {
  5853         {
  5371             identifier_c param_name("IN");
  5854             identifier_c param_name("IN");
  5372             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5855             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5373             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5856             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5374             
  5857             symbol_c *IN_type_symbol = NULL;
  5375             /* Get the value from a foo(<param_value>) style call */
  5858             
  5376             if (IN_param_value == NULL)
  5859             /* Get the value from a foo(<param_value>) style call */
  5377               IN_param_value = function_call_param_iterator.next();
  5860             if (IN_param_value == NULL)
  5378             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5861               IN_param_value = function_call_param_iterator.next();
  5379             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5862             if (IN_param_value != NULL) {
  5380             
  5863               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5381             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5864               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5865             }
       
  5866             
       
  5867             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5382             {
  5868             {
  5383         
  5869         
  5384                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  5870                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  5385                 return return_type_symbol;
  5871                 return return_type_symbol;
  5386                 
  5872                 
  5402 
  5888 
  5403         {
  5889         {
  5404             identifier_c param_name("IN");
  5890             identifier_c param_name("IN");
  5405             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5891             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5406             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5892             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5407             
  5893             symbol_c *IN_type_symbol = NULL;
  5408             /* Get the value from a foo(<param_value>) style call */
  5894             
  5409             if (IN_param_value == NULL)
  5895             /* Get the value from a foo(<param_value>) style call */
  5410               IN_param_value = function_call_param_iterator.next();
  5896             if (IN_param_value == NULL)
  5411             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5897               IN_param_value = function_call_param_iterator.next();
  5412             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5898             if (IN_param_value != NULL) {
  5413             
  5899               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5414             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5900               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5901             }
       
  5902             
       
  5903             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5415             {
  5904             {
  5416         
  5905         
  5417                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  5906                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  5418                 return return_type_symbol;
  5907                 return return_type_symbol;
  5419                 
  5908                 
  5435 
  5924 
  5436         {
  5925         {
  5437             identifier_c param_name("IN");
  5926             identifier_c param_name("IN");
  5438             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5927             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5439             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5928             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5440             
  5929             symbol_c *IN_type_symbol = NULL;
  5441             /* Get the value from a foo(<param_value>) style call */
  5930             
  5442             if (IN_param_value == NULL)
  5931             /* Get the value from a foo(<param_value>) style call */
  5443               IN_param_value = function_call_param_iterator.next();
  5932             if (IN_param_value == NULL)
  5444             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5933               IN_param_value = function_call_param_iterator.next();
  5445             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5934             if (IN_param_value != NULL) {
  5446             
  5935               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5447             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5936               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5937             }
       
  5938             
       
  5939             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5448             {
  5940             {
  5449         
  5941         
  5450                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  5942                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  5451                 return return_type_symbol;
  5943                 return return_type_symbol;
  5452                 
  5944                 
  5468 
  5960 
  5469         {
  5961         {
  5470             identifier_c param_name("IN");
  5962             identifier_c param_name("IN");
  5471             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5963             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5472             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5964             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5473             
  5965             symbol_c *IN_type_symbol = NULL;
  5474             /* Get the value from a foo(<param_value>) style call */
  5966             
  5475             if (IN_param_value == NULL)
  5967             /* Get the value from a foo(<param_value>) style call */
  5476               IN_param_value = function_call_param_iterator.next();
  5968             if (IN_param_value == NULL)
  5477             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5969               IN_param_value = function_call_param_iterator.next();
  5478             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  5970             if (IN_param_value != NULL) {
  5479             
  5971               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5480             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5972               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  5973             }
       
  5974             
       
  5975             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5481             {
  5976             {
  5482         
  5977         
  5483                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  5978                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  5484                 return return_type_symbol;
  5979                 return return_type_symbol;
  5485                 
  5980                 
  5501 
  5996 
  5502         {
  5997         {
  5503             identifier_c param_name("IN");
  5998             identifier_c param_name("IN");
  5504             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5999             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5505             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6000             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5506             
  6001             symbol_c *IN_type_symbol = NULL;
  5507             /* Get the value from a foo(<param_value>) style call */
  6002             
  5508             if (IN_param_value == NULL)
  6003             /* Get the value from a foo(<param_value>) style call */
  5509               IN_param_value = function_call_param_iterator.next();
  6004             if (IN_param_value == NULL)
  5510             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6005               IN_param_value = function_call_param_iterator.next();
  5511             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6006             if (IN_param_value != NULL) {
  5512             
  6007               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5513             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  6008               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6009             }
       
  6010             
       
  6011             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5514             {
  6012             {
  5515         
  6013         
  5516                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  6014                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  5517                 return return_type_symbol;
  6015                 return return_type_symbol;
  5518                 
  6016                 
  5534 
  6032 
  5535         {
  6033         {
  5536             identifier_c param_name("IN");
  6034             identifier_c param_name("IN");
  5537             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6035             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5538             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6036             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5539             
  6037             symbol_c *IN_type_symbol = NULL;
  5540             /* Get the value from a foo(<param_value>) style call */
  6038             
  5541             if (IN_param_value == NULL)
  6039             /* Get the value from a foo(<param_value>) style call */
  5542               IN_param_value = function_call_param_iterator.next();
  6040             if (IN_param_value == NULL)
  5543             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6041               IN_param_value = function_call_param_iterator.next();
  5544             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6042             if (IN_param_value != NULL) {
  5545             
  6043               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5546             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  6044               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6045             }
       
  6046             
       
  6047             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5547             {
  6048             {
  5548         
  6049         
  5549                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  6050                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  5550                 return return_type_symbol;
  6051                 return return_type_symbol;
  5551                 
  6052                 
  5567 
  6068 
  5568         {
  6069         {
  5569             identifier_c param_name("IN");
  6070             identifier_c param_name("IN");
  5570             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6071             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5571             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6072             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5572             
  6073             symbol_c *IN_type_symbol = NULL;
  5573             /* Get the value from a foo(<param_value>) style call */
  6074             
  5574             if (IN_param_value == NULL)
  6075             /* Get the value from a foo(<param_value>) style call */
  5575               IN_param_value = function_call_param_iterator.next();
  6076             if (IN_param_value == NULL)
  5576             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6077               IN_param_value = function_call_param_iterator.next();
  5577             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6078             if (IN_param_value != NULL) {
  5578             
  6079               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5579             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  6080               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6081             }
       
  6082             
       
  6083             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5580             {
  6084             {
  5581         
  6085         
  5582                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  6086                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  5583                 return return_type_symbol;
  6087                 return return_type_symbol;
  5584                 
  6088                 
  5600 
  6104 
  5601         {
  6105         {
  5602             identifier_c param_name("IN");
  6106             identifier_c param_name("IN");
  5603             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6107             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5604             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6108             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5605             
  6109             symbol_c *IN_type_symbol = NULL;
  5606             /* Get the value from a foo(<param_value>) style call */
  6110             
  5607             if (IN_param_value == NULL)
  6111             /* Get the value from a foo(<param_value>) style call */
  5608               IN_param_value = function_call_param_iterator.next();
  6112             if (IN_param_value == NULL)
  5609             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6113               IN_param_value = function_call_param_iterator.next();
  5610             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6114             if (IN_param_value != NULL) {
  5611             
  6115               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5612             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  6116               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6117             }
       
  6118             
       
  6119             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5613             {
  6120             {
  5614         
  6121         
  5615                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  6122                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  5616                 return return_type_symbol;
  6123                 return return_type_symbol;
  5617                 
  6124                 
  5633 
  6140 
  5634         {
  6141         {
  5635             identifier_c param_name("IN");
  6142             identifier_c param_name("IN");
  5636             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6143             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5637             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6144             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5638             
  6145             symbol_c *IN_type_symbol = NULL;
  5639             /* Get the value from a foo(<param_value>) style call */
  6146             
  5640             if (IN_param_value == NULL)
  6147             /* Get the value from a foo(<param_value>) style call */
  5641               IN_param_value = function_call_param_iterator.next();
  6148             if (IN_param_value == NULL)
  5642             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6149               IN_param_value = function_call_param_iterator.next();
  5643             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6150             if (IN_param_value != NULL) {
  5644             
  6151               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5645             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  6152               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6153             }
       
  6154             
       
  6155             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5646             {
  6156             {
  5647         
  6157         
  5648                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  6158                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  5649                 return return_type_symbol;
  6159                 return return_type_symbol;
  5650                 
  6160                 
  5666 
  6176 
  5667         {
  6177         {
  5668             identifier_c param_name("IN");
  6178             identifier_c param_name("IN");
  5669             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6179             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5670             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6180             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5671             
  6181             symbol_c *IN_type_symbol = NULL;
  5672             /* Get the value from a foo(<param_value>) style call */
  6182             
  5673             if (IN_param_value == NULL)
  6183             /* Get the value from a foo(<param_value>) style call */
  5674               IN_param_value = function_call_param_iterator.next();
  6184             if (IN_param_value == NULL)
  5675             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6185               IN_param_value = function_call_param_iterator.next();
  5676             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6186             if (IN_param_value != NULL) {
  5677             
  6187               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5678             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  6188               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6189             }
       
  6190             
       
  6191             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5679             {
  6192             {
  5680         
  6193         
  5681                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  6194                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  5682                 return return_type_symbol;
  6195                 return return_type_symbol;
  5683                 
  6196                 
  5699 
  6212 
  5700         {
  6213         {
  5701             identifier_c param_name("IN");
  6214             identifier_c param_name("IN");
  5702             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6215             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5703             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6216             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5704             
  6217             symbol_c *IN_type_symbol = NULL;
  5705             /* Get the value from a foo(<param_value>) style call */
  6218             
  5706             if (IN_param_value == NULL)
  6219             /* Get the value from a foo(<param_value>) style call */
  5707               IN_param_value = function_call_param_iterator.next();
  6220             if (IN_param_value == NULL)
  5708             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6221               IN_param_value = function_call_param_iterator.next();
  5709             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6222             if (IN_param_value != NULL) {
  5710             
  6223               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5711             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  6224               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6225             }
       
  6226             
       
  6227             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5712             {
  6228             {
  5713         
  6229         
  5714                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  6230                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  5715                 return return_type_symbol;
  6231                 return return_type_symbol;
  5716                 
  6232                 
  5732 
  6248 
  5733         {
  6249         {
  5734             identifier_c param_name("IN");
  6250             identifier_c param_name("IN");
  5735             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6251             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5736             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6252             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5737             
  6253             symbol_c *IN_type_symbol = NULL;
  5738             /* Get the value from a foo(<param_value>) style call */
  6254             
  5739             if (IN_param_value == NULL)
  6255             /* Get the value from a foo(<param_value>) style call */
  5740               IN_param_value = function_call_param_iterator.next();
  6256             if (IN_param_value == NULL)
  5741             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6257               IN_param_value = function_call_param_iterator.next();
  5742             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6258             if (IN_param_value != NULL) {
  5743             
  6259               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5744             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  6260               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6261             }
       
  6262             
       
  6263             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5745             {
  6264             {
  5746         
  6265         
  5747                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  6266                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  5748                 return return_type_symbol;
  6267                 return return_type_symbol;
  5749                 
  6268                 
  5765 
  6284 
  5766         {
  6285         {
  5767             identifier_c param_name("IN");
  6286             identifier_c param_name("IN");
  5768             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6287             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5769             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6288             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5770             
  6289             symbol_c *IN_type_symbol = NULL;
  5771             /* Get the value from a foo(<param_value>) style call */
  6290             
  5772             if (IN_param_value == NULL)
  6291             /* Get the value from a foo(<param_value>) style call */
  5773               IN_param_value = function_call_param_iterator.next();
  6292             if (IN_param_value == NULL)
  5774             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6293               IN_param_value = function_call_param_iterator.next();
  5775             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6294             if (IN_param_value != NULL) {
  5776             
  6295               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5777             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  6296               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6297             }
       
  6298             
       
  6299             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5778             {
  6300             {
  5779         
  6301         
  5780                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  6302                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  5781                 return return_type_symbol;
  6303                 return return_type_symbol;
  5782                 
  6304                 
  5798 
  6320 
  5799         {
  6321         {
  5800             identifier_c param_name("IN");
  6322             identifier_c param_name("IN");
  5801             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6323             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5802             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6324             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5803             
  6325             symbol_c *IN_type_symbol = NULL;
  5804             /* Get the value from a foo(<param_value>) style call */
  6326             
  5805             if (IN_param_value == NULL)
  6327             /* Get the value from a foo(<param_value>) style call */
  5806               IN_param_value = function_call_param_iterator.next();
  6328             if (IN_param_value == NULL)
  5807             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6329               IN_param_value = function_call_param_iterator.next();
  5808             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6330             if (IN_param_value != NULL) {
  5809             
  6331               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5810             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  6332               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6333             }
       
  6334             
       
  6335             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5811             {
  6336             {
  5812         
  6337         
  5813                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  6338                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  5814                 return return_type_symbol;
  6339                 return return_type_symbol;
  5815                 
  6340                 
  5831 
  6356 
  5832         {
  6357         {
  5833             identifier_c param_name("IN");
  6358             identifier_c param_name("IN");
  5834             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6359             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5835             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6360             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5836             
  6361             symbol_c *IN_type_symbol = NULL;
  5837             /* Get the value from a foo(<param_value>) style call */
  6362             
  5838             if (IN_param_value == NULL)
  6363             /* Get the value from a foo(<param_value>) style call */
  5839               IN_param_value = function_call_param_iterator.next();
  6364             if (IN_param_value == NULL)
  5840             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6365               IN_param_value = function_call_param_iterator.next();
  5841             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6366             if (IN_param_value != NULL) {
  5842             
  6367               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5843             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  6368               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6369             }
       
  6370             
       
  6371             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5844             {
  6372             {
  5845         
  6373         
  5846                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  6374                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  5847                 return return_type_symbol;
  6375                 return return_type_symbol;
  5848                 
  6376                 
  5864 
  6392 
  5865         {
  6393         {
  5866             identifier_c param_name("IN");
  6394             identifier_c param_name("IN");
  5867             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6395             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5868             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6396             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5869             
  6397             symbol_c *IN_type_symbol = NULL;
  5870             /* Get the value from a foo(<param_value>) style call */
  6398             
  5871             if (IN_param_value == NULL)
  6399             /* Get the value from a foo(<param_value>) style call */
  5872               IN_param_value = function_call_param_iterator.next();
  6400             if (IN_param_value == NULL)
  5873             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6401               IN_param_value = function_call_param_iterator.next();
  5874             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6402             if (IN_param_value != NULL) {
  5875             
  6403               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5876             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  6404               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6405             }
       
  6406             
       
  6407             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5877             {
  6408             {
  5878         
  6409         
  5879                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  6410                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  5880                 return return_type_symbol;
  6411                 return return_type_symbol;
  5881                 
  6412                 
  5897 
  6428 
  5898         {
  6429         {
  5899             identifier_c param_name("IN");
  6430             identifier_c param_name("IN");
  5900             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6431             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5901             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6432             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5902             
  6433             symbol_c *IN_type_symbol = NULL;
  5903             /* Get the value from a foo(<param_value>) style call */
  6434             
  5904             if (IN_param_value == NULL)
  6435             /* Get the value from a foo(<param_value>) style call */
  5905               IN_param_value = function_call_param_iterator.next();
  6436             if (IN_param_value == NULL)
  5906             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6437               IN_param_value = function_call_param_iterator.next();
  5907             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6438             if (IN_param_value != NULL) {
  5908             
  6439               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5909             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  6440               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6441             }
       
  6442             
       
  6443             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
  5910             {
  6444             {
  5911         
  6445         
  5912                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  6446                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  5913                 return return_type_symbol;
  6447                 return return_type_symbol;
  5914                 
  6448                 
  5930 
  6464 
  5931         {
  6465         {
  5932             identifier_c param_name("IN");
  6466             identifier_c param_name("IN");
  5933             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6467             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5934             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6468             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5935             
  6469             symbol_c *IN_type_symbol = NULL;
  5936             /* Get the value from a foo(<param_value>) style call */
  6470             
  5937             if (IN_param_value == NULL)
  6471             /* Get the value from a foo(<param_value>) style call */
  5938               IN_param_value = function_call_param_iterator.next();
  6472             if (IN_param_value == NULL)
  5939             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6473               IN_param_value = function_call_param_iterator.next();
  5940             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6474             if (IN_param_value != NULL) {
  5941             
  6475               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5942             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6476               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6477             }
       
  6478             
       
  6479             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  5943             {
  6480             {
  5944         
  6481         
  5945                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  6482                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  5946                 return return_type_symbol;
  6483                 return return_type_symbol;
  5947                 
  6484                 
  5963 
  6500 
  5964         {
  6501         {
  5965             identifier_c param_name("IN");
  6502             identifier_c param_name("IN");
  5966             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6503             /* Get the value from a foo(<param_name> = <param_value>) style call */
  5967             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6504             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  5968             
  6505             symbol_c *IN_type_symbol = NULL;
  5969             /* Get the value from a foo(<param_value>) style call */
  6506             
  5970             if (IN_param_value == NULL)
  6507             /* Get the value from a foo(<param_value>) style call */
  5971               IN_param_value = function_call_param_iterator.next();
  6508             if (IN_param_value == NULL)
  5972             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6509               IN_param_value = function_call_param_iterator.next();
  5973             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6510             if (IN_param_value != NULL) {
  5974             
  6511               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  5975             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6512               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6513             }
       
  6514             
       
  6515             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  5976             {
  6516             {
  5977         
  6517         
  5978                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  6518                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  5979                 return return_type_symbol;
  6519                 return return_type_symbol;
  5980                 
  6520                 
  5996 
  6536 
  5997         {
  6537         {
  5998             identifier_c param_name("IN");
  6538             identifier_c param_name("IN");
  5999             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6539             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6000             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6540             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6001             
  6541             symbol_c *IN_type_symbol = NULL;
  6002             /* Get the value from a foo(<param_value>) style call */
  6542             
  6003             if (IN_param_value == NULL)
  6543             /* Get the value from a foo(<param_value>) style call */
  6004               IN_param_value = function_call_param_iterator.next();
  6544             if (IN_param_value == NULL)
  6005             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6545               IN_param_value = function_call_param_iterator.next();
  6006             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6546             if (IN_param_value != NULL) {
  6007             
  6547               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6008             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6548               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6549             }
       
  6550             
       
  6551             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6009             {
  6552             {
  6010         
  6553         
  6011                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  6554                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  6012                 return return_type_symbol;
  6555                 return return_type_symbol;
  6013                 
  6556                 
  6029 
  6572 
  6030         {
  6573         {
  6031             identifier_c param_name("IN");
  6574             identifier_c param_name("IN");
  6032             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6575             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6033             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6576             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6034             
  6577             symbol_c *IN_type_symbol = NULL;
  6035             /* Get the value from a foo(<param_value>) style call */
  6578             
  6036             if (IN_param_value == NULL)
  6579             /* Get the value from a foo(<param_value>) style call */
  6037               IN_param_value = function_call_param_iterator.next();
  6580             if (IN_param_value == NULL)
  6038             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6581               IN_param_value = function_call_param_iterator.next();
  6039             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6582             if (IN_param_value != NULL) {
  6040             
  6583               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6041             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6584               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6585             }
       
  6586             
       
  6587             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6042             {
  6588             {
  6043         
  6589         
  6044                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  6590                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  6045                 return return_type_symbol;
  6591                 return return_type_symbol;
  6046                 
  6592                 
  6062 
  6608 
  6063         {
  6609         {
  6064             identifier_c param_name("IN");
  6610             identifier_c param_name("IN");
  6065             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6611             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6066             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6612             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6067             
  6613             symbol_c *IN_type_symbol = NULL;
  6068             /* Get the value from a foo(<param_value>) style call */
  6614             
  6069             if (IN_param_value == NULL)
  6615             /* Get the value from a foo(<param_value>) style call */
  6070               IN_param_value = function_call_param_iterator.next();
  6616             if (IN_param_value == NULL)
  6071             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6617               IN_param_value = function_call_param_iterator.next();
  6072             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6618             if (IN_param_value != NULL) {
  6073             
  6619               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6074             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6620               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6621             }
       
  6622             
       
  6623             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6075             {
  6624             {
  6076         
  6625         
  6077                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  6626                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  6078                 return return_type_symbol;
  6627                 return return_type_symbol;
  6079                 
  6628                 
  6095 
  6644 
  6096         {
  6645         {
  6097             identifier_c param_name("IN");
  6646             identifier_c param_name("IN");
  6098             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6647             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6099             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6648             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6100             
  6649             symbol_c *IN_type_symbol = NULL;
  6101             /* Get the value from a foo(<param_value>) style call */
  6650             
  6102             if (IN_param_value == NULL)
  6651             /* Get the value from a foo(<param_value>) style call */
  6103               IN_param_value = function_call_param_iterator.next();
  6652             if (IN_param_value == NULL)
  6104             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6653               IN_param_value = function_call_param_iterator.next();
  6105             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6654             if (IN_param_value != NULL) {
  6106             
  6655               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6107             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6656               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6657             }
       
  6658             
       
  6659             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6108             {
  6660             {
  6109         
  6661         
  6110                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  6662                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  6111                 return return_type_symbol;
  6663                 return return_type_symbol;
  6112                 
  6664                 
  6128 
  6680 
  6129         {
  6681         {
  6130             identifier_c param_name("IN");
  6682             identifier_c param_name("IN");
  6131             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6683             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6132             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6684             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6133             
  6685             symbol_c *IN_type_symbol = NULL;
  6134             /* Get the value from a foo(<param_value>) style call */
  6686             
  6135             if (IN_param_value == NULL)
  6687             /* Get the value from a foo(<param_value>) style call */
  6136               IN_param_value = function_call_param_iterator.next();
  6688             if (IN_param_value == NULL)
  6137             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6689               IN_param_value = function_call_param_iterator.next();
  6138             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6690             if (IN_param_value != NULL) {
  6139             
  6691               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6140             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6692               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6693             }
       
  6694             
       
  6695             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6141             {
  6696             {
  6142         
  6697         
  6143                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  6698                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  6144                 return return_type_symbol;
  6699                 return return_type_symbol;
  6145                 
  6700                 
  6161 
  6716 
  6162         {
  6717         {
  6163             identifier_c param_name("IN");
  6718             identifier_c param_name("IN");
  6164             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6719             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6165             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6720             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6166             
  6721             symbol_c *IN_type_symbol = NULL;
  6167             /* Get the value from a foo(<param_value>) style call */
  6722             
  6168             if (IN_param_value == NULL)
  6723             /* Get the value from a foo(<param_value>) style call */
  6169               IN_param_value = function_call_param_iterator.next();
  6724             if (IN_param_value == NULL)
  6170             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6725               IN_param_value = function_call_param_iterator.next();
  6171             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6726             if (IN_param_value != NULL) {
  6172             
  6727               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6173             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6728               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6729             }
       
  6730             
       
  6731             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6174             {
  6732             {
  6175         
  6733         
  6176                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  6734                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  6177                 return return_type_symbol;
  6735                 return return_type_symbol;
  6178                 
  6736                 
  6194 
  6752 
  6195         {
  6753         {
  6196             identifier_c param_name("IN");
  6754             identifier_c param_name("IN");
  6197             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6755             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6198             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6756             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6199             
  6757             symbol_c *IN_type_symbol = NULL;
  6200             /* Get the value from a foo(<param_value>) style call */
  6758             
  6201             if (IN_param_value == NULL)
  6759             /* Get the value from a foo(<param_value>) style call */
  6202               IN_param_value = function_call_param_iterator.next();
  6760             if (IN_param_value == NULL)
  6203             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6761               IN_param_value = function_call_param_iterator.next();
  6204             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6762             if (IN_param_value != NULL) {
  6205             
  6763               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6206             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6764               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6765             }
       
  6766             
       
  6767             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6207             {
  6768             {
  6208         
  6769         
  6209                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  6770                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  6210                 return return_type_symbol;
  6771                 return return_type_symbol;
  6211                 
  6772                 
  6227 
  6788 
  6228         {
  6789         {
  6229             identifier_c param_name("IN");
  6790             identifier_c param_name("IN");
  6230             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6791             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6231             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6792             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6232             
  6793             symbol_c *IN_type_symbol = NULL;
  6233             /* Get the value from a foo(<param_value>) style call */
  6794             
  6234             if (IN_param_value == NULL)
  6795             /* Get the value from a foo(<param_value>) style call */
  6235               IN_param_value = function_call_param_iterator.next();
  6796             if (IN_param_value == NULL)
  6236             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6797               IN_param_value = function_call_param_iterator.next();
  6237             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6798             if (IN_param_value != NULL) {
  6238             
  6799               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6239             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6800               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6801             }
       
  6802             
       
  6803             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6240             {
  6804             {
  6241         
  6805         
  6242                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  6806                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  6243                 return return_type_symbol;
  6807                 return return_type_symbol;
  6244                 
  6808                 
  6260 
  6824 
  6261         {
  6825         {
  6262             identifier_c param_name("IN");
  6826             identifier_c param_name("IN");
  6263             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6827             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6264             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6828             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6265             
  6829             symbol_c *IN_type_symbol = NULL;
  6266             /* Get the value from a foo(<param_value>) style call */
  6830             
  6267             if (IN_param_value == NULL)
  6831             /* Get the value from a foo(<param_value>) style call */
  6268               IN_param_value = function_call_param_iterator.next();
  6832             if (IN_param_value == NULL)
  6269             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6833               IN_param_value = function_call_param_iterator.next();
  6270             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6834             if (IN_param_value != NULL) {
  6271             
  6835               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6272             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6836               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6837             }
       
  6838             
       
  6839             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6273             {
  6840             {
  6274         
  6841         
  6275                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  6842                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  6276                 return return_type_symbol;
  6843                 return return_type_symbol;
  6277                 
  6844                 
  6293 
  6860 
  6294         {
  6861         {
  6295             identifier_c param_name("IN");
  6862             identifier_c param_name("IN");
  6296             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6863             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6297             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6864             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6298             
  6865             symbol_c *IN_type_symbol = NULL;
  6299             /* Get the value from a foo(<param_value>) style call */
  6866             
  6300             if (IN_param_value == NULL)
  6867             /* Get the value from a foo(<param_value>) style call */
  6301               IN_param_value = function_call_param_iterator.next();
  6868             if (IN_param_value == NULL)
  6302             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6869               IN_param_value = function_call_param_iterator.next();
  6303             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6870             if (IN_param_value != NULL) {
  6304             
  6871               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6305             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6872               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6873             }
       
  6874             
       
  6875             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6306             {
  6876             {
  6307         
  6877         
  6308                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  6878                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  6309                 return return_type_symbol;
  6879                 return return_type_symbol;
  6310                 
  6880                 
  6326 
  6896 
  6327         {
  6897         {
  6328             identifier_c param_name("IN");
  6898             identifier_c param_name("IN");
  6329             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6899             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6330             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6900             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6331             
  6901             symbol_c *IN_type_symbol = NULL;
  6332             /* Get the value from a foo(<param_value>) style call */
  6902             
  6333             if (IN_param_value == NULL)
  6903             /* Get the value from a foo(<param_value>) style call */
  6334               IN_param_value = function_call_param_iterator.next();
  6904             if (IN_param_value == NULL)
  6335             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6905               IN_param_value = function_call_param_iterator.next();
  6336             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6906             if (IN_param_value != NULL) {
  6337             
  6907               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6338             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6908               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6909             }
       
  6910             
       
  6911             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6339             {
  6912             {
  6340         
  6913         
  6341                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  6914                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  6342                 return return_type_symbol;
  6915                 return return_type_symbol;
  6343                 
  6916                 
  6359 
  6932 
  6360         {
  6933         {
  6361             identifier_c param_name("IN");
  6934             identifier_c param_name("IN");
  6362             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6935             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6363             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6936             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6364             
  6937             symbol_c *IN_type_symbol = NULL;
  6365             /* Get the value from a foo(<param_value>) style call */
  6938             
  6366             if (IN_param_value == NULL)
  6939             /* Get the value from a foo(<param_value>) style call */
  6367               IN_param_value = function_call_param_iterator.next();
  6940             if (IN_param_value == NULL)
  6368             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6941               IN_param_value = function_call_param_iterator.next();
  6369             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6942             if (IN_param_value != NULL) {
  6370             
  6943               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6371             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6944               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6945             }
       
  6946             
       
  6947             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6372             {
  6948             {
  6373         
  6949         
  6374                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  6950                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  6375                 return return_type_symbol;
  6951                 return return_type_symbol;
  6376                 
  6952                 
  6392 
  6968 
  6393         {
  6969         {
  6394             identifier_c param_name("IN");
  6970             identifier_c param_name("IN");
  6395             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6971             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6396             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6972             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6397             
  6973             symbol_c *IN_type_symbol = NULL;
  6398             /* Get the value from a foo(<param_value>) style call */
  6974             
  6399             if (IN_param_value == NULL)
  6975             /* Get the value from a foo(<param_value>) style call */
  6400               IN_param_value = function_call_param_iterator.next();
  6976             if (IN_param_value == NULL)
  6401             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6977               IN_param_value = function_call_param_iterator.next();
  6402             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  6978             if (IN_param_value != NULL) {
  6403             
  6979               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6404             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6980               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  6981             }
       
  6982             
       
  6983             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6405             {
  6984             {
  6406         
  6985         
  6407                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  6986                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  6408                 return return_type_symbol;
  6987                 return return_type_symbol;
  6409                 
  6988                 
  6425 
  7004 
  6426         {
  7005         {
  6427             identifier_c param_name("IN");
  7006             identifier_c param_name("IN");
  6428             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7007             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6429             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7008             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6430             
  7009             symbol_c *IN_type_symbol = NULL;
  6431             /* Get the value from a foo(<param_value>) style call */
  7010             
  6432             if (IN_param_value == NULL)
  7011             /* Get the value from a foo(<param_value>) style call */
  6433               IN_param_value = function_call_param_iterator.next();
  7012             if (IN_param_value == NULL)
  6434             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7013               IN_param_value = function_call_param_iterator.next();
  6435             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7014             if (IN_param_value != NULL) {
  6436             
  7015               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6437             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  7016               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7017             }
       
  7018             
       
  7019             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6438             {
  7020             {
  6439         
  7021         
  6440                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  7022                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  6441                 return return_type_symbol;
  7023                 return return_type_symbol;
  6442                 
  7024                 
  6458 
  7040 
  6459         {
  7041         {
  6460             identifier_c param_name("IN");
  7042             identifier_c param_name("IN");
  6461             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7043             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6462             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7044             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6463             
  7045             symbol_c *IN_type_symbol = NULL;
  6464             /* Get the value from a foo(<param_value>) style call */
  7046             
  6465             if (IN_param_value == NULL)
  7047             /* Get the value from a foo(<param_value>) style call */
  6466               IN_param_value = function_call_param_iterator.next();
  7048             if (IN_param_value == NULL)
  6467             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7049               IN_param_value = function_call_param_iterator.next();
  6468             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7050             if (IN_param_value != NULL) {
  6469             
  7051               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6470             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  7052               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7053             }
       
  7054             
       
  7055             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6471             {
  7056             {
  6472         
  7057         
  6473                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  7058                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  6474                 return return_type_symbol;
  7059                 return return_type_symbol;
  6475                 
  7060                 
  6491 
  7076 
  6492         {
  7077         {
  6493             identifier_c param_name("IN");
  7078             identifier_c param_name("IN");
  6494             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7079             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6495             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7080             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6496             
  7081             symbol_c *IN_type_symbol = NULL;
  6497             /* Get the value from a foo(<param_value>) style call */
  7082             
  6498             if (IN_param_value == NULL)
  7083             /* Get the value from a foo(<param_value>) style call */
  6499               IN_param_value = function_call_param_iterator.next();
  7084             if (IN_param_value == NULL)
  6500             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7085               IN_param_value = function_call_param_iterator.next();
  6501             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7086             if (IN_param_value != NULL) {
  6502             
  7087               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6503             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  7088               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7089             }
       
  7090             
       
  7091             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6504             {
  7092             {
  6505         
  7093         
  6506                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  7094                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  6507                 return return_type_symbol;
  7095                 return return_type_symbol;
  6508                 
  7096                 
  6524 
  7112 
  6525         {
  7113         {
  6526             identifier_c param_name("IN");
  7114             identifier_c param_name("IN");
  6527             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7115             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6528             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7116             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6529             
  7117             symbol_c *IN_type_symbol = NULL;
  6530             /* Get the value from a foo(<param_value>) style call */
  7118             
  6531             if (IN_param_value == NULL)
  7119             /* Get the value from a foo(<param_value>) style call */
  6532               IN_param_value = function_call_param_iterator.next();
  7120             if (IN_param_value == NULL)
  6533             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7121               IN_param_value = function_call_param_iterator.next();
  6534             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7122             if (IN_param_value != NULL) {
  6535             
  7123               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6536             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  7124               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7125             }
       
  7126             
       
  7127             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
  6537             {
  7128             {
  6538         
  7129         
  6539                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  7130                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  6540                 return return_type_symbol;
  7131                 return return_type_symbol;
  6541                 
  7132                 
  6557 
  7148 
  6558         {
  7149         {
  6559             identifier_c param_name("IN");
  7150             identifier_c param_name("IN");
  6560             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7151             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6561             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7152             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6562             
  7153             symbol_c *IN_type_symbol = NULL;
  6563             /* Get the value from a foo(<param_value>) style call */
  7154             
  6564             if (IN_param_value == NULL)
  7155             /* Get the value from a foo(<param_value>) style call */
  6565               IN_param_value = function_call_param_iterator.next();
  7156             if (IN_param_value == NULL)
  6566             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7157               IN_param_value = function_call_param_iterator.next();
  6567             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7158             if (IN_param_value != NULL) {
  6568             
  7159               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6569             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7160               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7161             }
       
  7162             
       
  7163             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  6570             {
  7164             {
  6571         
  7165         
  6572                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  7166                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  6573                 return return_type_symbol;
  7167                 return return_type_symbol;
  6574                 
  7168                 
  6590 
  7184 
  6591         {
  7185         {
  6592             identifier_c param_name("IN");
  7186             identifier_c param_name("IN");
  6593             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7187             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6594             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7188             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6595             
  7189             symbol_c *IN_type_symbol = NULL;
  6596             /* Get the value from a foo(<param_value>) style call */
  7190             
  6597             if (IN_param_value == NULL)
  7191             /* Get the value from a foo(<param_value>) style call */
  6598               IN_param_value = function_call_param_iterator.next();
  7192             if (IN_param_value == NULL)
  6599             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7193               IN_param_value = function_call_param_iterator.next();
  6600             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7194             if (IN_param_value != NULL) {
  6601             
  7195               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6602             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7196               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7197             }
       
  7198             
       
  7199             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  6603             {
  7200             {
  6604         
  7201         
  6605                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  7202                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  6606                 return return_type_symbol;
  7203                 return return_type_symbol;
  6607                 
  7204                 
  6623 
  7220 
  6624         {
  7221         {
  6625             identifier_c param_name("IN");
  7222             identifier_c param_name("IN");
  6626             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7223             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6627             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7224             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6628             
  7225             symbol_c *IN_type_symbol = NULL;
  6629             /* Get the value from a foo(<param_value>) style call */
  7226             
  6630             if (IN_param_value == NULL)
  7227             /* Get the value from a foo(<param_value>) style call */
  6631               IN_param_value = function_call_param_iterator.next();
  7228             if (IN_param_value == NULL)
  6632             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7229               IN_param_value = function_call_param_iterator.next();
  6633             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7230             if (IN_param_value != NULL) {
  6634             
  7231               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6635             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7232               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7233             }
       
  7234             
       
  7235             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  6636             {
  7236             {
  6637         
  7237         
  6638                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  7238                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  6639                 return return_type_symbol;
  7239                 return return_type_symbol;
  6640                 
  7240                 
  6656 
  7256 
  6657         {
  7257         {
  6658             identifier_c param_name("IN");
  7258             identifier_c param_name("IN");
  6659             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7259             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6660             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7260             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6661             
  7261             symbol_c *IN_type_symbol = NULL;
  6662             /* Get the value from a foo(<param_value>) style call */
  7262             
  6663             if (IN_param_value == NULL)
  7263             /* Get the value from a foo(<param_value>) style call */
  6664               IN_param_value = function_call_param_iterator.next();
  7264             if (IN_param_value == NULL)
  6665             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7265               IN_param_value = function_call_param_iterator.next();
  6666             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7266             if (IN_param_value != NULL) {
  6667             
  7267               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6668             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7268               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7269             }
       
  7270             
       
  7271             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  6669             {
  7272             {
  6670         
  7273         
  6671                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  7274                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  6672                 return return_type_symbol;
  7275                 return return_type_symbol;
  6673                 
  7276                 
  6689 
  7292 
  6690         {
  7293         {
  6691             identifier_c param_name("IN");
  7294             identifier_c param_name("IN");
  6692             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7295             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6693             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7296             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6694             
  7297             symbol_c *IN_type_symbol = NULL;
  6695             /* Get the value from a foo(<param_value>) style call */
  7298             
  6696             if (IN_param_value == NULL)
  7299             /* Get the value from a foo(<param_value>) style call */
  6697               IN_param_value = function_call_param_iterator.next();
  7300             if (IN_param_value == NULL)
  6698             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7301               IN_param_value = function_call_param_iterator.next();
  6699             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7302             if (IN_param_value != NULL) {
  6700             
  7303               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6701             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7304               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7305             }
       
  7306             
       
  7307             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  6702             {
  7308             {
  6703         
  7309         
  6704                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  7310                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  6705                 return return_type_symbol;
  7311                 return return_type_symbol;
  6706                 
  7312                 
  6722 
  7328 
  6723         {
  7329         {
  6724             identifier_c param_name("IN");
  7330             identifier_c param_name("IN");
  6725             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7331             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6726             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7332             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6727             
  7333             symbol_c *IN_type_symbol = NULL;
  6728             /* Get the value from a foo(<param_value>) style call */
  7334             
  6729             if (IN_param_value == NULL)
  7335             /* Get the value from a foo(<param_value>) style call */
  6730               IN_param_value = function_call_param_iterator.next();
  7336             if (IN_param_value == NULL)
  6731             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7337               IN_param_value = function_call_param_iterator.next();
  6732             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7338             if (IN_param_value != NULL) {
  6733             
  7339               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6734             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7340               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7341             }
       
  7342             
       
  7343             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  6735             {
  7344             {
  6736         
  7345         
  6737                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  7346                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  6738                 return return_type_symbol;
  7347                 return return_type_symbol;
  6739                 
  7348                 
  6755 
  7364 
  6756         {
  7365         {
  6757             identifier_c param_name("IN");
  7366             identifier_c param_name("IN");
  6758             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7367             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6759             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7368             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6760             
  7369             symbol_c *IN_type_symbol = NULL;
  6761             /* Get the value from a foo(<param_value>) style call */
  7370             
  6762             if (IN_param_value == NULL)
  7371             /* Get the value from a foo(<param_value>) style call */
  6763               IN_param_value = function_call_param_iterator.next();
  7372             if (IN_param_value == NULL)
  6764             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7373               IN_param_value = function_call_param_iterator.next();
  6765             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7374             if (IN_param_value != NULL) {
  6766             
  7375               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6767             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7376               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7377             }
       
  7378             
       
  7379             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  6768             {
  7380             {
  6769         
  7381         
  6770                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  7382                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  6771                 return return_type_symbol;
  7383                 return return_type_symbol;
  6772                 
  7384                 
  6788 
  7400 
  6789         {
  7401         {
  6790             identifier_c param_name("IN");
  7402             identifier_c param_name("IN");
  6791             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7403             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6792             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7404             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6793             
  7405             symbol_c *IN_type_symbol = NULL;
  6794             /* Get the value from a foo(<param_value>) style call */
  7406             
  6795             if (IN_param_value == NULL)
  7407             /* Get the value from a foo(<param_value>) style call */
  6796               IN_param_value = function_call_param_iterator.next();
  7408             if (IN_param_value == NULL)
  6797             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7409               IN_param_value = function_call_param_iterator.next();
  6798             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7410             if (IN_param_value != NULL) {
  6799             
  7411               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6800             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7412               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7413             }
       
  7414             
       
  7415             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  6801             {
  7416             {
  6802         
  7417         
  6803                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  7418                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  6804                 return return_type_symbol;
  7419                 return return_type_symbol;
  6805                 
  7420                 
  6821 
  7436 
  6822         {
  7437         {
  6823             identifier_c param_name("IN");
  7438             identifier_c param_name("IN");
  6824             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7439             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6825             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7440             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6826             
  7441             symbol_c *IN_type_symbol = NULL;
  6827             /* Get the value from a foo(<param_value>) style call */
  7442             
  6828             if (IN_param_value == NULL)
  7443             /* Get the value from a foo(<param_value>) style call */
  6829               IN_param_value = function_call_param_iterator.next();
  7444             if (IN_param_value == NULL)
  6830             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7445               IN_param_value = function_call_param_iterator.next();
  6831             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7446             if (IN_param_value != NULL) {
  6832             
  7447               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6833             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7448               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7449             }
       
  7450             
       
  7451             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  6834             {
  7452             {
  6835         
  7453         
  6836                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  7454                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  6837                 return return_type_symbol;
  7455                 return return_type_symbol;
  6838                 
  7456                 
  6854 
  7472 
  6855         {
  7473         {
  6856             identifier_c param_name("IN");
  7474             identifier_c param_name("IN");
  6857             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7475             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6858             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7476             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6859             
  7477             symbol_c *IN_type_symbol = NULL;
  6860             /* Get the value from a foo(<param_value>) style call */
  7478             
  6861             if (IN_param_value == NULL)
  7479             /* Get the value from a foo(<param_value>) style call */
  6862               IN_param_value = function_call_param_iterator.next();
  7480             if (IN_param_value == NULL)
  6863             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7481               IN_param_value = function_call_param_iterator.next();
  6864             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7482             if (IN_param_value != NULL) {
  6865             
  7483               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6866             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7484               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7485             }
       
  7486             
       
  7487             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  6867             {
  7488             {
  6868         
  7489         
  6869                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  7490                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  6870                 return return_type_symbol;
  7491                 return return_type_symbol;
  6871                 
  7492                 
  6887 
  7508 
  6888         {
  7509         {
  6889             identifier_c param_name("IN");
  7510             identifier_c param_name("IN");
  6890             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7511             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6891             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7512             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6892             
  7513             symbol_c *IN_type_symbol = NULL;
  6893             /* Get the value from a foo(<param_value>) style call */
  7514             
  6894             if (IN_param_value == NULL)
  7515             /* Get the value from a foo(<param_value>) style call */
  6895               IN_param_value = function_call_param_iterator.next();
  7516             if (IN_param_value == NULL)
  6896             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7517               IN_param_value = function_call_param_iterator.next();
  6897             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7518             if (IN_param_value != NULL) {
  6898             
  7519               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6899             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7520               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7521             }
       
  7522             
       
  7523             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  6900             {
  7524             {
  6901         
  7525         
  6902                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  7526                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  6903                 return return_type_symbol;
  7527                 return return_type_symbol;
  6904                 
  7528                 
  6920 
  7544 
  6921         {
  7545         {
  6922             identifier_c param_name("IN");
  7546             identifier_c param_name("IN");
  6923             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7547             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6924             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7548             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6925             
  7549             symbol_c *IN_type_symbol = NULL;
  6926             /* Get the value from a foo(<param_value>) style call */
  7550             
  6927             if (IN_param_value == NULL)
  7551             /* Get the value from a foo(<param_value>) style call */
  6928               IN_param_value = function_call_param_iterator.next();
  7552             if (IN_param_value == NULL)
  6929             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7553               IN_param_value = function_call_param_iterator.next();
  6930             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7554             if (IN_param_value != NULL) {
  6931             
  7555               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6932             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7556               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7557             }
       
  7558             
       
  7559             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  6933             {
  7560             {
  6934         
  7561         
  6935                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  7562                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  6936                 return return_type_symbol;
  7563                 return return_type_symbol;
  6937                 
  7564                 
  6953 
  7580 
  6954         {
  7581         {
  6955             identifier_c param_name("IN");
  7582             identifier_c param_name("IN");
  6956             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7583             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6957             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7584             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6958             
  7585             symbol_c *IN_type_symbol = NULL;
  6959             /* Get the value from a foo(<param_value>) style call */
  7586             
  6960             if (IN_param_value == NULL)
  7587             /* Get the value from a foo(<param_value>) style call */
  6961               IN_param_value = function_call_param_iterator.next();
  7588             if (IN_param_value == NULL)
  6962             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7589               IN_param_value = function_call_param_iterator.next();
  6963             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7590             if (IN_param_value != NULL) {
  6964             
  7591               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6965             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7592               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7593             }
       
  7594             
       
  7595             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  6966             {
  7596             {
  6967         
  7597         
  6968                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  7598                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  6969                 return return_type_symbol;
  7599                 return return_type_symbol;
  6970                 
  7600                 
  6986 
  7616 
  6987         {
  7617         {
  6988             identifier_c param_name("IN");
  7618             identifier_c param_name("IN");
  6989             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7619             /* Get the value from a foo(<param_name> = <param_value>) style call */
  6990             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7620             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  6991             
  7621             symbol_c *IN_type_symbol = NULL;
  6992             /* Get the value from a foo(<param_value>) style call */
  7622             
  6993             if (IN_param_value == NULL)
  7623             /* Get the value from a foo(<param_value>) style call */
  6994               IN_param_value = function_call_param_iterator.next();
  7624             if (IN_param_value == NULL)
  6995             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7625               IN_param_value = function_call_param_iterator.next();
  6996             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7626             if (IN_param_value != NULL) {
  6997             
  7627               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  6998             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7628               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7629             }
       
  7630             
       
  7631             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  6999             {
  7632             {
  7000         
  7633         
  7001                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  7634                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  7002                 return return_type_symbol;
  7635                 return return_type_symbol;
  7003                 
  7636                 
  7019 
  7652 
  7020         {
  7653         {
  7021             identifier_c param_name("IN");
  7654             identifier_c param_name("IN");
  7022             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7655             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7023             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7656             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7024             
  7657             symbol_c *IN_type_symbol = NULL;
  7025             /* Get the value from a foo(<param_value>) style call */
  7658             
  7026             if (IN_param_value == NULL)
  7659             /* Get the value from a foo(<param_value>) style call */
  7027               IN_param_value = function_call_param_iterator.next();
  7660             if (IN_param_value == NULL)
  7028             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7661               IN_param_value = function_call_param_iterator.next();
  7029             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7662             if (IN_param_value != NULL) {
  7030             
  7663               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7031             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7664               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7665             }
       
  7666             
       
  7667             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7032             {
  7668             {
  7033         
  7669         
  7034                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  7670                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  7035                 return return_type_symbol;
  7671                 return return_type_symbol;
  7036                 
  7672                 
  7052 
  7688 
  7053         {
  7689         {
  7054             identifier_c param_name("IN");
  7690             identifier_c param_name("IN");
  7055             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7691             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7056             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7692             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7057             
  7693             symbol_c *IN_type_symbol = NULL;
  7058             /* Get the value from a foo(<param_value>) style call */
  7694             
  7059             if (IN_param_value == NULL)
  7695             /* Get the value from a foo(<param_value>) style call */
  7060               IN_param_value = function_call_param_iterator.next();
  7696             if (IN_param_value == NULL)
  7061             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7697               IN_param_value = function_call_param_iterator.next();
  7062             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7698             if (IN_param_value != NULL) {
  7063             
  7699               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7064             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7700               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7701             }
       
  7702             
       
  7703             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7065             {
  7704             {
  7066         
  7705         
  7067                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  7706                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  7068                 return return_type_symbol;
  7707                 return return_type_symbol;
  7069                 
  7708                 
  7085 
  7724 
  7086         {
  7725         {
  7087             identifier_c param_name("IN");
  7726             identifier_c param_name("IN");
  7088             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7727             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7089             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7728             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7090             
  7729             symbol_c *IN_type_symbol = NULL;
  7091             /* Get the value from a foo(<param_value>) style call */
  7730             
  7092             if (IN_param_value == NULL)
  7731             /* Get the value from a foo(<param_value>) style call */
  7093               IN_param_value = function_call_param_iterator.next();
  7732             if (IN_param_value == NULL)
  7094             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7733               IN_param_value = function_call_param_iterator.next();
  7095             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7734             if (IN_param_value != NULL) {
  7096             
  7735               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7097             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7736               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7737             }
       
  7738             
       
  7739             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7098             {
  7740             {
  7099         
  7741         
  7100                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  7742                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  7101                 return return_type_symbol;
  7743                 return return_type_symbol;
  7102                 
  7744                 
  7118 
  7760 
  7119         {
  7761         {
  7120             identifier_c param_name("IN");
  7762             identifier_c param_name("IN");
  7121             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7763             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7122             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7764             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7123             
  7765             symbol_c *IN_type_symbol = NULL;
  7124             /* Get the value from a foo(<param_value>) style call */
  7766             
  7125             if (IN_param_value == NULL)
  7767             /* Get the value from a foo(<param_value>) style call */
  7126               IN_param_value = function_call_param_iterator.next();
  7768             if (IN_param_value == NULL)
  7127             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7769               IN_param_value = function_call_param_iterator.next();
  7128             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7770             if (IN_param_value != NULL) {
  7129             
  7771               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7130             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7772               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7773             }
       
  7774             
       
  7775             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7131             {
  7776             {
  7132         
  7777         
  7133                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  7778                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  7134                 return return_type_symbol;
  7779                 return return_type_symbol;
  7135                 
  7780                 
  7151 
  7796 
  7152         {
  7797         {
  7153             identifier_c param_name("IN");
  7798             identifier_c param_name("IN");
  7154             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7799             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7155             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7800             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7156             
  7801             symbol_c *IN_type_symbol = NULL;
  7157             /* Get the value from a foo(<param_value>) style call */
  7802             
  7158             if (IN_param_value == NULL)
  7803             /* Get the value from a foo(<param_value>) style call */
  7159               IN_param_value = function_call_param_iterator.next();
  7804             if (IN_param_value == NULL)
  7160             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7805               IN_param_value = function_call_param_iterator.next();
  7161             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7806             if (IN_param_value != NULL) {
  7162             
  7807               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7163             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7808               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7809             }
       
  7810             
       
  7811             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
  7164             {
  7812             {
  7165         
  7813         
  7166                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  7814                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  7167                 return return_type_symbol;
  7815                 return return_type_symbol;
  7168                 
  7816                 
  7184 
  7832 
  7185         {
  7833         {
  7186             identifier_c param_name("IN");
  7834             identifier_c param_name("IN");
  7187             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7835             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7188             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7836             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7189             
  7837             symbol_c *IN_type_symbol = NULL;
  7190             /* Get the value from a foo(<param_value>) style call */
  7838             
  7191             if (IN_param_value == NULL)
  7839             /* Get the value from a foo(<param_value>) style call */
  7192               IN_param_value = function_call_param_iterator.next();
  7840             if (IN_param_value == NULL)
  7193             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7841               IN_param_value = function_call_param_iterator.next();
  7194             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7842             if (IN_param_value != NULL) {
  7195             
  7843               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7196             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7844               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7845             }
       
  7846             
       
  7847             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7197             {
  7848             {
  7198         
  7849         
  7199                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  7850                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  7200                 return return_type_symbol;
  7851                 return return_type_symbol;
  7201                 
  7852                 
  7217 
  7868 
  7218         {
  7869         {
  7219             identifier_c param_name("IN");
  7870             identifier_c param_name("IN");
  7220             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7871             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7221             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7872             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7222             
  7873             symbol_c *IN_type_symbol = NULL;
  7223             /* Get the value from a foo(<param_value>) style call */
  7874             
  7224             if (IN_param_value == NULL)
  7875             /* Get the value from a foo(<param_value>) style call */
  7225               IN_param_value = function_call_param_iterator.next();
  7876             if (IN_param_value == NULL)
  7226             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7877               IN_param_value = function_call_param_iterator.next();
  7227             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7878             if (IN_param_value != NULL) {
  7228             
  7879               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7229             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7880               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7881             }
       
  7882             
       
  7883             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7230             {
  7884             {
  7231         
  7885         
  7232                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  7886                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  7233                 return return_type_symbol;
  7887                 return return_type_symbol;
  7234                 
  7888                 
  7250 
  7904 
  7251         {
  7905         {
  7252             identifier_c param_name("IN");
  7906             identifier_c param_name("IN");
  7253             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7907             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7254             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7908             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7255             
  7909             symbol_c *IN_type_symbol = NULL;
  7256             /* Get the value from a foo(<param_value>) style call */
  7910             
  7257             if (IN_param_value == NULL)
  7911             /* Get the value from a foo(<param_value>) style call */
  7258               IN_param_value = function_call_param_iterator.next();
  7912             if (IN_param_value == NULL)
  7259             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7913               IN_param_value = function_call_param_iterator.next();
  7260             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7914             if (IN_param_value != NULL) {
  7261             
  7915               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7262             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7916               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7917             }
       
  7918             
       
  7919             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7263             {
  7920             {
  7264         
  7921         
  7265                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  7922                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  7266                 return return_type_symbol;
  7923                 return return_type_symbol;
  7267                 
  7924                 
  7283 
  7940 
  7284         {
  7941         {
  7285             identifier_c param_name("IN");
  7942             identifier_c param_name("IN");
  7286             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7943             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7287             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7944             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7288             
  7945             symbol_c *IN_type_symbol = NULL;
  7289             /* Get the value from a foo(<param_value>) style call */
  7946             
  7290             if (IN_param_value == NULL)
  7947             /* Get the value from a foo(<param_value>) style call */
  7291               IN_param_value = function_call_param_iterator.next();
  7948             if (IN_param_value == NULL)
  7292             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7949               IN_param_value = function_call_param_iterator.next();
  7293             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7950             if (IN_param_value != NULL) {
  7294             
  7951               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7295             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7952               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7953             }
       
  7954             
       
  7955             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7296             {
  7956             {
  7297         
  7957         
  7298                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  7958                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  7299                 return return_type_symbol;
  7959                 return return_type_symbol;
  7300                 
  7960                 
  7316 
  7976 
  7317         {
  7977         {
  7318             identifier_c param_name("IN");
  7978             identifier_c param_name("IN");
  7319             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7979             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7320             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7980             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7321             
  7981             symbol_c *IN_type_symbol = NULL;
  7322             /* Get the value from a foo(<param_value>) style call */
  7982             
  7323             if (IN_param_value == NULL)
  7983             /* Get the value from a foo(<param_value>) style call */
  7324               IN_param_value = function_call_param_iterator.next();
  7984             if (IN_param_value == NULL)
  7325             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7985               IN_param_value = function_call_param_iterator.next();
  7326             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  7986             if (IN_param_value != NULL) {
  7327             
  7987               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7328             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7988               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  7989             }
       
  7990             
       
  7991             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7329             {
  7992             {
  7330         
  7993         
  7331                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  7994                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  7332                 return return_type_symbol;
  7995                 return return_type_symbol;
  7333                 
  7996                 
  7349 
  8012 
  7350         {
  8013         {
  7351             identifier_c param_name("IN");
  8014             identifier_c param_name("IN");
  7352             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8015             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7353             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8016             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7354             
  8017             symbol_c *IN_type_symbol = NULL;
  7355             /* Get the value from a foo(<param_value>) style call */
  8018             
  7356             if (IN_param_value == NULL)
  8019             /* Get the value from a foo(<param_value>) style call */
  7357               IN_param_value = function_call_param_iterator.next();
  8020             if (IN_param_value == NULL)
  7358             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8021               IN_param_value = function_call_param_iterator.next();
  7359             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8022             if (IN_param_value != NULL) {
  7360             
  8023               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7361             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  8024               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8025             }
       
  8026             
       
  8027             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7362             {
  8028             {
  7363         
  8029         
  7364                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  8030                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  7365                 return return_type_symbol;
  8031                 return return_type_symbol;
  7366                 
  8032                 
  7382 
  8048 
  7383         {
  8049         {
  7384             identifier_c param_name("IN");
  8050             identifier_c param_name("IN");
  7385             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8051             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7386             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8052             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7387             
  8053             symbol_c *IN_type_symbol = NULL;
  7388             /* Get the value from a foo(<param_value>) style call */
  8054             
  7389             if (IN_param_value == NULL)
  8055             /* Get the value from a foo(<param_value>) style call */
  7390               IN_param_value = function_call_param_iterator.next();
  8056             if (IN_param_value == NULL)
  7391             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8057               IN_param_value = function_call_param_iterator.next();
  7392             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8058             if (IN_param_value != NULL) {
  7393             
  8059               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7394             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  8060               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8061             }
       
  8062             
       
  8063             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7395             {
  8064             {
  7396         
  8065         
  7397                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  8066                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  7398                 return return_type_symbol;
  8067                 return return_type_symbol;
  7399                 
  8068                 
  7415 
  8084 
  7416         {
  8085         {
  7417             identifier_c param_name("IN");
  8086             identifier_c param_name("IN");
  7418             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8087             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7419             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8088             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7420             
  8089             symbol_c *IN_type_symbol = NULL;
  7421             /* Get the value from a foo(<param_value>) style call */
  8090             
  7422             if (IN_param_value == NULL)
  8091             /* Get the value from a foo(<param_value>) style call */
  7423               IN_param_value = function_call_param_iterator.next();
  8092             if (IN_param_value == NULL)
  7424             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8093               IN_param_value = function_call_param_iterator.next();
  7425             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8094             if (IN_param_value != NULL) {
  7426             
  8095               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7427             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  8096               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8097             }
       
  8098             
       
  8099             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7428             {
  8100             {
  7429         
  8101         
  7430                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  8102                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  7431                 return return_type_symbol;
  8103                 return return_type_symbol;
  7432                 
  8104                 
  7448 
  8120 
  7449         {
  8121         {
  7450             identifier_c param_name("IN");
  8122             identifier_c param_name("IN");
  7451             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8123             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7452             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8124             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7453             
  8125             symbol_c *IN_type_symbol = NULL;
  7454             /* Get the value from a foo(<param_value>) style call */
  8126             
  7455             if (IN_param_value == NULL)
  8127             /* Get the value from a foo(<param_value>) style call */
  7456               IN_param_value = function_call_param_iterator.next();
  8128             if (IN_param_value == NULL)
  7457             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8129               IN_param_value = function_call_param_iterator.next();
  7458             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8130             if (IN_param_value != NULL) {
  7459             
  8131               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7460             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  8132               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8133             }
       
  8134             
       
  8135             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7461             {
  8136             {
  7462         
  8137         
  7463                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  8138                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  7464                 return return_type_symbol;
  8139                 return return_type_symbol;
  7465                 
  8140                 
  7481 
  8156 
  7482         {
  8157         {
  7483             identifier_c param_name("IN");
  8158             identifier_c param_name("IN");
  7484             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8159             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7485             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8160             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7486             
  8161             symbol_c *IN_type_symbol = NULL;
  7487             /* Get the value from a foo(<param_value>) style call */
  8162             
  7488             if (IN_param_value == NULL)
  8163             /* Get the value from a foo(<param_value>) style call */
  7489               IN_param_value = function_call_param_iterator.next();
  8164             if (IN_param_value == NULL)
  7490             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8165               IN_param_value = function_call_param_iterator.next();
  7491             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8166             if (IN_param_value != NULL) {
  7492             
  8167               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7493             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  8168               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8169             }
       
  8170             
       
  8171             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7494             {
  8172             {
  7495         
  8173         
  7496                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  8174                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  7497                 return return_type_symbol;
  8175                 return return_type_symbol;
  7498                 
  8176                 
  7514 
  8192 
  7515         {
  8193         {
  7516             identifier_c param_name("IN");
  8194             identifier_c param_name("IN");
  7517             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8195             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7518             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8196             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7519             
  8197             symbol_c *IN_type_symbol = NULL;
  7520             /* Get the value from a foo(<param_value>) style call */
  8198             
  7521             if (IN_param_value == NULL)
  8199             /* Get the value from a foo(<param_value>) style call */
  7522               IN_param_value = function_call_param_iterator.next();
  8200             if (IN_param_value == NULL)
  7523             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8201               IN_param_value = function_call_param_iterator.next();
  7524             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8202             if (IN_param_value != NULL) {
  7525             
  8203               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7526             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  8204               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8205             }
       
  8206             
       
  8207             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7527             {
  8208             {
  7528         
  8209         
  7529                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  8210                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  7530                 return return_type_symbol;
  8211                 return return_type_symbol;
  7531                 
  8212                 
  7547 
  8228 
  7548         {
  8229         {
  7549             identifier_c param_name("IN");
  8230             identifier_c param_name("IN");
  7550             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8231             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7551             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8232             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7552             
  8233             symbol_c *IN_type_symbol = NULL;
  7553             /* Get the value from a foo(<param_value>) style call */
  8234             
  7554             if (IN_param_value == NULL)
  8235             /* Get the value from a foo(<param_value>) style call */
  7555               IN_param_value = function_call_param_iterator.next();
  8236             if (IN_param_value == NULL)
  7556             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8237               IN_param_value = function_call_param_iterator.next();
  7557             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8238             if (IN_param_value != NULL) {
  7558             
  8239               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7559             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  8240               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8241             }
       
  8242             
       
  8243             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7560             {
  8244             {
  7561         
  8245         
  7562                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  8246                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  7563                 return return_type_symbol;
  8247                 return return_type_symbol;
  7564                 
  8248                 
  7580 
  8264 
  7581         {
  8265         {
  7582             identifier_c param_name("IN");
  8266             identifier_c param_name("IN");
  7583             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8267             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7584             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8268             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7585             
  8269             symbol_c *IN_type_symbol = NULL;
  7586             /* Get the value from a foo(<param_value>) style call */
  8270             
  7587             if (IN_param_value == NULL)
  8271             /* Get the value from a foo(<param_value>) style call */
  7588               IN_param_value = function_call_param_iterator.next();
  8272             if (IN_param_value == NULL)
  7589             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8273               IN_param_value = function_call_param_iterator.next();
  7590             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8274             if (IN_param_value != NULL) {
  7591             
  8275               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7592             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  8276               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8277             }
       
  8278             
       
  8279             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7593             {
  8280             {
  7594         
  8281         
  7595                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  8282                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  7596                 return return_type_symbol;
  8283                 return return_type_symbol;
  7597                 
  8284                 
  7613 
  8300 
  7614         {
  8301         {
  7615             identifier_c param_name("IN");
  8302             identifier_c param_name("IN");
  7616             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8303             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7617             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8304             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7618             
  8305             symbol_c *IN_type_symbol = NULL;
  7619             /* Get the value from a foo(<param_value>) style call */
  8306             
  7620             if (IN_param_value == NULL)
  8307             /* Get the value from a foo(<param_value>) style call */
  7621               IN_param_value = function_call_param_iterator.next();
  8308             if (IN_param_value == NULL)
  7622             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8309               IN_param_value = function_call_param_iterator.next();
  7623             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8310             if (IN_param_value != NULL) {
  7624             
  8311               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7625             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  8312               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8313             }
       
  8314             
       
  8315             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7626             {
  8316             {
  7627         
  8317         
  7628                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  8318                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  7629                 return return_type_symbol;
  8319                 return return_type_symbol;
  7630                 
  8320                 
  7646 
  8336 
  7647         {
  8337         {
  7648             identifier_c param_name("IN");
  8338             identifier_c param_name("IN");
  7649             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8339             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7650             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8340             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7651             
  8341             symbol_c *IN_type_symbol = NULL;
  7652             /* Get the value from a foo(<param_value>) style call */
  8342             
  7653             if (IN_param_value == NULL)
  8343             /* Get the value from a foo(<param_value>) style call */
  7654               IN_param_value = function_call_param_iterator.next();
  8344             if (IN_param_value == NULL)
  7655             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8345               IN_param_value = function_call_param_iterator.next();
  7656             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8346             if (IN_param_value != NULL) {
  7657             
  8347               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7658             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  8348               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8349             }
       
  8350             
       
  8351             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7659             {
  8352             {
  7660         
  8353         
  7661                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  8354                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  7662                 return return_type_symbol;
  8355                 return return_type_symbol;
  7663                 
  8356                 
  7679 
  8372 
  7680         {
  8373         {
  7681             identifier_c param_name("IN");
  8374             identifier_c param_name("IN");
  7682             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8375             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7683             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8376             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7684             
  8377             symbol_c *IN_type_symbol = NULL;
  7685             /* Get the value from a foo(<param_value>) style call */
  8378             
  7686             if (IN_param_value == NULL)
  8379             /* Get the value from a foo(<param_value>) style call */
  7687               IN_param_value = function_call_param_iterator.next();
  8380             if (IN_param_value == NULL)
  7688             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8381               IN_param_value = function_call_param_iterator.next();
  7689             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8382             if (IN_param_value != NULL) {
  7690             
  8383               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7691             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  8384               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8385             }
       
  8386             
       
  8387             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7692             {
  8388             {
  7693         
  8389         
  7694                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  8390                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  7695                 return return_type_symbol;
  8391                 return return_type_symbol;
  7696                 
  8392                 
  7712 
  8408 
  7713         {
  8409         {
  7714             identifier_c param_name("IN");
  8410             identifier_c param_name("IN");
  7715             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8411             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7716             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8412             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7717             
  8413             symbol_c *IN_type_symbol = NULL;
  7718             /* Get the value from a foo(<param_value>) style call */
  8414             
  7719             if (IN_param_value == NULL)
  8415             /* Get the value from a foo(<param_value>) style call */
  7720               IN_param_value = function_call_param_iterator.next();
  8416             if (IN_param_value == NULL)
  7721             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8417               IN_param_value = function_call_param_iterator.next();
  7722             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8418             if (IN_param_value != NULL) {
  7723             
  8419               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7724             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  8420               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8421             }
       
  8422             
       
  8423             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7725             {
  8424             {
  7726         
  8425         
  7727                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  8426                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  7728                 return return_type_symbol;
  8427                 return return_type_symbol;
  7729                 
  8428                 
  7745 
  8444 
  7746         {
  8445         {
  7747             identifier_c param_name("IN");
  8446             identifier_c param_name("IN");
  7748             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8447             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7749             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8448             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7750             
  8449             symbol_c *IN_type_symbol = NULL;
  7751             /* Get the value from a foo(<param_value>) style call */
  8450             
  7752             if (IN_param_value == NULL)
  8451             /* Get the value from a foo(<param_value>) style call */
  7753               IN_param_value = function_call_param_iterator.next();
  8452             if (IN_param_value == NULL)
  7754             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8453               IN_param_value = function_call_param_iterator.next();
  7755             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8454             if (IN_param_value != NULL) {
  7756             
  8455               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7757             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  8456               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8457             }
       
  8458             
       
  8459             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7758             {
  8460             {
  7759         
  8461         
  7760                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  8462                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  7761                 return return_type_symbol;
  8463                 return return_type_symbol;
  7762                 
  8464                 
  7778 
  8480 
  7779         {
  8481         {
  7780             identifier_c param_name("IN");
  8482             identifier_c param_name("IN");
  7781             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8483             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7782             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8484             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7783             
  8485             symbol_c *IN_type_symbol = NULL;
  7784             /* Get the value from a foo(<param_value>) style call */
  8486             
  7785             if (IN_param_value == NULL)
  8487             /* Get the value from a foo(<param_value>) style call */
  7786               IN_param_value = function_call_param_iterator.next();
  8488             if (IN_param_value == NULL)
  7787             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8489               IN_param_value = function_call_param_iterator.next();
  7788             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8490             if (IN_param_value != NULL) {
  7789             
  8491               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7790             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  8492               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8493             }
       
  8494             
       
  8495             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
  7791             {
  8496             {
  7792         
  8497         
  7793                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  8498                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  7794                 return return_type_symbol;
  8499                 return return_type_symbol;
  7795                 
  8500                 
  7811 
  8516 
  7812         {
  8517         {
  7813             identifier_c param_name("IN");
  8518             identifier_c param_name("IN");
  7814             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8519             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7815             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8520             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7816             
  8521             symbol_c *IN_type_symbol = NULL;
  7817             /* Get the value from a foo(<param_value>) style call */
  8522             
  7818             if (IN_param_value == NULL)
  8523             /* Get the value from a foo(<param_value>) style call */
  7819               IN_param_value = function_call_param_iterator.next();
  8524             if (IN_param_value == NULL)
  7820             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8525               IN_param_value = function_call_param_iterator.next();
  7821             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8526             if (IN_param_value != NULL) {
  7822             
  8527               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7823             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8528               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8529             }
       
  8530             
       
  8531             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  7824             {
  8532             {
  7825         
  8533         
  7826                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  8534                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  7827                 return return_type_symbol;
  8535                 return return_type_symbol;
  7828                 
  8536                 
  7844 
  8552 
  7845         {
  8553         {
  7846             identifier_c param_name("IN");
  8554             identifier_c param_name("IN");
  7847             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8555             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7848             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8556             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7849             
  8557             symbol_c *IN_type_symbol = NULL;
  7850             /* Get the value from a foo(<param_value>) style call */
  8558             
  7851             if (IN_param_value == NULL)
  8559             /* Get the value from a foo(<param_value>) style call */
  7852               IN_param_value = function_call_param_iterator.next();
  8560             if (IN_param_value == NULL)
  7853             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8561               IN_param_value = function_call_param_iterator.next();
  7854             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8562             if (IN_param_value != NULL) {
  7855             
  8563               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7856             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8564               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8565             }
       
  8566             
       
  8567             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  7857             {
  8568             {
  7858         
  8569         
  7859                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  8570                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  7860                 return return_type_symbol;
  8571                 return return_type_symbol;
  7861                 
  8572                 
  7877 
  8588 
  7878         {
  8589         {
  7879             identifier_c param_name("IN");
  8590             identifier_c param_name("IN");
  7880             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8591             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7881             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8592             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7882             
  8593             symbol_c *IN_type_symbol = NULL;
  7883             /* Get the value from a foo(<param_value>) style call */
  8594             
  7884             if (IN_param_value == NULL)
  8595             /* Get the value from a foo(<param_value>) style call */
  7885               IN_param_value = function_call_param_iterator.next();
  8596             if (IN_param_value == NULL)
  7886             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8597               IN_param_value = function_call_param_iterator.next();
  7887             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8598             if (IN_param_value != NULL) {
  7888             
  8599               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7889             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8600               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8601             }
       
  8602             
       
  8603             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  7890             {
  8604             {
  7891         
  8605         
  7892                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  8606                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  7893                 return return_type_symbol;
  8607                 return return_type_symbol;
  7894                 
  8608                 
  7910 
  8624 
  7911         {
  8625         {
  7912             identifier_c param_name("IN");
  8626             identifier_c param_name("IN");
  7913             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8627             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7914             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8628             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7915             
  8629             symbol_c *IN_type_symbol = NULL;
  7916             /* Get the value from a foo(<param_value>) style call */
  8630             
  7917             if (IN_param_value == NULL)
  8631             /* Get the value from a foo(<param_value>) style call */
  7918               IN_param_value = function_call_param_iterator.next();
  8632             if (IN_param_value == NULL)
  7919             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8633               IN_param_value = function_call_param_iterator.next();
  7920             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8634             if (IN_param_value != NULL) {
  7921             
  8635               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7922             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8636               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8637             }
       
  8638             
       
  8639             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  7923             {
  8640             {
  7924         
  8641         
  7925                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  8642                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  7926                 return return_type_symbol;
  8643                 return return_type_symbol;
  7927                 
  8644                 
  7943 
  8660 
  7944         {
  8661         {
  7945             identifier_c param_name("IN");
  8662             identifier_c param_name("IN");
  7946             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8663             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7947             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8664             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7948             
  8665             symbol_c *IN_type_symbol = NULL;
  7949             /* Get the value from a foo(<param_value>) style call */
  8666             
  7950             if (IN_param_value == NULL)
  8667             /* Get the value from a foo(<param_value>) style call */
  7951               IN_param_value = function_call_param_iterator.next();
  8668             if (IN_param_value == NULL)
  7952             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8669               IN_param_value = function_call_param_iterator.next();
  7953             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8670             if (IN_param_value != NULL) {
  7954             
  8671               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7955             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8672               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8673             }
       
  8674             
       
  8675             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  7956             {
  8676             {
  7957         
  8677         
  7958                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  8678                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  7959                 return return_type_symbol;
  8679                 return return_type_symbol;
  7960                 
  8680                 
  7976 
  8696 
  7977         {
  8697         {
  7978             identifier_c param_name("IN");
  8698             identifier_c param_name("IN");
  7979             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8699             /* Get the value from a foo(<param_name> = <param_value>) style call */
  7980             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8700             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  7981             
  8701             symbol_c *IN_type_symbol = NULL;
  7982             /* Get the value from a foo(<param_value>) style call */
  8702             
  7983             if (IN_param_value == NULL)
  8703             /* Get the value from a foo(<param_value>) style call */
  7984               IN_param_value = function_call_param_iterator.next();
  8704             if (IN_param_value == NULL)
  7985             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8705               IN_param_value = function_call_param_iterator.next();
  7986             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8706             if (IN_param_value != NULL) {
  7987             
  8707               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  7988             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8708               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8709             }
       
  8710             
       
  8711             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  7989             {
  8712             {
  7990         
  8713         
  7991                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  8714                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  7992                 return return_type_symbol;
  8715                 return return_type_symbol;
  7993                 
  8716                 
  8009 
  8732 
  8010         {
  8733         {
  8011             identifier_c param_name("IN");
  8734             identifier_c param_name("IN");
  8012             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8735             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8013             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8736             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8014             
  8737             symbol_c *IN_type_symbol = NULL;
  8015             /* Get the value from a foo(<param_value>) style call */
  8738             
  8016             if (IN_param_value == NULL)
  8739             /* Get the value from a foo(<param_value>) style call */
  8017               IN_param_value = function_call_param_iterator.next();
  8740             if (IN_param_value == NULL)
  8018             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8741               IN_param_value = function_call_param_iterator.next();
  8019             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8742             if (IN_param_value != NULL) {
  8020             
  8743               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8021             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8744               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8745             }
       
  8746             
       
  8747             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8022             {
  8748             {
  8023         
  8749         
  8024                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  8750                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  8025                 return return_type_symbol;
  8751                 return return_type_symbol;
  8026                 
  8752                 
  8042 
  8768 
  8043         {
  8769         {
  8044             identifier_c param_name("IN");
  8770             identifier_c param_name("IN");
  8045             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8771             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8046             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8772             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8047             
  8773             symbol_c *IN_type_symbol = NULL;
  8048             /* Get the value from a foo(<param_value>) style call */
  8774             
  8049             if (IN_param_value == NULL)
  8775             /* Get the value from a foo(<param_value>) style call */
  8050               IN_param_value = function_call_param_iterator.next();
  8776             if (IN_param_value == NULL)
  8051             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8777               IN_param_value = function_call_param_iterator.next();
  8052             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8778             if (IN_param_value != NULL) {
  8053             
  8779               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8054             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8780               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8781             }
       
  8782             
       
  8783             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8055             {
  8784             {
  8056         
  8785         
  8057                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  8786                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  8058                 return return_type_symbol;
  8787                 return return_type_symbol;
  8059                 
  8788                 
  8075 
  8804 
  8076         {
  8805         {
  8077             identifier_c param_name("IN");
  8806             identifier_c param_name("IN");
  8078             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8807             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8079             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8808             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8080             
  8809             symbol_c *IN_type_symbol = NULL;
  8081             /* Get the value from a foo(<param_value>) style call */
  8810             
  8082             if (IN_param_value == NULL)
  8811             /* Get the value from a foo(<param_value>) style call */
  8083               IN_param_value = function_call_param_iterator.next();
  8812             if (IN_param_value == NULL)
  8084             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8813               IN_param_value = function_call_param_iterator.next();
  8085             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8814             if (IN_param_value != NULL) {
  8086             
  8815               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8087             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8816               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8817             }
       
  8818             
       
  8819             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8088             {
  8820             {
  8089         
  8821         
  8090                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  8822                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  8091                 return return_type_symbol;
  8823                 return return_type_symbol;
  8092                 
  8824                 
  8108 
  8840 
  8109         {
  8841         {
  8110             identifier_c param_name("IN");
  8842             identifier_c param_name("IN");
  8111             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8843             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8112             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8844             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8113             
  8845             symbol_c *IN_type_symbol = NULL;
  8114             /* Get the value from a foo(<param_value>) style call */
  8846             
  8115             if (IN_param_value == NULL)
  8847             /* Get the value from a foo(<param_value>) style call */
  8116               IN_param_value = function_call_param_iterator.next();
  8848             if (IN_param_value == NULL)
  8117             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8849               IN_param_value = function_call_param_iterator.next();
  8118             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8850             if (IN_param_value != NULL) {
  8119             
  8851               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8120             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8852               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8853             }
       
  8854             
       
  8855             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8121             {
  8856             {
  8122         
  8857         
  8123                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  8858                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  8124                 return return_type_symbol;
  8859                 return return_type_symbol;
  8125                 
  8860                 
  8141 
  8876 
  8142         {
  8877         {
  8143             identifier_c param_name("IN");
  8878             identifier_c param_name("IN");
  8144             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8879             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8145             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8880             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8146             
  8881             symbol_c *IN_type_symbol = NULL;
  8147             /* Get the value from a foo(<param_value>) style call */
  8882             
  8148             if (IN_param_value == NULL)
  8883             /* Get the value from a foo(<param_value>) style call */
  8149               IN_param_value = function_call_param_iterator.next();
  8884             if (IN_param_value == NULL)
  8150             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8885               IN_param_value = function_call_param_iterator.next();
  8151             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8886             if (IN_param_value != NULL) {
  8152             
  8887               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8153             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8888               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8889             }
       
  8890             
       
  8891             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8154             {
  8892             {
  8155         
  8893         
  8156                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  8894                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  8157                 return return_type_symbol;
  8895                 return return_type_symbol;
  8158                 
  8896                 
  8174 
  8912 
  8175         {
  8913         {
  8176             identifier_c param_name("IN");
  8914             identifier_c param_name("IN");
  8177             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8915             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8178             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8916             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8179             
  8917             symbol_c *IN_type_symbol = NULL;
  8180             /* Get the value from a foo(<param_value>) style call */
  8918             
  8181             if (IN_param_value == NULL)
  8919             /* Get the value from a foo(<param_value>) style call */
  8182               IN_param_value = function_call_param_iterator.next();
  8920             if (IN_param_value == NULL)
  8183             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8921               IN_param_value = function_call_param_iterator.next();
  8184             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8922             if (IN_param_value != NULL) {
  8185             
  8923               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8186             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8924               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8925             }
       
  8926             
       
  8927             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8187             {
  8928             {
  8188         
  8929         
  8189                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  8930                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  8190                 return return_type_symbol;
  8931                 return return_type_symbol;
  8191                 
  8932                 
  8207 
  8948 
  8208         {
  8949         {
  8209             identifier_c param_name("IN");
  8950             identifier_c param_name("IN");
  8210             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8951             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8211             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8952             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8212             
  8953             symbol_c *IN_type_symbol = NULL;
  8213             /* Get the value from a foo(<param_value>) style call */
  8954             
  8214             if (IN_param_value == NULL)
  8955             /* Get the value from a foo(<param_value>) style call */
  8215               IN_param_value = function_call_param_iterator.next();
  8956             if (IN_param_value == NULL)
  8216             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8957               IN_param_value = function_call_param_iterator.next();
  8217             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8958             if (IN_param_value != NULL) {
  8218             
  8959               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8219             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8960               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8961             }
       
  8962             
       
  8963             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8220             {
  8964             {
  8221         
  8965         
  8222                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  8966                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  8223                 return return_type_symbol;
  8967                 return return_type_symbol;
  8224                 
  8968                 
  8240 
  8984 
  8241         {
  8985         {
  8242             identifier_c param_name("IN");
  8986             identifier_c param_name("IN");
  8243             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8987             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8244             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8988             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8245             
  8989             symbol_c *IN_type_symbol = NULL;
  8246             /* Get the value from a foo(<param_value>) style call */
  8990             
  8247             if (IN_param_value == NULL)
  8991             /* Get the value from a foo(<param_value>) style call */
  8248               IN_param_value = function_call_param_iterator.next();
  8992             if (IN_param_value == NULL)
  8249             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8993               IN_param_value = function_call_param_iterator.next();
  8250             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  8994             if (IN_param_value != NULL) {
  8251             
  8995               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8252             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8996               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  8997             }
       
  8998             
       
  8999             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8253             {
  9000             {
  8254         
  9001         
  8255                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  9002                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  8256                 return return_type_symbol;
  9003                 return return_type_symbol;
  8257                 
  9004                 
  8273 
  9020 
  8274         {
  9021         {
  8275             identifier_c param_name("IN");
  9022             identifier_c param_name("IN");
  8276             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9023             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8277             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9024             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8278             
  9025             symbol_c *IN_type_symbol = NULL;
  8279             /* Get the value from a foo(<param_value>) style call */
  9026             
  8280             if (IN_param_value == NULL)
  9027             /* Get the value from a foo(<param_value>) style call */
  8281               IN_param_value = function_call_param_iterator.next();
  9028             if (IN_param_value == NULL)
  8282             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9029               IN_param_value = function_call_param_iterator.next();
  8283             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9030             if (IN_param_value != NULL) {
  8284             
  9031               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8285             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  9032               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9033             }
       
  9034             
       
  9035             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8286             {
  9036             {
  8287         
  9037         
  8288                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  9038                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  8289                 return return_type_symbol;
  9039                 return return_type_symbol;
  8290                 
  9040                 
  8306 
  9056 
  8307         {
  9057         {
  8308             identifier_c param_name("IN");
  9058             identifier_c param_name("IN");
  8309             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9059             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8310             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9060             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8311             
  9061             symbol_c *IN_type_symbol = NULL;
  8312             /* Get the value from a foo(<param_value>) style call */
  9062             
  8313             if (IN_param_value == NULL)
  9063             /* Get the value from a foo(<param_value>) style call */
  8314               IN_param_value = function_call_param_iterator.next();
  9064             if (IN_param_value == NULL)
  8315             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9065               IN_param_value = function_call_param_iterator.next();
  8316             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9066             if (IN_param_value != NULL) {
  8317             
  9067               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8318             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  9068               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9069             }
       
  9070             
       
  9071             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8319             {
  9072             {
  8320         
  9073         
  8321                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  9074                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  8322                 return return_type_symbol;
  9075                 return return_type_symbol;
  8323                 
  9076                 
  8339 
  9092 
  8340         {
  9093         {
  8341             identifier_c param_name("IN");
  9094             identifier_c param_name("IN");
  8342             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9095             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8343             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9096             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8344             
  9097             symbol_c *IN_type_symbol = NULL;
  8345             /* Get the value from a foo(<param_value>) style call */
  9098             
  8346             if (IN_param_value == NULL)
  9099             /* Get the value from a foo(<param_value>) style call */
  8347               IN_param_value = function_call_param_iterator.next();
  9100             if (IN_param_value == NULL)
  8348             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9101               IN_param_value = function_call_param_iterator.next();
  8349             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9102             if (IN_param_value != NULL) {
  8350             
  9103               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8351             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  9104               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9105             }
       
  9106             
       
  9107             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8352             {
  9108             {
  8353         
  9109         
  8354                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  9110                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  8355                 return return_type_symbol;
  9111                 return return_type_symbol;
  8356                 
  9112                 
  8372 
  9128 
  8373         {
  9129         {
  8374             identifier_c param_name("IN");
  9130             identifier_c param_name("IN");
  8375             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9131             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8376             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9132             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8377             
  9133             symbol_c *IN_type_symbol = NULL;
  8378             /* Get the value from a foo(<param_value>) style call */
  9134             
  8379             if (IN_param_value == NULL)
  9135             /* Get the value from a foo(<param_value>) style call */
  8380               IN_param_value = function_call_param_iterator.next();
  9136             if (IN_param_value == NULL)
  8381             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9137               IN_param_value = function_call_param_iterator.next();
  8382             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9138             if (IN_param_value != NULL) {
  8383             
  9139               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8384             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  9140               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9141             }
       
  9142             
       
  9143             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8385             {
  9144             {
  8386         
  9145         
  8387                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  9146                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  8388                 return return_type_symbol;
  9147                 return return_type_symbol;
  8389                 
  9148                 
  8405 
  9164 
  8406         {
  9165         {
  8407             identifier_c param_name("IN");
  9166             identifier_c param_name("IN");
  8408             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9167             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8409             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9168             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8410             
  9169             symbol_c *IN_type_symbol = NULL;
  8411             /* Get the value from a foo(<param_value>) style call */
  9170             
  8412             if (IN_param_value == NULL)
  9171             /* Get the value from a foo(<param_value>) style call */
  8413               IN_param_value = function_call_param_iterator.next();
  9172             if (IN_param_value == NULL)
  8414             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9173               IN_param_value = function_call_param_iterator.next();
  8415             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9174             if (IN_param_value != NULL) {
  8416             
  9175               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8417             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  9176               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9177             }
       
  9178             
       
  9179             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
  8418             {
  9180             {
  8419         
  9181         
  8420                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  9182                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  8421                 return return_type_symbol;
  9183                 return return_type_symbol;
  8422                 
  9184                 
  8438 
  9200 
  8439         {
  9201         {
  8440             identifier_c param_name("IN");
  9202             identifier_c param_name("IN");
  8441             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9203             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8442             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9204             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8443             
  9205             symbol_c *IN_type_symbol = NULL;
  8444             /* Get the value from a foo(<param_value>) style call */
  9206             
  8445             if (IN_param_value == NULL)
  9207             /* Get the value from a foo(<param_value>) style call */
  8446               IN_param_value = function_call_param_iterator.next();
  9208             if (IN_param_value == NULL)
  8447             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9209               IN_param_value = function_call_param_iterator.next();
  8448             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9210             if (IN_param_value != NULL) {
  8449             
  9211               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8450             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9212               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9213             }
       
  9214             
       
  9215             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8451             {
  9216             {
  8452         
  9217         
  8453                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  9218                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  8454                 return return_type_symbol;
  9219                 return return_type_symbol;
  8455                 
  9220                 
  8471 
  9236 
  8472         {
  9237         {
  8473             identifier_c param_name("IN");
  9238             identifier_c param_name("IN");
  8474             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9239             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8475             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9240             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8476             
  9241             symbol_c *IN_type_symbol = NULL;
  8477             /* Get the value from a foo(<param_value>) style call */
  9242             
  8478             if (IN_param_value == NULL)
  9243             /* Get the value from a foo(<param_value>) style call */
  8479               IN_param_value = function_call_param_iterator.next();
  9244             if (IN_param_value == NULL)
  8480             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9245               IN_param_value = function_call_param_iterator.next();
  8481             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9246             if (IN_param_value != NULL) {
  8482             
  9247               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8483             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9248               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9249             }
       
  9250             
       
  9251             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8484             {
  9252             {
  8485         
  9253         
  8486                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  9254                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  8487                 return return_type_symbol;
  9255                 return return_type_symbol;
  8488                 
  9256                 
  8504 
  9272 
  8505         {
  9273         {
  8506             identifier_c param_name("IN");
  9274             identifier_c param_name("IN");
  8507             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9275             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8508             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9276             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8509             
  9277             symbol_c *IN_type_symbol = NULL;
  8510             /* Get the value from a foo(<param_value>) style call */
  9278             
  8511             if (IN_param_value == NULL)
  9279             /* Get the value from a foo(<param_value>) style call */
  8512               IN_param_value = function_call_param_iterator.next();
  9280             if (IN_param_value == NULL)
  8513             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9281               IN_param_value = function_call_param_iterator.next();
  8514             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9282             if (IN_param_value != NULL) {
  8515             
  9283               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8516             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9284               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9285             }
       
  9286             
       
  9287             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8517             {
  9288             {
  8518         
  9289         
  8519                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  9290                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  8520                 return return_type_symbol;
  9291                 return return_type_symbol;
  8521                 
  9292                 
  8537 
  9308 
  8538         {
  9309         {
  8539             identifier_c param_name("IN");
  9310             identifier_c param_name("IN");
  8540             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9311             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8541             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9312             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8542             
  9313             symbol_c *IN_type_symbol = NULL;
  8543             /* Get the value from a foo(<param_value>) style call */
  9314             
  8544             if (IN_param_value == NULL)
  9315             /* Get the value from a foo(<param_value>) style call */
  8545               IN_param_value = function_call_param_iterator.next();
  9316             if (IN_param_value == NULL)
  8546             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9317               IN_param_value = function_call_param_iterator.next();
  8547             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9318             if (IN_param_value != NULL) {
  8548             
  9319               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8549             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9320               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9321             }
       
  9322             
       
  9323             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8550             {
  9324             {
  8551         
  9325         
  8552                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  9326                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  8553                 return return_type_symbol;
  9327                 return return_type_symbol;
  8554                 
  9328                 
  8570 
  9344 
  8571         {
  9345         {
  8572             identifier_c param_name("IN");
  9346             identifier_c param_name("IN");
  8573             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9347             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8574             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9348             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8575             
  9349             symbol_c *IN_type_symbol = NULL;
  8576             /* Get the value from a foo(<param_value>) style call */
  9350             
  8577             if (IN_param_value == NULL)
  9351             /* Get the value from a foo(<param_value>) style call */
  8578               IN_param_value = function_call_param_iterator.next();
  9352             if (IN_param_value == NULL)
  8579             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9353               IN_param_value = function_call_param_iterator.next();
  8580             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9354             if (IN_param_value != NULL) {
  8581             
  9355               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8582             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9356               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9357             }
       
  9358             
       
  9359             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8583             {
  9360             {
  8584         
  9361         
  8585                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  9362                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  8586                 return return_type_symbol;
  9363                 return return_type_symbol;
  8587                 
  9364                 
  8603 
  9380 
  8604         {
  9381         {
  8605             identifier_c param_name("IN");
  9382             identifier_c param_name("IN");
  8606             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9383             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8607             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9384             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8608             
  9385             symbol_c *IN_type_symbol = NULL;
  8609             /* Get the value from a foo(<param_value>) style call */
  9386             
  8610             if (IN_param_value == NULL)
  9387             /* Get the value from a foo(<param_value>) style call */
  8611               IN_param_value = function_call_param_iterator.next();
  9388             if (IN_param_value == NULL)
  8612             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9389               IN_param_value = function_call_param_iterator.next();
  8613             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9390             if (IN_param_value != NULL) {
  8614             
  9391               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8615             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9392               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9393             }
       
  9394             
       
  9395             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8616             {
  9396             {
  8617         
  9397         
  8618                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  9398                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  8619                 return return_type_symbol;
  9399                 return return_type_symbol;
  8620                 
  9400                 
  8636 
  9416 
  8637         {
  9417         {
  8638             identifier_c param_name("IN");
  9418             identifier_c param_name("IN");
  8639             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9419             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8640             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9420             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8641             
  9421             symbol_c *IN_type_symbol = NULL;
  8642             /* Get the value from a foo(<param_value>) style call */
  9422             
  8643             if (IN_param_value == NULL)
  9423             /* Get the value from a foo(<param_value>) style call */
  8644               IN_param_value = function_call_param_iterator.next();
  9424             if (IN_param_value == NULL)
  8645             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9425               IN_param_value = function_call_param_iterator.next();
  8646             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9426             if (IN_param_value != NULL) {
  8647             
  9427               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8648             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9428               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9429             }
       
  9430             
       
  9431             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8649             {
  9432             {
  8650         
  9433         
  8651                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  9434                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  8652                 return return_type_symbol;
  9435                 return return_type_symbol;
  8653                 
  9436                 
  8669 
  9452 
  8670         {
  9453         {
  8671             identifier_c param_name("IN");
  9454             identifier_c param_name("IN");
  8672             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9455             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8673             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9456             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8674             
  9457             symbol_c *IN_type_symbol = NULL;
  8675             /* Get the value from a foo(<param_value>) style call */
  9458             
  8676             if (IN_param_value == NULL)
  9459             /* Get the value from a foo(<param_value>) style call */
  8677               IN_param_value = function_call_param_iterator.next();
  9460             if (IN_param_value == NULL)
  8678             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9461               IN_param_value = function_call_param_iterator.next();
  8679             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9462             if (IN_param_value != NULL) {
  8680             
  9463               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8681             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9464               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9465             }
       
  9466             
       
  9467             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8682             {
  9468             {
  8683         
  9469         
  8684                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  9470                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  8685                 return return_type_symbol;
  9471                 return return_type_symbol;
  8686                 
  9472                 
  8702 
  9488 
  8703         {
  9489         {
  8704             identifier_c param_name("IN");
  9490             identifier_c param_name("IN");
  8705             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9491             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8706             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9492             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8707             
  9493             symbol_c *IN_type_symbol = NULL;
  8708             /* Get the value from a foo(<param_value>) style call */
  9494             
  8709             if (IN_param_value == NULL)
  9495             /* Get the value from a foo(<param_value>) style call */
  8710               IN_param_value = function_call_param_iterator.next();
  9496             if (IN_param_value == NULL)
  8711             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9497               IN_param_value = function_call_param_iterator.next();
  8712             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9498             if (IN_param_value != NULL) {
  8713             
  9499               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8714             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9500               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9501             }
       
  9502             
       
  9503             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8715             {
  9504             {
  8716         
  9505         
  8717                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  9506                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  8718                 return return_type_symbol;
  9507                 return return_type_symbol;
  8719                 
  9508                 
  8735 
  9524 
  8736         {
  9525         {
  8737             identifier_c param_name("IN");
  9526             identifier_c param_name("IN");
  8738             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9527             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8739             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9528             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8740             
  9529             symbol_c *IN_type_symbol = NULL;
  8741             /* Get the value from a foo(<param_value>) style call */
  9530             
  8742             if (IN_param_value == NULL)
  9531             /* Get the value from a foo(<param_value>) style call */
  8743               IN_param_value = function_call_param_iterator.next();
  9532             if (IN_param_value == NULL)
  8744             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9533               IN_param_value = function_call_param_iterator.next();
  8745             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9534             if (IN_param_value != NULL) {
  8746             
  9535               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8747             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9536               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9537             }
       
  9538             
       
  9539             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8748             {
  9540             {
  8749         
  9541         
  8750                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  9542                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  8751                 return return_type_symbol;
  9543                 return return_type_symbol;
  8752                 
  9544                 
  8768 
  9560 
  8769         {
  9561         {
  8770             identifier_c param_name("IN");
  9562             identifier_c param_name("IN");
  8771             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9563             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8772             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9564             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8773             
  9565             symbol_c *IN_type_symbol = NULL;
  8774             /* Get the value from a foo(<param_value>) style call */
  9566             
  8775             if (IN_param_value == NULL)
  9567             /* Get the value from a foo(<param_value>) style call */
  8776               IN_param_value = function_call_param_iterator.next();
  9568             if (IN_param_value == NULL)
  8777             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9569               IN_param_value = function_call_param_iterator.next();
  8778             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9570             if (IN_param_value != NULL) {
  8779             
  9571               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8780             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9572               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9573             }
       
  9574             
       
  9575             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8781             {
  9576             {
  8782         
  9577         
  8783                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  9578                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  8784                 return return_type_symbol;
  9579                 return return_type_symbol;
  8785                 
  9580                 
  8801 
  9596 
  8802         {
  9597         {
  8803             identifier_c param_name("IN");
  9598             identifier_c param_name("IN");
  8804             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9599             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8805             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9600             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8806             
  9601             symbol_c *IN_type_symbol = NULL;
  8807             /* Get the value from a foo(<param_value>) style call */
  9602             
  8808             if (IN_param_value == NULL)
  9603             /* Get the value from a foo(<param_value>) style call */
  8809               IN_param_value = function_call_param_iterator.next();
  9604             if (IN_param_value == NULL)
  8810             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9605               IN_param_value = function_call_param_iterator.next();
  8811             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9606             if (IN_param_value != NULL) {
  8812             
  9607               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8813             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9608               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9609             }
       
  9610             
       
  9611             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8814             {
  9612             {
  8815         
  9613         
  8816                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  9614                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  8817                 return return_type_symbol;
  9615                 return return_type_symbol;
  8818                 
  9616                 
  8834 
  9632 
  8835         {
  9633         {
  8836             identifier_c param_name("IN");
  9634             identifier_c param_name("IN");
  8837             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9635             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8838             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9636             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8839             
  9637             symbol_c *IN_type_symbol = NULL;
  8840             /* Get the value from a foo(<param_value>) style call */
  9638             
  8841             if (IN_param_value == NULL)
  9639             /* Get the value from a foo(<param_value>) style call */
  8842               IN_param_value = function_call_param_iterator.next();
  9640             if (IN_param_value == NULL)
  8843             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9641               IN_param_value = function_call_param_iterator.next();
  8844             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9642             if (IN_param_value != NULL) {
  8845             
  9643               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8846             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9644               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9645             }
       
  9646             
       
  9647             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8847             {
  9648             {
  8848         
  9649         
  8849                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  9650                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  8850                 return return_type_symbol;
  9651                 return return_type_symbol;
  8851                 
  9652                 
  8867 
  9668 
  8868         {
  9669         {
  8869             identifier_c param_name("IN");
  9670             identifier_c param_name("IN");
  8870             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9671             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8871             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9672             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8872             
  9673             symbol_c *IN_type_symbol = NULL;
  8873             /* Get the value from a foo(<param_value>) style call */
  9674             
  8874             if (IN_param_value == NULL)
  9675             /* Get the value from a foo(<param_value>) style call */
  8875               IN_param_value = function_call_param_iterator.next();
  9676             if (IN_param_value == NULL)
  8876             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9677               IN_param_value = function_call_param_iterator.next();
  8877             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9678             if (IN_param_value != NULL) {
  8878             
  9679               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8879             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9680               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9681             }
       
  9682             
       
  9683             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8880             {
  9684             {
  8881         
  9685         
  8882                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  9686                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  8883                 return return_type_symbol;
  9687                 return return_type_symbol;
  8884                 
  9688                 
  8900 
  9704 
  8901         {
  9705         {
  8902             identifier_c param_name("IN");
  9706             identifier_c param_name("IN");
  8903             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9707             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8904             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9708             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8905             
  9709             symbol_c *IN_type_symbol = NULL;
  8906             /* Get the value from a foo(<param_value>) style call */
  9710             
  8907             if (IN_param_value == NULL)
  9711             /* Get the value from a foo(<param_value>) style call */
  8908               IN_param_value = function_call_param_iterator.next();
  9712             if (IN_param_value == NULL)
  8909             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9713               IN_param_value = function_call_param_iterator.next();
  8910             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9714             if (IN_param_value != NULL) {
  8911             
  9715               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8912             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9716               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9717             }
       
  9718             
       
  9719             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8913             {
  9720             {
  8914         
  9721         
  8915                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  9722                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
  8916                 return return_type_symbol;
  9723                 return return_type_symbol;
  8917                 
  9724                 
  8933 
  9740 
  8934         {
  9741         {
  8935             identifier_c param_name("IN");
  9742             identifier_c param_name("IN");
  8936             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9743             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8937             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9744             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8938             
  9745             symbol_c *IN_type_symbol = NULL;
  8939             /* Get the value from a foo(<param_value>) style call */
  9746             
  8940             if (IN_param_value == NULL)
  9747             /* Get the value from a foo(<param_value>) style call */
  8941               IN_param_value = function_call_param_iterator.next();
  9748             if (IN_param_value == NULL)
  8942             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9749               IN_param_value = function_call_param_iterator.next();
  8943             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9750             if (IN_param_value != NULL) {
  8944             
  9751               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8945             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9752               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9753             }
       
  9754             
       
  9755             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8946             {
  9756             {
  8947         
  9757         
  8948                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  9758                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  8949                 return return_type_symbol;
  9759                 return return_type_symbol;
  8950                 
  9760                 
  8966 
  9776 
  8967         {
  9777         {
  8968             identifier_c param_name("IN");
  9778             identifier_c param_name("IN");
  8969             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9779             /* Get the value from a foo(<param_name> = <param_value>) style call */
  8970             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9780             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  8971             
  9781             symbol_c *IN_type_symbol = NULL;
  8972             /* Get the value from a foo(<param_value>) style call */
  9782             
  8973             if (IN_param_value == NULL)
  9783             /* Get the value from a foo(<param_value>) style call */
  8974               IN_param_value = function_call_param_iterator.next();
  9784             if (IN_param_value == NULL)
  8975             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9785               IN_param_value = function_call_param_iterator.next();
  8976             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9786             if (IN_param_value != NULL) {
  8977             
  9787               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  8978             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9788               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9789             }
       
  9790             
       
  9791             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  8979             {
  9792             {
  8980         
  9793         
  8981                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  9794                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  8982                 return return_type_symbol;
  9795                 return return_type_symbol;
  8983                 
  9796                 
  8999 
  9812 
  9000         {
  9813         {
  9001             identifier_c param_name("IN");
  9814             identifier_c param_name("IN");
  9002             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9815             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9003             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9816             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9004             
  9817             symbol_c *IN_type_symbol = NULL;
  9005             /* Get the value from a foo(<param_value>) style call */
  9818             
  9006             if (IN_param_value == NULL)
  9819             /* Get the value from a foo(<param_value>) style call */
  9007               IN_param_value = function_call_param_iterator.next();
  9820             if (IN_param_value == NULL)
  9008             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9821               IN_param_value = function_call_param_iterator.next();
  9009             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9822             if (IN_param_value != NULL) {
  9010             
  9823               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9011             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9824               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9825             }
       
  9826             
       
  9827             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9012             {
  9828             {
  9013         
  9829         
  9014                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  9830                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  9015                 return return_type_symbol;
  9831                 return return_type_symbol;
  9016                 
  9832                 
  9032 
  9848 
  9033         {
  9849         {
  9034             identifier_c param_name("IN");
  9850             identifier_c param_name("IN");
  9035             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9851             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9036             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9852             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9037             
  9853             symbol_c *IN_type_symbol = NULL;
  9038             /* Get the value from a foo(<param_value>) style call */
  9854             
  9039             if (IN_param_value == NULL)
  9855             /* Get the value from a foo(<param_value>) style call */
  9040               IN_param_value = function_call_param_iterator.next();
  9856             if (IN_param_value == NULL)
  9041             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9857               IN_param_value = function_call_param_iterator.next();
  9042             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9858             if (IN_param_value != NULL) {
  9043             
  9859               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9044             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9860               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9861             }
       
  9862             
       
  9863             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
  9045             {
  9864             {
  9046         
  9865         
  9047                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  9866                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  9048                 return return_type_symbol;
  9867                 return return_type_symbol;
  9049                 
  9868                 
  9065 
  9884 
  9066         {
  9885         {
  9067             identifier_c param_name("IN");
  9886             identifier_c param_name("IN");
  9068             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9887             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9069             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9888             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9070             
  9889             symbol_c *IN_type_symbol = NULL;
  9071             /* Get the value from a foo(<param_value>) style call */
  9890             
  9072             if (IN_param_value == NULL)
  9891             /* Get the value from a foo(<param_value>) style call */
  9073               IN_param_value = function_call_param_iterator.next();
  9892             if (IN_param_value == NULL)
  9074             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9893               IN_param_value = function_call_param_iterator.next();
  9075             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9894             if (IN_param_value != NULL) {
  9076             
  9895               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9077             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9896               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9897             }
       
  9898             
       
  9899             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9078             {
  9900             {
  9079         
  9901         
  9080                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  9902                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  9081                 return return_type_symbol;
  9903                 return return_type_symbol;
  9082                 
  9904                 
  9098 
  9920 
  9099         {
  9921         {
  9100             identifier_c param_name("IN");
  9922             identifier_c param_name("IN");
  9101             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9923             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9102             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9924             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9103             
  9925             symbol_c *IN_type_symbol = NULL;
  9104             /* Get the value from a foo(<param_value>) style call */
  9926             
  9105             if (IN_param_value == NULL)
  9927             /* Get the value from a foo(<param_value>) style call */
  9106               IN_param_value = function_call_param_iterator.next();
  9928             if (IN_param_value == NULL)
  9107             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9929               IN_param_value = function_call_param_iterator.next();
  9108             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9930             if (IN_param_value != NULL) {
  9109             
  9931               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9110             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9932               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9933             }
       
  9934             
       
  9935             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9111             {
  9936             {
  9112         
  9937         
  9113                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  9938                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  9114                 return return_type_symbol;
  9939                 return return_type_symbol;
  9115                 
  9940                 
  9131 
  9956 
  9132         {
  9957         {
  9133             identifier_c param_name("IN");
  9958             identifier_c param_name("IN");
  9134             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9959             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9135             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9960             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9136             
  9961             symbol_c *IN_type_symbol = NULL;
  9137             /* Get the value from a foo(<param_value>) style call */
  9962             
  9138             if (IN_param_value == NULL)
  9963             /* Get the value from a foo(<param_value>) style call */
  9139               IN_param_value = function_call_param_iterator.next();
  9964             if (IN_param_value == NULL)
  9140             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9965               IN_param_value = function_call_param_iterator.next();
  9141             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
  9966             if (IN_param_value != NULL) {
  9142             
  9967               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9143             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9968               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
  9969             }
       
  9970             
       
  9971             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9144             {
  9972             {
  9145         
  9973         
  9146                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  9974                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  9147                 return return_type_symbol;
  9975                 return return_type_symbol;
  9148                 
  9976                 
  9164 
  9992 
  9165         {
  9993         {
  9166             identifier_c param_name("IN");
  9994             identifier_c param_name("IN");
  9167             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9995             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9168             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9996             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9169             
  9997             symbol_c *IN_type_symbol = NULL;
  9170             /* Get the value from a foo(<param_value>) style call */
  9998             
  9171             if (IN_param_value == NULL)
  9999             /* Get the value from a foo(<param_value>) style call */
  9172               IN_param_value = function_call_param_iterator.next();
 10000             if (IN_param_value == NULL)
  9173             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10001               IN_param_value = function_call_param_iterator.next();
  9174             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10002             if (IN_param_value != NULL) {
  9175             
 10003               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9176             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10004               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10005             }
       
 10006             
       
 10007             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9177             {
 10008             {
  9178         
 10009         
  9179                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 10010                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  9180                 return return_type_symbol;
 10011                 return return_type_symbol;
  9181                 
 10012                 
  9197 
 10028 
  9198         {
 10029         {
  9199             identifier_c param_name("IN");
 10030             identifier_c param_name("IN");
  9200             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10031             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9201             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10032             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9202             
 10033             symbol_c *IN_type_symbol = NULL;
  9203             /* Get the value from a foo(<param_value>) style call */
 10034             
  9204             if (IN_param_value == NULL)
 10035             /* Get the value from a foo(<param_value>) style call */
  9205               IN_param_value = function_call_param_iterator.next();
 10036             if (IN_param_value == NULL)
  9206             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10037               IN_param_value = function_call_param_iterator.next();
  9207             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10038             if (IN_param_value != NULL) {
  9208             
 10039               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9209             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10040               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10041             }
       
 10042             
       
 10043             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9210             {
 10044             {
  9211         
 10045         
  9212                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 10046                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  9213                 return return_type_symbol;
 10047                 return return_type_symbol;
  9214                 
 10048                 
  9230 
 10064 
  9231         {
 10065         {
  9232             identifier_c param_name("IN");
 10066             identifier_c param_name("IN");
  9233             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10067             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9234             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10068             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9235             
 10069             symbol_c *IN_type_symbol = NULL;
  9236             /* Get the value from a foo(<param_value>) style call */
 10070             
  9237             if (IN_param_value == NULL)
 10071             /* Get the value from a foo(<param_value>) style call */
  9238               IN_param_value = function_call_param_iterator.next();
 10072             if (IN_param_value == NULL)
  9239             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10073               IN_param_value = function_call_param_iterator.next();
  9240             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10074             if (IN_param_value != NULL) {
  9241             
 10075               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9242             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10076               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10077             }
       
 10078             
       
 10079             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9243             {
 10080             {
  9244         
 10081         
  9245                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 10082                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  9246                 return return_type_symbol;
 10083                 return return_type_symbol;
  9247                 
 10084                 
  9263 
 10100 
  9264         {
 10101         {
  9265             identifier_c param_name("IN");
 10102             identifier_c param_name("IN");
  9266             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10103             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9267             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10104             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9268             
 10105             symbol_c *IN_type_symbol = NULL;
  9269             /* Get the value from a foo(<param_value>) style call */
 10106             
  9270             if (IN_param_value == NULL)
 10107             /* Get the value from a foo(<param_value>) style call */
  9271               IN_param_value = function_call_param_iterator.next();
 10108             if (IN_param_value == NULL)
  9272             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10109               IN_param_value = function_call_param_iterator.next();
  9273             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10110             if (IN_param_value != NULL) {
  9274             
 10111               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9275             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10112               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10113             }
       
 10114             
       
 10115             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9276             {
 10116             {
  9277         
 10117         
  9278                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 10118                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  9279                 return return_type_symbol;
 10119                 return return_type_symbol;
  9280                 
 10120                 
  9296 
 10136 
  9297         {
 10137         {
  9298             identifier_c param_name("IN");
 10138             identifier_c param_name("IN");
  9299             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10139             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9300             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10140             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9301             
 10141             symbol_c *IN_type_symbol = NULL;
  9302             /* Get the value from a foo(<param_value>) style call */
 10142             
  9303             if (IN_param_value == NULL)
 10143             /* Get the value from a foo(<param_value>) style call */
  9304               IN_param_value = function_call_param_iterator.next();
 10144             if (IN_param_value == NULL)
  9305             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10145               IN_param_value = function_call_param_iterator.next();
  9306             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10146             if (IN_param_value != NULL) {
  9307             
 10147               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9308             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10148               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10149             }
       
 10150             
       
 10151             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9309             {
 10152             {
  9310         
 10153         
  9311                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 10154                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  9312                 return return_type_symbol;
 10155                 return return_type_symbol;
  9313                 
 10156                 
  9329 
 10172 
  9330         {
 10173         {
  9331             identifier_c param_name("IN");
 10174             identifier_c param_name("IN");
  9332             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10175             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9333             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10176             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9334             
 10177             symbol_c *IN_type_symbol = NULL;
  9335             /* Get the value from a foo(<param_value>) style call */
 10178             
  9336             if (IN_param_value == NULL)
 10179             /* Get the value from a foo(<param_value>) style call */
  9337               IN_param_value = function_call_param_iterator.next();
 10180             if (IN_param_value == NULL)
  9338             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10181               IN_param_value = function_call_param_iterator.next();
  9339             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10182             if (IN_param_value != NULL) {
  9340             
 10183               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9341             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10184               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10185             }
       
 10186             
       
 10187             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9342             {
 10188             {
  9343         
 10189         
  9344                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 10190                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  9345                 return return_type_symbol;
 10191                 return return_type_symbol;
  9346                 
 10192                 
  9362 
 10208 
  9363         {
 10209         {
  9364             identifier_c param_name("IN");
 10210             identifier_c param_name("IN");
  9365             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10211             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9366             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10212             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9367             
 10213             symbol_c *IN_type_symbol = NULL;
  9368             /* Get the value from a foo(<param_value>) style call */
 10214             
  9369             if (IN_param_value == NULL)
 10215             /* Get the value from a foo(<param_value>) style call */
  9370               IN_param_value = function_call_param_iterator.next();
 10216             if (IN_param_value == NULL)
  9371             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10217               IN_param_value = function_call_param_iterator.next();
  9372             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10218             if (IN_param_value != NULL) {
  9373             
 10219               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9374             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10220               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10221             }
       
 10222             
       
 10223             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9375             {
 10224             {
  9376         
 10225         
  9377                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 10226                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
  9378                 return return_type_symbol;
 10227                 return return_type_symbol;
  9379                 
 10228                 
  9395 
 10244 
  9396         {
 10245         {
  9397             identifier_c param_name("IN");
 10246             identifier_c param_name("IN");
  9398             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10247             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9399             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10248             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9400             
 10249             symbol_c *IN_type_symbol = NULL;
  9401             /* Get the value from a foo(<param_value>) style call */
 10250             
  9402             if (IN_param_value == NULL)
 10251             /* Get the value from a foo(<param_value>) style call */
  9403               IN_param_value = function_call_param_iterator.next();
 10252             if (IN_param_value == NULL)
  9404             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10253               IN_param_value = function_call_param_iterator.next();
  9405             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10254             if (IN_param_value != NULL) {
  9406             
 10255               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9407             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10256               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10257             }
       
 10258             
       
 10259             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9408             {
 10260             {
  9409         
 10261         
  9410                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 10262                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
  9411                 return return_type_symbol;
 10263                 return return_type_symbol;
  9412                 
 10264                 
  9428 
 10280 
  9429         {
 10281         {
  9430             identifier_c param_name("IN");
 10282             identifier_c param_name("IN");
  9431             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10283             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9432             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10284             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9433             
 10285             symbol_c *IN_type_symbol = NULL;
  9434             /* Get the value from a foo(<param_value>) style call */
 10286             
  9435             if (IN_param_value == NULL)
 10287             /* Get the value from a foo(<param_value>) style call */
  9436               IN_param_value = function_call_param_iterator.next();
 10288             if (IN_param_value == NULL)
  9437             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10289               IN_param_value = function_call_param_iterator.next();
  9438             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10290             if (IN_param_value != NULL) {
  9439             
 10291               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9440             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10292               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10293             }
       
 10294             
       
 10295             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9441             {
 10296             {
  9442         
 10297         
  9443                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 10298                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
  9444                 return return_type_symbol;
 10299                 return return_type_symbol;
  9445                 
 10300                 
  9461 
 10316 
  9462         {
 10317         {
  9463             identifier_c param_name("IN");
 10318             identifier_c param_name("IN");
  9464             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10319             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9465             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10320             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9466             
 10321             symbol_c *IN_type_symbol = NULL;
  9467             /* Get the value from a foo(<param_value>) style call */
 10322             
  9468             if (IN_param_value == NULL)
 10323             /* Get the value from a foo(<param_value>) style call */
  9469               IN_param_value = function_call_param_iterator.next();
 10324             if (IN_param_value == NULL)
  9470             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10325               IN_param_value = function_call_param_iterator.next();
  9471             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10326             if (IN_param_value != NULL) {
  9472             
 10327               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9473             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10328               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10329             }
       
 10330             
       
 10331             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9474             {
 10332             {
  9475         
 10333         
  9476                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 10334                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
  9477                 return return_type_symbol;
 10335                 return return_type_symbol;
  9478                 
 10336                 
  9494 
 10352 
  9495         {
 10353         {
  9496             identifier_c param_name("IN");
 10354             identifier_c param_name("IN");
  9497             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10355             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9498             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10356             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9499             
 10357             symbol_c *IN_type_symbol = NULL;
  9500             /* Get the value from a foo(<param_value>) style call */
 10358             
  9501             if (IN_param_value == NULL)
 10359             /* Get the value from a foo(<param_value>) style call */
  9502               IN_param_value = function_call_param_iterator.next();
 10360             if (IN_param_value == NULL)
  9503             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10361               IN_param_value = function_call_param_iterator.next();
  9504             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10362             if (IN_param_value != NULL) {
  9505             
 10363               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9506             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10364               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10365             }
       
 10366             
       
 10367             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9507             {
 10368             {
  9508         
 10369         
  9509                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 10370                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
  9510                 return return_type_symbol;
 10371                 return return_type_symbol;
  9511                 
 10372                 
  9527 
 10388 
  9528         {
 10389         {
  9529             identifier_c param_name("IN");
 10390             identifier_c param_name("IN");
  9530             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10391             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9531             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10392             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9532             
 10393             symbol_c *IN_type_symbol = NULL;
  9533             /* Get the value from a foo(<param_value>) style call */
 10394             
  9534             if (IN_param_value == NULL)
 10395             /* Get the value from a foo(<param_value>) style call */
  9535               IN_param_value = function_call_param_iterator.next();
 10396             if (IN_param_value == NULL)
  9536             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10397               IN_param_value = function_call_param_iterator.next();
  9537             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10398             if (IN_param_value != NULL) {
  9538             
 10399               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9539             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10400               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10401             }
       
 10402             
       
 10403             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9540             {
 10404             {
  9541         
 10405         
  9542                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 10406                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
  9543                 return return_type_symbol;
 10407                 return return_type_symbol;
  9544                 
 10408                 
  9560 
 10424 
  9561         {
 10425         {
  9562             identifier_c param_name("IN");
 10426             identifier_c param_name("IN");
  9563             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10427             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9564             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10428             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9565             
 10429             symbol_c *IN_type_symbol = NULL;
  9566             /* Get the value from a foo(<param_value>) style call */
 10430             
  9567             if (IN_param_value == NULL)
 10431             /* Get the value from a foo(<param_value>) style call */
  9568               IN_param_value = function_call_param_iterator.next();
 10432             if (IN_param_value == NULL)
  9569             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10433               IN_param_value = function_call_param_iterator.next();
  9570             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10434             if (IN_param_value != NULL) {
  9571             
 10435               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9572             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10436               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10437             }
       
 10438             
       
 10439             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9573             {
 10440             {
  9574         
 10441         
  9575                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 10442                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
  9576                 return return_type_symbol;
 10443                 return return_type_symbol;
  9577                 
 10444                 
  9593 
 10460 
  9594         {
 10461         {
  9595             identifier_c param_name("IN");
 10462             identifier_c param_name("IN");
  9596             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10463             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9597             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10464             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9598             
 10465             symbol_c *IN_type_symbol = NULL;
  9599             /* Get the value from a foo(<param_value>) style call */
 10466             
  9600             if (IN_param_value == NULL)
 10467             /* Get the value from a foo(<param_value>) style call */
  9601               IN_param_value = function_call_param_iterator.next();
 10468             if (IN_param_value == NULL)
  9602             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10469               IN_param_value = function_call_param_iterator.next();
  9603             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10470             if (IN_param_value != NULL) {
  9604             
 10471               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9605             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10472               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10473             }
       
 10474             
       
 10475             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9606             {
 10476             {
  9607         
 10477         
  9608                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 10478                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
  9609                 return return_type_symbol;
 10479                 return return_type_symbol;
  9610                 
 10480                 
  9626 
 10496 
  9627         {
 10497         {
  9628             identifier_c param_name("IN");
 10498             identifier_c param_name("IN");
  9629             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10499             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9630             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10500             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9631             
 10501             symbol_c *IN_type_symbol = NULL;
  9632             /* Get the value from a foo(<param_value>) style call */
 10502             
  9633             if (IN_param_value == NULL)
 10503             /* Get the value from a foo(<param_value>) style call */
  9634               IN_param_value = function_call_param_iterator.next();
 10504             if (IN_param_value == NULL)
  9635             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10505               IN_param_value = function_call_param_iterator.next();
  9636             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10506             if (IN_param_value != NULL) {
  9637             
 10507               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9638             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10508               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10509             }
       
 10510             
       
 10511             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9639             {
 10512             {
  9640         
 10513         
  9641                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 10514                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
  9642                 return return_type_symbol;
 10515                 return return_type_symbol;
  9643                 
 10516                 
  9659 
 10532 
  9660         {
 10533         {
  9661             identifier_c param_name("IN");
 10534             identifier_c param_name("IN");
  9662             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10535             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9663             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10536             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9664             
 10537             symbol_c *IN_type_symbol = NULL;
  9665             /* Get the value from a foo(<param_value>) style call */
 10538             
  9666             if (IN_param_value == NULL)
 10539             /* Get the value from a foo(<param_value>) style call */
  9667               IN_param_value = function_call_param_iterator.next();
 10540             if (IN_param_value == NULL)
  9668             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10541               IN_param_value = function_call_param_iterator.next();
  9669             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10542             if (IN_param_value != NULL) {
  9670             
 10543               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9671             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 10544               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10545             }
       
 10546             
       
 10547             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
  9672             {
 10548             {
  9673         
 10549         
  9674                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 10550                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
  9675                 return return_type_symbol;
 10551                 return return_type_symbol;
  9676                 
 10552                 
  9692 
 10568 
  9693         {
 10569         {
  9694             identifier_c param_name("IN");
 10570             identifier_c param_name("IN");
  9695             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10571             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9696             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10572             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9697             
 10573             symbol_c *IN_type_symbol = NULL;
  9698             /* Get the value from a foo(<param_value>) style call */
 10574             
  9699             if (IN_param_value == NULL)
 10575             /* Get the value from a foo(<param_value>) style call */
  9700               IN_param_value = function_call_param_iterator.next();
 10576             if (IN_param_value == NULL)
  9701             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10577               IN_param_value = function_call_param_iterator.next();
  9702             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10578             if (IN_param_value != NULL) {
  9703             
 10579               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9704             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10580               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10581             }
       
 10582             
       
 10583             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
  9705             {
 10584             {
  9706         
 10585         
  9707                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 10586                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
  9708                 return return_type_symbol;
 10587                 return return_type_symbol;
  9709                 
 10588                 
  9725 
 10604 
  9726         {
 10605         {
  9727             identifier_c param_name("IN");
 10606             identifier_c param_name("IN");
  9728             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10607             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9729             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10608             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9730             
 10609             symbol_c *IN_type_symbol = NULL;
  9731             /* Get the value from a foo(<param_value>) style call */
 10610             
  9732             if (IN_param_value == NULL)
 10611             /* Get the value from a foo(<param_value>) style call */
  9733               IN_param_value = function_call_param_iterator.next();
 10612             if (IN_param_value == NULL)
  9734             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10613               IN_param_value = function_call_param_iterator.next();
  9735             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10614             if (IN_param_value != NULL) {
  9736             
 10615               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9737             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10616               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10617             }
       
 10618             
       
 10619             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
  9738             {
 10620             {
  9739         
 10621         
  9740                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 10622                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
  9741                 return return_type_symbol;
 10623                 return return_type_symbol;
  9742                 
 10624                 
  9758 
 10640 
  9759         {
 10641         {
  9760             identifier_c param_name("IN");
 10642             identifier_c param_name("IN");
  9761             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10643             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9762             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10644             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9763             
 10645             symbol_c *IN_type_symbol = NULL;
  9764             /* Get the value from a foo(<param_value>) style call */
 10646             
  9765             if (IN_param_value == NULL)
 10647             /* Get the value from a foo(<param_value>) style call */
  9766               IN_param_value = function_call_param_iterator.next();
 10648             if (IN_param_value == NULL)
  9767             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10649               IN_param_value = function_call_param_iterator.next();
  9768             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10650             if (IN_param_value != NULL) {
  9769             
 10651               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9770             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10652               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10653             }
       
 10654             
       
 10655             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
  9771             {
 10656             {
  9772         
 10657         
  9773                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 10658                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
  9774                 return return_type_symbol;
 10659                 return return_type_symbol;
  9775                 
 10660                 
  9791 
 10676 
  9792         {
 10677         {
  9793             identifier_c param_name("IN");
 10678             identifier_c param_name("IN");
  9794             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10679             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9795             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10680             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9796             
 10681             symbol_c *IN_type_symbol = NULL;
  9797             /* Get the value from a foo(<param_value>) style call */
 10682             
  9798             if (IN_param_value == NULL)
 10683             /* Get the value from a foo(<param_value>) style call */
  9799               IN_param_value = function_call_param_iterator.next();
 10684             if (IN_param_value == NULL)
  9800             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10685               IN_param_value = function_call_param_iterator.next();
  9801             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10686             if (IN_param_value != NULL) {
  9802             
 10687               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9803             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10688               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10689             }
       
 10690             
       
 10691             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
  9804             {
 10692             {
  9805         
 10693         
  9806                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 10694                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
  9807                 return return_type_symbol;
 10695                 return return_type_symbol;
  9808                 
 10696                 
  9824 
 10712 
  9825         {
 10713         {
  9826             identifier_c param_name("IN");
 10714             identifier_c param_name("IN");
  9827             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10715             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9828             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10716             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9829             
 10717             symbol_c *IN_type_symbol = NULL;
  9830             /* Get the value from a foo(<param_value>) style call */
 10718             
  9831             if (IN_param_value == NULL)
 10719             /* Get the value from a foo(<param_value>) style call */
  9832               IN_param_value = function_call_param_iterator.next();
 10720             if (IN_param_value == NULL)
  9833             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10721               IN_param_value = function_call_param_iterator.next();
  9834             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10722             if (IN_param_value != NULL) {
  9835             
 10723               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9836             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10724               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10725             }
       
 10726             
       
 10727             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
  9837             {
 10728             {
  9838         
 10729         
  9839                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 10730                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
  9840                 return return_type_symbol;
 10731                 return return_type_symbol;
  9841                 
 10732                 
  9857 
 10748 
  9858         {
 10749         {
  9859             identifier_c param_name("IN");
 10750             identifier_c param_name("IN");
  9860             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10751             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9861             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10752             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9862             
 10753             symbol_c *IN_type_symbol = NULL;
  9863             /* Get the value from a foo(<param_value>) style call */
 10754             
  9864             if (IN_param_value == NULL)
 10755             /* Get the value from a foo(<param_value>) style call */
  9865               IN_param_value = function_call_param_iterator.next();
 10756             if (IN_param_value == NULL)
  9866             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10757               IN_param_value = function_call_param_iterator.next();
  9867             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10758             if (IN_param_value != NULL) {
  9868             
 10759               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9869             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10760               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10761             }
       
 10762             
       
 10763             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
  9870             {
 10764             {
  9871         
 10765         
  9872                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 10766                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
  9873                 return return_type_symbol;
 10767                 return return_type_symbol;
  9874                 
 10768                 
  9890 
 10784 
  9891         {
 10785         {
  9892             identifier_c param_name("IN");
 10786             identifier_c param_name("IN");
  9893             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10787             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9894             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10788             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9895             
 10789             symbol_c *IN_type_symbol = NULL;
  9896             /* Get the value from a foo(<param_value>) style call */
 10790             
  9897             if (IN_param_value == NULL)
 10791             /* Get the value from a foo(<param_value>) style call */
  9898               IN_param_value = function_call_param_iterator.next();
 10792             if (IN_param_value == NULL)
  9899             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10793               IN_param_value = function_call_param_iterator.next();
  9900             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10794             if (IN_param_value != NULL) {
  9901             
 10795               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9902             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10796               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10797             }
       
 10798             
       
 10799             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
  9903             {
 10800             {
  9904         
 10801         
  9905                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 10802                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
  9906                 return return_type_symbol;
 10803                 return return_type_symbol;
  9907                 
 10804                 
  9923 
 10820 
  9924         {
 10821         {
  9925             identifier_c param_name("IN");
 10822             identifier_c param_name("IN");
  9926             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10823             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9927             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10824             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9928             
 10825             symbol_c *IN_type_symbol = NULL;
  9929             /* Get the value from a foo(<param_value>) style call */
 10826             
  9930             if (IN_param_value == NULL)
 10827             /* Get the value from a foo(<param_value>) style call */
  9931               IN_param_value = function_call_param_iterator.next();
 10828             if (IN_param_value == NULL)
  9932             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10829               IN_param_value = function_call_param_iterator.next();
  9933             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10830             if (IN_param_value != NULL) {
  9934             
 10831               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9935             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10832               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10833             }
       
 10834             
       
 10835             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
  9936             {
 10836             {
  9937         
 10837         
  9938                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 10838                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
  9939                 return return_type_symbol;
 10839                 return return_type_symbol;
  9940                 
 10840                 
  9956 
 10856 
  9957         {
 10857         {
  9958             identifier_c param_name("IN");
 10858             identifier_c param_name("IN");
  9959             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10859             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9960             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10860             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9961             
 10861             symbol_c *IN_type_symbol = NULL;
  9962             /* Get the value from a foo(<param_value>) style call */
 10862             
  9963             if (IN_param_value == NULL)
 10863             /* Get the value from a foo(<param_value>) style call */
  9964               IN_param_value = function_call_param_iterator.next();
 10864             if (IN_param_value == NULL)
  9965             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10865               IN_param_value = function_call_param_iterator.next();
  9966             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10866             if (IN_param_value != NULL) {
  9967             
 10867               IN_type_symbol = search_expression_type->get_type(IN_param_value);
  9968             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10868               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10869             }
       
 10870             
       
 10871             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
  9969             {
 10872             {
  9970         
 10873         
  9971                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 10874                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
  9972                 return return_type_symbol;
 10875                 return return_type_symbol;
  9973                 
 10876                 
  9989 
 10892 
  9990         {
 10893         {
  9991             identifier_c param_name("IN");
 10894             identifier_c param_name("IN");
  9992             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10895             /* Get the value from a foo(<param_name> = <param_value>) style call */
  9993             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10896             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
  9994             
 10897             symbol_c *IN_type_symbol = NULL;
  9995             /* Get the value from a foo(<param_value>) style call */
 10898             
  9996             if (IN_param_value == NULL)
 10899             /* Get the value from a foo(<param_value>) style call */
  9997               IN_param_value = function_call_param_iterator.next();
 10900             if (IN_param_value == NULL)
  9998             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10901               IN_param_value = function_call_param_iterator.next();
  9999             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10902             if (IN_param_value != NULL) {
 10000             
 10903               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10001             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10904               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10905             }
       
 10906             
       
 10907             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10002             {
 10908             {
 10003         
 10909         
 10004                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 10910                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 10005                 return return_type_symbol;
 10911                 return return_type_symbol;
 10006                 
 10912                 
 10022 
 10928 
 10023         {
 10929         {
 10024             identifier_c param_name("IN");
 10930             identifier_c param_name("IN");
 10025             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10931             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10026             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10932             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10027             
 10933             symbol_c *IN_type_symbol = NULL;
 10028             /* Get the value from a foo(<param_value>) style call */
 10934             
 10029             if (IN_param_value == NULL)
 10935             /* Get the value from a foo(<param_value>) style call */
 10030               IN_param_value = function_call_param_iterator.next();
 10936             if (IN_param_value == NULL)
 10031             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10937               IN_param_value = function_call_param_iterator.next();
 10032             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10938             if (IN_param_value != NULL) {
 10033             
 10939               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10034             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10940               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10941             }
       
 10942             
       
 10943             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10035             {
 10944             {
 10036         
 10945         
 10037                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 10946                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 10038                 return return_type_symbol;
 10947                 return return_type_symbol;
 10039                 
 10948                 
 10055 
 10964 
 10056         {
 10965         {
 10057             identifier_c param_name("IN");
 10966             identifier_c param_name("IN");
 10058             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10967             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10059             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10968             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10060             
 10969             symbol_c *IN_type_symbol = NULL;
 10061             /* Get the value from a foo(<param_value>) style call */
 10970             
 10062             if (IN_param_value == NULL)
 10971             /* Get the value from a foo(<param_value>) style call */
 10063               IN_param_value = function_call_param_iterator.next();
 10972             if (IN_param_value == NULL)
 10064             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10973               IN_param_value = function_call_param_iterator.next();
 10065             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 10974             if (IN_param_value != NULL) {
 10066             
 10975               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10067             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10976               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 10977             }
       
 10978             
       
 10979             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10068             {
 10980             {
 10069         
 10981         
 10070                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 10982                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 10071                 return return_type_symbol;
 10983                 return return_type_symbol;
 10072                 
 10984                 
 10088 
 11000 
 10089         {
 11001         {
 10090             identifier_c param_name("IN");
 11002             identifier_c param_name("IN");
 10091             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11003             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10092             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11004             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10093             
 11005             symbol_c *IN_type_symbol = NULL;
 10094             /* Get the value from a foo(<param_value>) style call */
 11006             
 10095             if (IN_param_value == NULL)
 11007             /* Get the value from a foo(<param_value>) style call */
 10096               IN_param_value = function_call_param_iterator.next();
 11008             if (IN_param_value == NULL)
 10097             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11009               IN_param_value = function_call_param_iterator.next();
 10098             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11010             if (IN_param_value != NULL) {
 10099             
 11011               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10100             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 11012               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11013             }
       
 11014             
       
 11015             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10101             {
 11016             {
 10102         
 11017         
 10103                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 11018                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 10104                 return return_type_symbol;
 11019                 return return_type_symbol;
 10105                 
 11020                 
 10121 
 11036 
 10122         {
 11037         {
 10123             identifier_c param_name("IN");
 11038             identifier_c param_name("IN");
 10124             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11039             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10125             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11040             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10126             
 11041             symbol_c *IN_type_symbol = NULL;
 10127             /* Get the value from a foo(<param_value>) style call */
 11042             
 10128             if (IN_param_value == NULL)
 11043             /* Get the value from a foo(<param_value>) style call */
 10129               IN_param_value = function_call_param_iterator.next();
 11044             if (IN_param_value == NULL)
 10130             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11045               IN_param_value = function_call_param_iterator.next();
 10131             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11046             if (IN_param_value != NULL) {
 10132             
 11047               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10133             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 11048               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11049             }
       
 11050             
       
 11051             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10134             {
 11052             {
 10135         
 11053         
 10136                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 11054                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 10137                 return return_type_symbol;
 11055                 return return_type_symbol;
 10138                 
 11056                 
 10154 
 11072 
 10155         {
 11073         {
 10156             identifier_c param_name("IN");
 11074             identifier_c param_name("IN");
 10157             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11075             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10158             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11076             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10159             
 11077             symbol_c *IN_type_symbol = NULL;
 10160             /* Get the value from a foo(<param_value>) style call */
 11078             
 10161             if (IN_param_value == NULL)
 11079             /* Get the value from a foo(<param_value>) style call */
 10162               IN_param_value = function_call_param_iterator.next();
 11080             if (IN_param_value == NULL)
 10163             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11081               IN_param_value = function_call_param_iterator.next();
 10164             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11082             if (IN_param_value != NULL) {
 10165             
 11083               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10166             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 11084               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11085             }
       
 11086             
       
 11087             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10167             {
 11088             {
 10168         
 11089         
 10169                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 11090                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 10170                 return return_type_symbol;
 11091                 return return_type_symbol;
 10171                 
 11092                 
 10187 
 11108 
 10188         {
 11109         {
 10189             identifier_c param_name("IN");
 11110             identifier_c param_name("IN");
 10190             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11111             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10191             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11112             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10192             
 11113             symbol_c *IN_type_symbol = NULL;
 10193             /* Get the value from a foo(<param_value>) style call */
 11114             
 10194             if (IN_param_value == NULL)
 11115             /* Get the value from a foo(<param_value>) style call */
 10195               IN_param_value = function_call_param_iterator.next();
 11116             if (IN_param_value == NULL)
 10196             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11117               IN_param_value = function_call_param_iterator.next();
 10197             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11118             if (IN_param_value != NULL) {
 10198             
 11119               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10199             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 11120               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11121             }
       
 11122             
       
 11123             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10200             {
 11124             {
 10201         
 11125         
 10202                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 11126                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 10203                 return return_type_symbol;
 11127                 return return_type_symbol;
 10204                 
 11128                 
 10220 
 11144 
 10221         {
 11145         {
 10222             identifier_c param_name("IN");
 11146             identifier_c param_name("IN");
 10223             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11147             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10224             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11148             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10225             
 11149             symbol_c *IN_type_symbol = NULL;
 10226             /* Get the value from a foo(<param_value>) style call */
 11150             
 10227             if (IN_param_value == NULL)
 11151             /* Get the value from a foo(<param_value>) style call */
 10228               IN_param_value = function_call_param_iterator.next();
 11152             if (IN_param_value == NULL)
 10229             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11153               IN_param_value = function_call_param_iterator.next();
 10230             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11154             if (IN_param_value != NULL) {
 10231             
 11155               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10232             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 11156               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11157             }
       
 11158             
       
 11159             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10233             {
 11160             {
 10234         
 11161         
 10235                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 11162                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 10236                 return return_type_symbol;
 11163                 return return_type_symbol;
 10237                 
 11164                 
 10253 
 11180 
 10254         {
 11181         {
 10255             identifier_c param_name("IN");
 11182             identifier_c param_name("IN");
 10256             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11183             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10257             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11184             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10258             
 11185             symbol_c *IN_type_symbol = NULL;
 10259             /* Get the value from a foo(<param_value>) style call */
 11186             
 10260             if (IN_param_value == NULL)
 11187             /* Get the value from a foo(<param_value>) style call */
 10261               IN_param_value = function_call_param_iterator.next();
 11188             if (IN_param_value == NULL)
 10262             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11189               IN_param_value = function_call_param_iterator.next();
 10263             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11190             if (IN_param_value != NULL) {
 10264             
 11191               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10265             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 11192               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11193             }
       
 11194             
       
 11195             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10266             {
 11196             {
 10267         
 11197         
 10268                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 11198                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 10269                 return return_type_symbol;
 11199                 return return_type_symbol;
 10270                 
 11200                 
 10286 
 11216 
 10287         {
 11217         {
 10288             identifier_c param_name("IN");
 11218             identifier_c param_name("IN");
 10289             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11219             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10290             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11220             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10291             
 11221             symbol_c *IN_type_symbol = NULL;
 10292             /* Get the value from a foo(<param_value>) style call */
 11222             
 10293             if (IN_param_value == NULL)
 11223             /* Get the value from a foo(<param_value>) style call */
 10294               IN_param_value = function_call_param_iterator.next();
 11224             if (IN_param_value == NULL)
 10295             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11225               IN_param_value = function_call_param_iterator.next();
 10296             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11226             if (IN_param_value != NULL) {
 10297             
 11227               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10298             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 11228               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11229             }
       
 11230             
       
 11231             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 10299             {
 11232             {
 10300         
 11233         
 10301                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 11234                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 10302                 return return_type_symbol;
 11235                 return return_type_symbol;
 10303                 
 11236                 
 10319 
 11252 
 10320         {
 11253         {
 10321             identifier_c param_name("IN");
 11254             identifier_c param_name("IN");
 10322             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11255             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10323             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11256             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10324             
 11257             symbol_c *IN_type_symbol = NULL;
 10325             /* Get the value from a foo(<param_value>) style call */
 11258             
 10326             if (IN_param_value == NULL)
 11259             /* Get the value from a foo(<param_value>) style call */
 10327               IN_param_value = function_call_param_iterator.next();
 11260             if (IN_param_value == NULL)
 10328             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11261               IN_param_value = function_call_param_iterator.next();
 10329             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11262             if (IN_param_value != NULL) {
 10330             
 11263               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10331             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11264               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11265             }
       
 11266             
       
 11267             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10332             {
 11268             {
 10333         
 11269         
 10334                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 11270                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 10335                 return return_type_symbol;
 11271                 return return_type_symbol;
 10336                 
 11272                 
 10352 
 11288 
 10353         {
 11289         {
 10354             identifier_c param_name("IN");
 11290             identifier_c param_name("IN");
 10355             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11291             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10356             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11292             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10357             
 11293             symbol_c *IN_type_symbol = NULL;
 10358             /* Get the value from a foo(<param_value>) style call */
 11294             
 10359             if (IN_param_value == NULL)
 11295             /* Get the value from a foo(<param_value>) style call */
 10360               IN_param_value = function_call_param_iterator.next();
 11296             if (IN_param_value == NULL)
 10361             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11297               IN_param_value = function_call_param_iterator.next();
 10362             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11298             if (IN_param_value != NULL) {
 10363             
 11299               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10364             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11300               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11301             }
       
 11302             
       
 11303             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10365             {
 11304             {
 10366         
 11305         
 10367                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 11306                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 10368                 return return_type_symbol;
 11307                 return return_type_symbol;
 10369                 
 11308                 
 10385 
 11324 
 10386         {
 11325         {
 10387             identifier_c param_name("IN");
 11326             identifier_c param_name("IN");
 10388             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11327             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10389             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11328             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10390             
 11329             symbol_c *IN_type_symbol = NULL;
 10391             /* Get the value from a foo(<param_value>) style call */
 11330             
 10392             if (IN_param_value == NULL)
 11331             /* Get the value from a foo(<param_value>) style call */
 10393               IN_param_value = function_call_param_iterator.next();
 11332             if (IN_param_value == NULL)
 10394             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11333               IN_param_value = function_call_param_iterator.next();
 10395             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11334             if (IN_param_value != NULL) {
 10396             
 11335               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10397             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11336               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11337             }
       
 11338             
       
 11339             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10398             {
 11340             {
 10399         
 11341         
 10400                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 11342                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 10401                 return return_type_symbol;
 11343                 return return_type_symbol;
 10402                 
 11344                 
 10418 
 11360 
 10419         {
 11361         {
 10420             identifier_c param_name("IN");
 11362             identifier_c param_name("IN");
 10421             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11363             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10422             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11364             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10423             
 11365             symbol_c *IN_type_symbol = NULL;
 10424             /* Get the value from a foo(<param_value>) style call */
 11366             
 10425             if (IN_param_value == NULL)
 11367             /* Get the value from a foo(<param_value>) style call */
 10426               IN_param_value = function_call_param_iterator.next();
 11368             if (IN_param_value == NULL)
 10427             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11369               IN_param_value = function_call_param_iterator.next();
 10428             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11370             if (IN_param_value != NULL) {
 10429             
 11371               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10430             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11372               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11373             }
       
 11374             
       
 11375             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10431             {
 11376             {
 10432         
 11377         
 10433                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 11378                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 10434                 return return_type_symbol;
 11379                 return return_type_symbol;
 10435                 
 11380                 
 10451 
 11396 
 10452         {
 11397         {
 10453             identifier_c param_name("IN");
 11398             identifier_c param_name("IN");
 10454             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11399             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10455             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11400             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10456             
 11401             symbol_c *IN_type_symbol = NULL;
 10457             /* Get the value from a foo(<param_value>) style call */
 11402             
 10458             if (IN_param_value == NULL)
 11403             /* Get the value from a foo(<param_value>) style call */
 10459               IN_param_value = function_call_param_iterator.next();
 11404             if (IN_param_value == NULL)
 10460             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11405               IN_param_value = function_call_param_iterator.next();
 10461             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11406             if (IN_param_value != NULL) {
 10462             
 11407               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10463             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11408               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11409             }
       
 11410             
       
 11411             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10464             {
 11412             {
 10465         
 11413         
 10466                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 11414                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 10467                 return return_type_symbol;
 11415                 return return_type_symbol;
 10468                 
 11416                 
 10484 
 11432 
 10485         {
 11433         {
 10486             identifier_c param_name("IN");
 11434             identifier_c param_name("IN");
 10487             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11435             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10488             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11436             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10489             
 11437             symbol_c *IN_type_symbol = NULL;
 10490             /* Get the value from a foo(<param_value>) style call */
 11438             
 10491             if (IN_param_value == NULL)
 11439             /* Get the value from a foo(<param_value>) style call */
 10492               IN_param_value = function_call_param_iterator.next();
 11440             if (IN_param_value == NULL)
 10493             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11441               IN_param_value = function_call_param_iterator.next();
 10494             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11442             if (IN_param_value != NULL) {
 10495             
 11443               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10496             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11444               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11445             }
       
 11446             
       
 11447             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10497             {
 11448             {
 10498         
 11449         
 10499                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 11450                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 10500                 return return_type_symbol;
 11451                 return return_type_symbol;
 10501                 
 11452                 
 10517 
 11468 
 10518         {
 11469         {
 10519             identifier_c param_name("IN");
 11470             identifier_c param_name("IN");
 10520             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11471             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10521             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11472             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10522             
 11473             symbol_c *IN_type_symbol = NULL;
 10523             /* Get the value from a foo(<param_value>) style call */
 11474             
 10524             if (IN_param_value == NULL)
 11475             /* Get the value from a foo(<param_value>) style call */
 10525               IN_param_value = function_call_param_iterator.next();
 11476             if (IN_param_value == NULL)
 10526             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11477               IN_param_value = function_call_param_iterator.next();
 10527             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11478             if (IN_param_value != NULL) {
 10528             
 11479               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10529             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11480               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11481             }
       
 11482             
       
 11483             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10530             {
 11484             {
 10531         
 11485         
 10532                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 11486                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 10533                 return return_type_symbol;
 11487                 return return_type_symbol;
 10534                 
 11488                 
 10550 
 11504 
 10551         {
 11505         {
 10552             identifier_c param_name("IN");
 11506             identifier_c param_name("IN");
 10553             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11507             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10554             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11508             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10555             
 11509             symbol_c *IN_type_symbol = NULL;
 10556             /* Get the value from a foo(<param_value>) style call */
 11510             
 10557             if (IN_param_value == NULL)
 11511             /* Get the value from a foo(<param_value>) style call */
 10558               IN_param_value = function_call_param_iterator.next();
 11512             if (IN_param_value == NULL)
 10559             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11513               IN_param_value = function_call_param_iterator.next();
 10560             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11514             if (IN_param_value != NULL) {
 10561             
 11515               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10562             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11516               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11517             }
       
 11518             
       
 11519             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10563             {
 11520             {
 10564         
 11521         
 10565                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 11522                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 10566                 return return_type_symbol;
 11523                 return return_type_symbol;
 10567                 
 11524                 
 10583 
 11540 
 10584         {
 11541         {
 10585             identifier_c param_name("IN");
 11542             identifier_c param_name("IN");
 10586             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11543             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10587             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11544             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10588             
 11545             symbol_c *IN_type_symbol = NULL;
 10589             /* Get the value from a foo(<param_value>) style call */
 11546             
 10590             if (IN_param_value == NULL)
 11547             /* Get the value from a foo(<param_value>) style call */
 10591               IN_param_value = function_call_param_iterator.next();
 11548             if (IN_param_value == NULL)
 10592             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11549               IN_param_value = function_call_param_iterator.next();
 10593             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11550             if (IN_param_value != NULL) {
 10594             
 11551               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10595             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11552               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11553             }
       
 11554             
       
 11555             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10596             {
 11556             {
 10597         
 11557         
 10598                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 11558                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 10599                 return return_type_symbol;
 11559                 return return_type_symbol;
 10600                 
 11560                 
 10616 
 11576 
 10617         {
 11577         {
 10618             identifier_c param_name("IN");
 11578             identifier_c param_name("IN");
 10619             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11579             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10620             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11580             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10621             
 11581             symbol_c *IN_type_symbol = NULL;
 10622             /* Get the value from a foo(<param_value>) style call */
 11582             
 10623             if (IN_param_value == NULL)
 11583             /* Get the value from a foo(<param_value>) style call */
 10624               IN_param_value = function_call_param_iterator.next();
 11584             if (IN_param_value == NULL)
 10625             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11585               IN_param_value = function_call_param_iterator.next();
 10626             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11586             if (IN_param_value != NULL) {
 10627             
 11587               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10628             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11588               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11589             }
       
 11590             
       
 11591             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10629             {
 11592             {
 10630         
 11593         
 10631                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 11594                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 10632                 return return_type_symbol;
 11595                 return return_type_symbol;
 10633                 
 11596                 
 10649 
 11612 
 10650         {
 11613         {
 10651             identifier_c param_name("IN");
 11614             identifier_c param_name("IN");
 10652             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11615             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10653             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11616             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10654             
 11617             symbol_c *IN_type_symbol = NULL;
 10655             /* Get the value from a foo(<param_value>) style call */
 11618             
 10656             if (IN_param_value == NULL)
 11619             /* Get the value from a foo(<param_value>) style call */
 10657               IN_param_value = function_call_param_iterator.next();
 11620             if (IN_param_value == NULL)
 10658             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11621               IN_param_value = function_call_param_iterator.next();
 10659             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11622             if (IN_param_value != NULL) {
 10660             
 11623               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10661             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11624               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11625             }
       
 11626             
       
 11627             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10662             {
 11628             {
 10663         
 11629         
 10664                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 11630                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 10665                 return return_type_symbol;
 11631                 return return_type_symbol;
 10666                 
 11632                 
 10682 
 11648 
 10683         {
 11649         {
 10684             identifier_c param_name("IN");
 11650             identifier_c param_name("IN");
 10685             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11651             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10686             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11652             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10687             
 11653             symbol_c *IN_type_symbol = NULL;
 10688             /* Get the value from a foo(<param_value>) style call */
 11654             
 10689             if (IN_param_value == NULL)
 11655             /* Get the value from a foo(<param_value>) style call */
 10690               IN_param_value = function_call_param_iterator.next();
 11656             if (IN_param_value == NULL)
 10691             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11657               IN_param_value = function_call_param_iterator.next();
 10692             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11658             if (IN_param_value != NULL) {
 10693             
 11659               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10694             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11660               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11661             }
       
 11662             
       
 11663             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10695             {
 11664             {
 10696         
 11665         
 10697                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 11666                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 10698                 return return_type_symbol;
 11667                 return return_type_symbol;
 10699                 
 11668                 
 10715 
 11684 
 10716         {
 11685         {
 10717             identifier_c param_name("IN");
 11686             identifier_c param_name("IN");
 10718             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11687             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10719             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11688             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10720             
 11689             symbol_c *IN_type_symbol = NULL;
 10721             /* Get the value from a foo(<param_value>) style call */
 11690             
 10722             if (IN_param_value == NULL)
 11691             /* Get the value from a foo(<param_value>) style call */
 10723               IN_param_value = function_call_param_iterator.next();
 11692             if (IN_param_value == NULL)
 10724             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11693               IN_param_value = function_call_param_iterator.next();
 10725             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11694             if (IN_param_value != NULL) {
 10726             
 11695               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10727             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11696               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11697             }
       
 11698             
       
 11699             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10728             {
 11700             {
 10729         
 11701         
 10730                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 11702                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 10731                 return return_type_symbol;
 11703                 return return_type_symbol;
 10732                 
 11704                 
 10748 
 11720 
 10749         {
 11721         {
 10750             identifier_c param_name("IN");
 11722             identifier_c param_name("IN");
 10751             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11723             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10752             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11724             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10753             
 11725             symbol_c *IN_type_symbol = NULL;
 10754             /* Get the value from a foo(<param_value>) style call */
 11726             
 10755             if (IN_param_value == NULL)
 11727             /* Get the value from a foo(<param_value>) style call */
 10756               IN_param_value = function_call_param_iterator.next();
 11728             if (IN_param_value == NULL)
 10757             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11729               IN_param_value = function_call_param_iterator.next();
 10758             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11730             if (IN_param_value != NULL) {
 10759             
 11731               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10760             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11732               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11733             }
       
 11734             
       
 11735             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10761             {
 11736             {
 10762         
 11737         
 10763                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 11738                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 10764                 return return_type_symbol;
 11739                 return return_type_symbol;
 10765                 
 11740                 
 10781 
 11756 
 10782         {
 11757         {
 10783             identifier_c param_name("IN");
 11758             identifier_c param_name("IN");
 10784             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11759             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10785             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11760             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10786             
 11761             symbol_c *IN_type_symbol = NULL;
 10787             /* Get the value from a foo(<param_value>) style call */
 11762             
 10788             if (IN_param_value == NULL)
 11763             /* Get the value from a foo(<param_value>) style call */
 10789               IN_param_value = function_call_param_iterator.next();
 11764             if (IN_param_value == NULL)
 10790             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11765               IN_param_value = function_call_param_iterator.next();
 10791             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11766             if (IN_param_value != NULL) {
 10792             
 11767               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10793             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11768               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11769             }
       
 11770             
       
 11771             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10794             {
 11772             {
 10795         
 11773         
 10796                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 11774                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 10797                 return return_type_symbol;
 11775                 return return_type_symbol;
 10798                 
 11776                 
 10814 
 11792 
 10815         {
 11793         {
 10816             identifier_c param_name("IN");
 11794             identifier_c param_name("IN");
 10817             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11795             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10818             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11796             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10819             
 11797             symbol_c *IN_type_symbol = NULL;
 10820             /* Get the value from a foo(<param_value>) style call */
 11798             
 10821             if (IN_param_value == NULL)
 11799             /* Get the value from a foo(<param_value>) style call */
 10822               IN_param_value = function_call_param_iterator.next();
 11800             if (IN_param_value == NULL)
 10823             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11801               IN_param_value = function_call_param_iterator.next();
 10824             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11802             if (IN_param_value != NULL) {
 10825             
 11803               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10826             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11804               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11805             }
       
 11806             
       
 11807             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10827             {
 11808             {
 10828         
 11809         
 10829                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 11810                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 10830                 return return_type_symbol;
 11811                 return return_type_symbol;
 10831                 
 11812                 
 10847 
 11828 
 10848         {
 11829         {
 10849             identifier_c param_name("IN");
 11830             identifier_c param_name("IN");
 10850             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11831             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10851             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11832             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10852             
 11833             symbol_c *IN_type_symbol = NULL;
 10853             /* Get the value from a foo(<param_value>) style call */
 11834             
 10854             if (IN_param_value == NULL)
 11835             /* Get the value from a foo(<param_value>) style call */
 10855               IN_param_value = function_call_param_iterator.next();
 11836             if (IN_param_value == NULL)
 10856             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11837               IN_param_value = function_call_param_iterator.next();
 10857             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11838             if (IN_param_value != NULL) {
 10858             
 11839               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10859             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11840               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11841             }
       
 11842             
       
 11843             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10860             {
 11844             {
 10861         
 11845         
 10862                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 11846                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 10863                 return return_type_symbol;
 11847                 return return_type_symbol;
 10864                 
 11848                 
 10880 
 11864 
 10881         {
 11865         {
 10882             identifier_c param_name("IN");
 11866             identifier_c param_name("IN");
 10883             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11867             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10884             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11868             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10885             
 11869             symbol_c *IN_type_symbol = NULL;
 10886             /* Get the value from a foo(<param_value>) style call */
 11870             
 10887             if (IN_param_value == NULL)
 11871             /* Get the value from a foo(<param_value>) style call */
 10888               IN_param_value = function_call_param_iterator.next();
 11872             if (IN_param_value == NULL)
 10889             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11873               IN_param_value = function_call_param_iterator.next();
 10890             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11874             if (IN_param_value != NULL) {
 10891             
 11875               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10892             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11876               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11877             }
       
 11878             
       
 11879             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10893             {
 11880             {
 10894         
 11881         
 10895                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 11882                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 10896                 return return_type_symbol;
 11883                 return return_type_symbol;
 10897                 
 11884                 
 10913 
 11900 
 10914         {
 11901         {
 10915             identifier_c param_name("IN");
 11902             identifier_c param_name("IN");
 10916             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11903             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10917             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11904             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10918             
 11905             symbol_c *IN_type_symbol = NULL;
 10919             /* Get the value from a foo(<param_value>) style call */
 11906             
 10920             if (IN_param_value == NULL)
 11907             /* Get the value from a foo(<param_value>) style call */
 10921               IN_param_value = function_call_param_iterator.next();
 11908             if (IN_param_value == NULL)
 10922             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11909               IN_param_value = function_call_param_iterator.next();
 10923             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11910             if (IN_param_value != NULL) {
 10924             
 11911               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10925             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 11912               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11913             }
       
 11914             
       
 11915             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 10926             {
 11916             {
 10927         
 11917         
 10928                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 11918                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 10929                 return return_type_symbol;
 11919                 return return_type_symbol;
 10930                 
 11920                 
 10946 
 11936 
 10947         {
 11937         {
 10948             identifier_c param_name("IN");
 11938             identifier_c param_name("IN");
 10949             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11939             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10950             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11940             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10951             
 11941             symbol_c *IN_type_symbol = NULL;
 10952             /* Get the value from a foo(<param_value>) style call */
 11942             
 10953             if (IN_param_value == NULL)
 11943             /* Get the value from a foo(<param_value>) style call */
 10954               IN_param_value = function_call_param_iterator.next();
 11944             if (IN_param_value == NULL)
 10955             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11945               IN_param_value = function_call_param_iterator.next();
 10956             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11946             if (IN_param_value != NULL) {
 10957             
 11947               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10958             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 11948               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11949             }
       
 11950             
       
 11951             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 10959             {
 11952             {
 10960         
 11953         
 10961                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 11954                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 10962                 return return_type_symbol;
 11955                 return return_type_symbol;
 10963                 
 11956                 
 10979 
 11972 
 10980         {
 11973         {
 10981             identifier_c param_name("IN");
 11974             identifier_c param_name("IN");
 10982             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11975             /* Get the value from a foo(<param_name> = <param_value>) style call */
 10983             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11976             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 10984             
 11977             symbol_c *IN_type_symbol = NULL;
 10985             /* Get the value from a foo(<param_value>) style call */
 11978             
 10986             if (IN_param_value == NULL)
 11979             /* Get the value from a foo(<param_value>) style call */
 10987               IN_param_value = function_call_param_iterator.next();
 11980             if (IN_param_value == NULL)
 10988             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11981               IN_param_value = function_call_param_iterator.next();
 10989             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 11982             if (IN_param_value != NULL) {
 10990             
 11983               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 10991             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 11984               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 11985             }
       
 11986             
       
 11987             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 10992             {
 11988             {
 10993         
 11989         
 10994                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 11990                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 10995                 return return_type_symbol;
 11991                 return return_type_symbol;
 10996                 
 11992                 
 11012 
 12008 
 11013         {
 12009         {
 11014             identifier_c param_name("IN");
 12010             identifier_c param_name("IN");
 11015             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12011             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11016             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12012             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11017             
 12013             symbol_c *IN_type_symbol = NULL;
 11018             /* Get the value from a foo(<param_value>) style call */
 12014             
 11019             if (IN_param_value == NULL)
 12015             /* Get the value from a foo(<param_value>) style call */
 11020               IN_param_value = function_call_param_iterator.next();
 12016             if (IN_param_value == NULL)
 11021             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12017               IN_param_value = function_call_param_iterator.next();
 11022             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12018             if (IN_param_value != NULL) {
 11023             
 12019               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11024             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12020               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12021             }
       
 12022             
       
 12023             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 11025             {
 12024             {
 11026         
 12025         
 11027                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 12026                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 11028                 return return_type_symbol;
 12027                 return return_type_symbol;
 11029                 
 12028                 
 11045 
 12044 
 11046         {
 12045         {
 11047             identifier_c param_name("IN");
 12046             identifier_c param_name("IN");
 11048             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12047             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11049             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12048             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11050             
 12049             symbol_c *IN_type_symbol = NULL;
 11051             /* Get the value from a foo(<param_value>) style call */
 12050             
 11052             if (IN_param_value == NULL)
 12051             /* Get the value from a foo(<param_value>) style call */
 11053               IN_param_value = function_call_param_iterator.next();
 12052             if (IN_param_value == NULL)
 11054             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12053               IN_param_value = function_call_param_iterator.next();
 11055             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12054             if (IN_param_value != NULL) {
 11056             
 12055               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11057             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12056               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12057             }
       
 12058             
       
 12059             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 11058             {
 12060             {
 11059         
 12061         
 11060                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 12062                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 11061                 return return_type_symbol;
 12063                 return return_type_symbol;
 11062                 
 12064                 
 11078 
 12080 
 11079         {
 12081         {
 11080             identifier_c param_name("IN");
 12082             identifier_c param_name("IN");
 11081             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12083             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11082             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12084             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11083             
 12085             symbol_c *IN_type_symbol = NULL;
 11084             /* Get the value from a foo(<param_value>) style call */
 12086             
 11085             if (IN_param_value == NULL)
 12087             /* Get the value from a foo(<param_value>) style call */
 11086               IN_param_value = function_call_param_iterator.next();
 12088             if (IN_param_value == NULL)
 11087             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12089               IN_param_value = function_call_param_iterator.next();
 11088             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12090             if (IN_param_value != NULL) {
 11089             
 12091               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11090             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12092               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12093             }
       
 12094             
       
 12095             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 11091             {
 12096             {
 11092         
 12097         
 11093                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 12098                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 11094                 return return_type_symbol;
 12099                 return return_type_symbol;
 11095                 
 12100                 
 11111 
 12116 
 11112         {
 12117         {
 11113             identifier_c param_name("IN");
 12118             identifier_c param_name("IN");
 11114             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12119             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11115             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12120             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11116             
 12121             symbol_c *IN_type_symbol = NULL;
 11117             /* Get the value from a foo(<param_value>) style call */
 12122             
 11118             if (IN_param_value == NULL)
 12123             /* Get the value from a foo(<param_value>) style call */
 11119               IN_param_value = function_call_param_iterator.next();
 12124             if (IN_param_value == NULL)
 11120             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12125               IN_param_value = function_call_param_iterator.next();
 11121             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12126             if (IN_param_value != NULL) {
 11122             
 12127               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11123             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12128               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12129             }
       
 12130             
       
 12131             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 11124             {
 12132             {
 11125         
 12133         
 11126                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 12134                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 11127                 return return_type_symbol;
 12135                 return return_type_symbol;
 11128                 
 12136                 
 11144 
 12152 
 11145         {
 12153         {
 11146             identifier_c param_name("IN");
 12154             identifier_c param_name("IN");
 11147             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12155             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11148             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12156             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11149             
 12157             symbol_c *IN_type_symbol = NULL;
 11150             /* Get the value from a foo(<param_value>) style call */
 12158             
 11151             if (IN_param_value == NULL)
 12159             /* Get the value from a foo(<param_value>) style call */
 11152               IN_param_value = function_call_param_iterator.next();
 12160             if (IN_param_value == NULL)
 11153             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12161               IN_param_value = function_call_param_iterator.next();
 11154             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12162             if (IN_param_value != NULL) {
 11155             
 12163               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11156             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12164               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12165             }
       
 12166             
       
 12167             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 11157             {
 12168             {
 11158         
 12169         
 11159                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 12170                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 11160                 return return_type_symbol;
 12171                 return return_type_symbol;
 11161                 
 12172                 
 11177 
 12188 
 11178         {
 12189         {
 11179             identifier_c param_name("IN");
 12190             identifier_c param_name("IN");
 11180             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12191             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11181             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12192             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11182             
 12193             symbol_c *IN_type_symbol = NULL;
 11183             /* Get the value from a foo(<param_value>) style call */
 12194             
 11184             if (IN_param_value == NULL)
 12195             /* Get the value from a foo(<param_value>) style call */
 11185               IN_param_value = function_call_param_iterator.next();
 12196             if (IN_param_value == NULL)
 11186             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12197               IN_param_value = function_call_param_iterator.next();
 11187             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12198             if (IN_param_value != NULL) {
 11188             
 12199               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11189             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12200               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12201             }
       
 12202             
       
 12203             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 11190             {
 12204             {
 11191         
 12205         
 11192                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 12206                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 11193                 return return_type_symbol;
 12207                 return return_type_symbol;
 11194                 
 12208                 
 11210 
 12224 
 11211         {
 12225         {
 11212             identifier_c param_name("IN");
 12226             identifier_c param_name("IN");
 11213             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12227             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11214             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12228             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11215             
 12229             symbol_c *IN_type_symbol = NULL;
 11216             /* Get the value from a foo(<param_value>) style call */
 12230             
 11217             if (IN_param_value == NULL)
 12231             /* Get the value from a foo(<param_value>) style call */
 11218               IN_param_value = function_call_param_iterator.next();
 12232             if (IN_param_value == NULL)
 11219             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12233               IN_param_value = function_call_param_iterator.next();
 11220             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12234             if (IN_param_value != NULL) {
 11221             
 12235               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11222             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12236               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12237             }
       
 12238             
       
 12239             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 11223             {
 12240             {
 11224         
 12241         
 11225                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 12242                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 11226                 return return_type_symbol;
 12243                 return return_type_symbol;
 11227                 
 12244                 
 11243 
 12260 
 11244         {
 12261         {
 11245             identifier_c param_name("IN");
 12262             identifier_c param_name("IN");
 11246             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12263             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11247             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12264             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11248             
 12265             symbol_c *IN_type_symbol = NULL;
 11249             /* Get the value from a foo(<param_value>) style call */
 12266             
 11250             if (IN_param_value == NULL)
 12267             /* Get the value from a foo(<param_value>) style call */
 11251               IN_param_value = function_call_param_iterator.next();
 12268             if (IN_param_value == NULL)
 11252             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12269               IN_param_value = function_call_param_iterator.next();
 11253             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12270             if (IN_param_value != NULL) {
 11254             
 12271               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11255             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12272               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12273             }
       
 12274             
       
 12275             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 11256             {
 12276             {
 11257         
 12277         
 11258                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 12278                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 11259                 return return_type_symbol;
 12279                 return return_type_symbol;
 11260                 
 12280                 
 11276 
 12296 
 11277         {
 12297         {
 11278             identifier_c param_name("IN");
 12298             identifier_c param_name("IN");
 11279             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12299             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11280             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12300             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11281             
 12301             symbol_c *IN_type_symbol = NULL;
 11282             /* Get the value from a foo(<param_value>) style call */
 12302             
 11283             if (IN_param_value == NULL)
 12303             /* Get the value from a foo(<param_value>) style call */
 11284               IN_param_value = function_call_param_iterator.next();
 12304             if (IN_param_value == NULL)
 11285             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12305               IN_param_value = function_call_param_iterator.next();
 11286             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12306             if (IN_param_value != NULL) {
 11287             
 12307               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11288             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12308               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12309             }
       
 12310             
       
 12311             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 11289             {
 12312             {
 11290         
 12313         
 11291                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 12314                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 11292                 return return_type_symbol;
 12315                 return return_type_symbol;
 11293                 
 12316                 
 11309 
 12332 
 11310         {
 12333         {
 11311             identifier_c param_name("IN");
 12334             identifier_c param_name("IN");
 11312             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12335             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11313             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12336             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11314             
 12337             symbol_c *IN_type_symbol = NULL;
 11315             /* Get the value from a foo(<param_value>) style call */
 12338             
 11316             if (IN_param_value == NULL)
 12339             /* Get the value from a foo(<param_value>) style call */
 11317               IN_param_value = function_call_param_iterator.next();
 12340             if (IN_param_value == NULL)
 11318             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12341               IN_param_value = function_call_param_iterator.next();
 11319             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12342             if (IN_param_value != NULL) {
 11320             
 12343               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11321             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12344               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12345             }
       
 12346             
       
 12347             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 11322             {
 12348             {
 11323         
 12349         
 11324                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 12350                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 11325                 return return_type_symbol;
 12351                 return return_type_symbol;
 11326                 
 12352                 
 11342 
 12368 
 11343         {
 12369         {
 11344             identifier_c param_name("IN");
 12370             identifier_c param_name("IN");
 11345             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12371             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11346             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12372             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11347             
 12373             symbol_c *IN_type_symbol = NULL;
 11348             /* Get the value from a foo(<param_value>) style call */
 12374             
 11349             if (IN_param_value == NULL)
 12375             /* Get the value from a foo(<param_value>) style call */
 11350               IN_param_value = function_call_param_iterator.next();
 12376             if (IN_param_value == NULL)
 11351             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12377               IN_param_value = function_call_param_iterator.next();
 11352             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12378             if (IN_param_value != NULL) {
 11353             
 12379               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11354             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12380               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12381             }
       
 12382             
       
 12383             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 11355             {
 12384             {
 11356         
 12385         
 11357                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 12386                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 11358                 return return_type_symbol;
 12387                 return return_type_symbol;
 11359                 
 12388                 
 11375 
 12404 
 11376         {
 12405         {
 11377             identifier_c param_name("IN");
 12406             identifier_c param_name("IN");
 11378             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12407             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11379             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12408             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11380             
 12409             symbol_c *IN_type_symbol = NULL;
 11381             /* Get the value from a foo(<param_value>) style call */
 12410             
 11382             if (IN_param_value == NULL)
 12411             /* Get the value from a foo(<param_value>) style call */
 11383               IN_param_value = function_call_param_iterator.next();
 12412             if (IN_param_value == NULL)
 11384             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12413               IN_param_value = function_call_param_iterator.next();
 11385             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12414             if (IN_param_value != NULL) {
 11386             
 12415               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11387             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12416               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12417             }
       
 12418             
       
 12419             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 11388             {
 12420             {
 11389         
 12421         
 11390                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 12422                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 11391                 return return_type_symbol;
 12423                 return return_type_symbol;
 11392                 
 12424                 
 11408 
 12440 
 11409         {
 12441         {
 11410             identifier_c param_name("IN");
 12442             identifier_c param_name("IN");
 11411             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12443             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11412             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12444             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11413             
 12445             symbol_c *IN_type_symbol = NULL;
 11414             /* Get the value from a foo(<param_value>) style call */
 12446             
 11415             if (IN_param_value == NULL)
 12447             /* Get the value from a foo(<param_value>) style call */
 11416               IN_param_value = function_call_param_iterator.next();
 12448             if (IN_param_value == NULL)
 11417             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12449               IN_param_value = function_call_param_iterator.next();
 11418             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12450             if (IN_param_value != NULL) {
 11419             
 12451               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11420             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12452               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12453             }
       
 12454             
       
 12455             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 11421             {
 12456             {
 11422         
 12457         
 11423                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 12458                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 11424                 return return_type_symbol;
 12459                 return return_type_symbol;
 11425                 
 12460                 
 11441 
 12476 
 11442         {
 12477         {
 11443             identifier_c param_name("IN");
 12478             identifier_c param_name("IN");
 11444             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12479             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11445             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12480             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11446             
 12481             symbol_c *IN_type_symbol = NULL;
 11447             /* Get the value from a foo(<param_value>) style call */
 12482             
 11448             if (IN_param_value == NULL)
 12483             /* Get the value from a foo(<param_value>) style call */
 11449               IN_param_value = function_call_param_iterator.next();
 12484             if (IN_param_value == NULL)
 11450             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12485               IN_param_value = function_call_param_iterator.next();
 11451             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12486             if (IN_param_value != NULL) {
 11452             
 12487               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11453             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12488               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12489             }
       
 12490             
       
 12491             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11454             {
 12492             {
 11455         
 12493         
 11456                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 12494                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 11457                 return return_type_symbol;
 12495                 return return_type_symbol;
 11458                 
 12496                 
 11474 
 12512 
 11475         {
 12513         {
 11476             identifier_c param_name("IN");
 12514             identifier_c param_name("IN");
 11477             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12515             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11478             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12516             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11479             
 12517             symbol_c *IN_type_symbol = NULL;
 11480             /* Get the value from a foo(<param_value>) style call */
 12518             
 11481             if (IN_param_value == NULL)
 12519             /* Get the value from a foo(<param_value>) style call */
 11482               IN_param_value = function_call_param_iterator.next();
 12520             if (IN_param_value == NULL)
 11483             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12521               IN_param_value = function_call_param_iterator.next();
 11484             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12522             if (IN_param_value != NULL) {
 11485             
 12523               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11486             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12524               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12525             }
       
 12526             
       
 12527             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11487             {
 12528             {
 11488         
 12529         
 11489                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 12530                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 11490                 return return_type_symbol;
 12531                 return return_type_symbol;
 11491                 
 12532                 
 11507 
 12548 
 11508         {
 12549         {
 11509             identifier_c param_name("IN");
 12550             identifier_c param_name("IN");
 11510             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12551             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11511             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12552             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11512             
 12553             symbol_c *IN_type_symbol = NULL;
 11513             /* Get the value from a foo(<param_value>) style call */
 12554             
 11514             if (IN_param_value == NULL)
 12555             /* Get the value from a foo(<param_value>) style call */
 11515               IN_param_value = function_call_param_iterator.next();
 12556             if (IN_param_value == NULL)
 11516             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12557               IN_param_value = function_call_param_iterator.next();
 11517             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12558             if (IN_param_value != NULL) {
 11518             
 12559               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11519             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12560               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12561             }
       
 12562             
       
 12563             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11520             {
 12564             {
 11521         
 12565         
 11522                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 12566                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 11523                 return return_type_symbol;
 12567                 return return_type_symbol;
 11524                 
 12568                 
 11540 
 12584 
 11541         {
 12585         {
 11542             identifier_c param_name("IN");
 12586             identifier_c param_name("IN");
 11543             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12587             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11544             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12588             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11545             
 12589             symbol_c *IN_type_symbol = NULL;
 11546             /* Get the value from a foo(<param_value>) style call */
 12590             
 11547             if (IN_param_value == NULL)
 12591             /* Get the value from a foo(<param_value>) style call */
 11548               IN_param_value = function_call_param_iterator.next();
 12592             if (IN_param_value == NULL)
 11549             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12593               IN_param_value = function_call_param_iterator.next();
 11550             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12594             if (IN_param_value != NULL) {
 11551             
 12595               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11552             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12596               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12597             }
       
 12598             
       
 12599             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11553             {
 12600             {
 11554         
 12601         
 11555                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 12602                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 11556                 return return_type_symbol;
 12603                 return return_type_symbol;
 11557                 
 12604                 
 11573 
 12620 
 11574         {
 12621         {
 11575             identifier_c param_name("IN");
 12622             identifier_c param_name("IN");
 11576             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12623             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11577             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12624             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11578             
 12625             symbol_c *IN_type_symbol = NULL;
 11579             /* Get the value from a foo(<param_value>) style call */
 12626             
 11580             if (IN_param_value == NULL)
 12627             /* Get the value from a foo(<param_value>) style call */
 11581               IN_param_value = function_call_param_iterator.next();
 12628             if (IN_param_value == NULL)
 11582             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12629               IN_param_value = function_call_param_iterator.next();
 11583             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12630             if (IN_param_value != NULL) {
 11584             
 12631               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11585             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12632               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12633             }
       
 12634             
       
 12635             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11586             {
 12636             {
 11587         
 12637         
 11588                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 12638                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 11589                 return return_type_symbol;
 12639                 return return_type_symbol;
 11590                 
 12640                 
 11606 
 12656 
 11607         {
 12657         {
 11608             identifier_c param_name("IN");
 12658             identifier_c param_name("IN");
 11609             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12659             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11610             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12660             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11611             
 12661             symbol_c *IN_type_symbol = NULL;
 11612             /* Get the value from a foo(<param_value>) style call */
 12662             
 11613             if (IN_param_value == NULL)
 12663             /* Get the value from a foo(<param_value>) style call */
 11614               IN_param_value = function_call_param_iterator.next();
 12664             if (IN_param_value == NULL)
 11615             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12665               IN_param_value = function_call_param_iterator.next();
 11616             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12666             if (IN_param_value != NULL) {
 11617             
 12667               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11618             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12668               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12669             }
       
 12670             
       
 12671             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11619             {
 12672             {
 11620         
 12673         
 11621                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 12674                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 11622                 return return_type_symbol;
 12675                 return return_type_symbol;
 11623                 
 12676                 
 11639 
 12692 
 11640         {
 12693         {
 11641             identifier_c param_name("IN");
 12694             identifier_c param_name("IN");
 11642             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12695             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11643             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12696             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11644             
 12697             symbol_c *IN_type_symbol = NULL;
 11645             /* Get the value from a foo(<param_value>) style call */
 12698             
 11646             if (IN_param_value == NULL)
 12699             /* Get the value from a foo(<param_value>) style call */
 11647               IN_param_value = function_call_param_iterator.next();
 12700             if (IN_param_value == NULL)
 11648             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12701               IN_param_value = function_call_param_iterator.next();
 11649             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12702             if (IN_param_value != NULL) {
 11650             
 12703               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11651             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12704               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12705             }
       
 12706             
       
 12707             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11652             {
 12708             {
 11653         
 12709         
 11654                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 12710                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 11655                 return return_type_symbol;
 12711                 return return_type_symbol;
 11656                 
 12712                 
 11672 
 12728 
 11673         {
 12729         {
 11674             identifier_c param_name("IN");
 12730             identifier_c param_name("IN");
 11675             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12731             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11676             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12732             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11677             
 12733             symbol_c *IN_type_symbol = NULL;
 11678             /* Get the value from a foo(<param_value>) style call */
 12734             
 11679             if (IN_param_value == NULL)
 12735             /* Get the value from a foo(<param_value>) style call */
 11680               IN_param_value = function_call_param_iterator.next();
 12736             if (IN_param_value == NULL)
 11681             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12737               IN_param_value = function_call_param_iterator.next();
 11682             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12738             if (IN_param_value != NULL) {
 11683             
 12739               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11684             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12740               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12741             }
       
 12742             
       
 12743             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11685             {
 12744             {
 11686         
 12745         
 11687                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 12746                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 11688                 return return_type_symbol;
 12747                 return return_type_symbol;
 11689                 
 12748                 
 11705 
 12764 
 11706         {
 12765         {
 11707             identifier_c param_name("IN");
 12766             identifier_c param_name("IN");
 11708             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12767             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11709             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12768             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11710             
 12769             symbol_c *IN_type_symbol = NULL;
 11711             /* Get the value from a foo(<param_value>) style call */
 12770             
 11712             if (IN_param_value == NULL)
 12771             /* Get the value from a foo(<param_value>) style call */
 11713               IN_param_value = function_call_param_iterator.next();
 12772             if (IN_param_value == NULL)
 11714             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12773               IN_param_value = function_call_param_iterator.next();
 11715             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12774             if (IN_param_value != NULL) {
 11716             
 12775               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11717             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12776               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12777             }
       
 12778             
       
 12779             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11718             {
 12780             {
 11719         
 12781         
 11720                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 12782                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 11721                 return return_type_symbol;
 12783                 return return_type_symbol;
 11722                 
 12784                 
 11738 
 12800 
 11739         {
 12801         {
 11740             identifier_c param_name("IN");
 12802             identifier_c param_name("IN");
 11741             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12803             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11742             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12804             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11743             
 12805             symbol_c *IN_type_symbol = NULL;
 11744             /* Get the value from a foo(<param_value>) style call */
 12806             
 11745             if (IN_param_value == NULL)
 12807             /* Get the value from a foo(<param_value>) style call */
 11746               IN_param_value = function_call_param_iterator.next();
 12808             if (IN_param_value == NULL)
 11747             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12809               IN_param_value = function_call_param_iterator.next();
 11748             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12810             if (IN_param_value != NULL) {
 11749             
 12811               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11750             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12812               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12813             }
       
 12814             
       
 12815             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11751             {
 12816             {
 11752         
 12817         
 11753                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 12818                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 11754                 return return_type_symbol;
 12819                 return return_type_symbol;
 11755                 
 12820                 
 11771 
 12836 
 11772         {
 12837         {
 11773             identifier_c param_name("IN");
 12838             identifier_c param_name("IN");
 11774             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12839             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11775             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12840             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11776             
 12841             symbol_c *IN_type_symbol = NULL;
 11777             /* Get the value from a foo(<param_value>) style call */
 12842             
 11778             if (IN_param_value == NULL)
 12843             /* Get the value from a foo(<param_value>) style call */
 11779               IN_param_value = function_call_param_iterator.next();
 12844             if (IN_param_value == NULL)
 11780             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12845               IN_param_value = function_call_param_iterator.next();
 11781             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12846             if (IN_param_value != NULL) {
 11782             
 12847               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11783             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12848               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12849             }
       
 12850             
       
 12851             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11784             {
 12852             {
 11785         
 12853         
 11786                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 12854                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 11787                 return return_type_symbol;
 12855                 return return_type_symbol;
 11788                 
 12856                 
 11804 
 12872 
 11805         {
 12873         {
 11806             identifier_c param_name("IN");
 12874             identifier_c param_name("IN");
 11807             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12875             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11808             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12876             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11809             
 12877             symbol_c *IN_type_symbol = NULL;
 11810             /* Get the value from a foo(<param_value>) style call */
 12878             
 11811             if (IN_param_value == NULL)
 12879             /* Get the value from a foo(<param_value>) style call */
 11812               IN_param_value = function_call_param_iterator.next();
 12880             if (IN_param_value == NULL)
 11813             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12881               IN_param_value = function_call_param_iterator.next();
 11814             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12882             if (IN_param_value != NULL) {
 11815             
 12883               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11816             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12884               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12885             }
       
 12886             
       
 12887             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11817             {
 12888             {
 11818         
 12889         
 11819                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 12890                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 11820                 return return_type_symbol;
 12891                 return return_type_symbol;
 11821                 
 12892                 
 11837 
 12908 
 11838         {
 12909         {
 11839             identifier_c param_name("IN");
 12910             identifier_c param_name("IN");
 11840             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12911             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11841             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12912             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11842             
 12913             symbol_c *IN_type_symbol = NULL;
 11843             /* Get the value from a foo(<param_value>) style call */
 12914             
 11844             if (IN_param_value == NULL)
 12915             /* Get the value from a foo(<param_value>) style call */
 11845               IN_param_value = function_call_param_iterator.next();
 12916             if (IN_param_value == NULL)
 11846             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12917               IN_param_value = function_call_param_iterator.next();
 11847             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12918             if (IN_param_value != NULL) {
 11848             
 12919               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11849             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12920               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12921             }
       
 12922             
       
 12923             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11850             {
 12924             {
 11851         
 12925         
 11852                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 12926                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 11853                 return return_type_symbol;
 12927                 return return_type_symbol;
 11854                 
 12928                 
 11870 
 12944 
 11871         {
 12945         {
 11872             identifier_c param_name("IN");
 12946             identifier_c param_name("IN");
 11873             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12947             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11874             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12948             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11875             
 12949             symbol_c *IN_type_symbol = NULL;
 11876             /* Get the value from a foo(<param_value>) style call */
 12950             
 11877             if (IN_param_value == NULL)
 12951             /* Get the value from a foo(<param_value>) style call */
 11878               IN_param_value = function_call_param_iterator.next();
 12952             if (IN_param_value == NULL)
 11879             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12953               IN_param_value = function_call_param_iterator.next();
 11880             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12954             if (IN_param_value != NULL) {
 11881             
 12955               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11882             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12956               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12957             }
       
 12958             
       
 12959             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11883             {
 12960             {
 11884         
 12961         
 11885                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 12962                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 11886                 return return_type_symbol;
 12963                 return return_type_symbol;
 11887                 
 12964                 
 11903 
 12980 
 11904         {
 12981         {
 11905             identifier_c param_name("IN");
 12982             identifier_c param_name("IN");
 11906             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12983             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11907             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12984             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11908             
 12985             symbol_c *IN_type_symbol = NULL;
 11909             /* Get the value from a foo(<param_value>) style call */
 12986             
 11910             if (IN_param_value == NULL)
 12987             /* Get the value from a foo(<param_value>) style call */
 11911               IN_param_value = function_call_param_iterator.next();
 12988             if (IN_param_value == NULL)
 11912             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12989               IN_param_value = function_call_param_iterator.next();
 11913             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 12990             if (IN_param_value != NULL) {
 11914             
 12991               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11915             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12992               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 12993             }
       
 12994             
       
 12995             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11916             {
 12996             {
 11917         
 12997         
 11918                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 12998                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 11919                 return return_type_symbol;
 12999                 return return_type_symbol;
 11920                 
 13000                 
 11936 
 13016 
 11937         {
 13017         {
 11938             identifier_c param_name("IN");
 13018             identifier_c param_name("IN");
 11939             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13019             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11940             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13020             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11941             
 13021             symbol_c *IN_type_symbol = NULL;
 11942             /* Get the value from a foo(<param_value>) style call */
 13022             
 11943             if (IN_param_value == NULL)
 13023             /* Get the value from a foo(<param_value>) style call */
 11944               IN_param_value = function_call_param_iterator.next();
 13024             if (IN_param_value == NULL)
 11945             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13025               IN_param_value = function_call_param_iterator.next();
 11946             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13026             if (IN_param_value != NULL) {
 11947             
 13027               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11948             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 13028               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13029             }
       
 13030             
       
 13031             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11949             {
 13032             {
 11950         
 13033         
 11951                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 13034                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 11952                 return return_type_symbol;
 13035                 return return_type_symbol;
 11953                 
 13036                 
 11969 
 13052 
 11970         {
 13053         {
 11971             identifier_c param_name("IN");
 13054             identifier_c param_name("IN");
 11972             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13055             /* Get the value from a foo(<param_name> = <param_value>) style call */
 11973             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13056             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 11974             
 13057             symbol_c *IN_type_symbol = NULL;
 11975             /* Get the value from a foo(<param_value>) style call */
 13058             
 11976             if (IN_param_value == NULL)
 13059             /* Get the value from a foo(<param_value>) style call */
 11977               IN_param_value = function_call_param_iterator.next();
 13060             if (IN_param_value == NULL)
 11978             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13061               IN_param_value = function_call_param_iterator.next();
 11979             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13062             if (IN_param_value != NULL) {
 11980             
 13063               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 11981             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 13064               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13065             }
       
 13066             
       
 13067             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 11982             {
 13068             {
 11983         
 13069         
 11984                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 13070                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 11985                 return return_type_symbol;
 13071                 return return_type_symbol;
 11986                 
 13072                 
 12002 
 13088 
 12003         {
 13089         {
 12004             identifier_c param_name("IN");
 13090             identifier_c param_name("IN");
 12005             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13091             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12006             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13092             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12007             
 13093             symbol_c *IN_type_symbol = NULL;
 12008             /* Get the value from a foo(<param_value>) style call */
 13094             
 12009             if (IN_param_value == NULL)
 13095             /* Get the value from a foo(<param_value>) style call */
 12010               IN_param_value = function_call_param_iterator.next();
 13096             if (IN_param_value == NULL)
 12011             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13097               IN_param_value = function_call_param_iterator.next();
 12012             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13098             if (IN_param_value != NULL) {
 12013             
 13099               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12014             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 13100               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13101             }
       
 13102             
       
 13103             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12015             {
 13104             {
 12016         
 13105         
 12017                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 13106                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 12018                 return return_type_symbol;
 13107                 return return_type_symbol;
 12019                 
 13108                 
 12035 
 13124 
 12036         {
 13125         {
 12037             identifier_c param_name("IN");
 13126             identifier_c param_name("IN");
 12038             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13127             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12039             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13128             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12040             
 13129             symbol_c *IN_type_symbol = NULL;
 12041             /* Get the value from a foo(<param_value>) style call */
 13130             
 12042             if (IN_param_value == NULL)
 13131             /* Get the value from a foo(<param_value>) style call */
 12043               IN_param_value = function_call_param_iterator.next();
 13132             if (IN_param_value == NULL)
 12044             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13133               IN_param_value = function_call_param_iterator.next();
 12045             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13134             if (IN_param_value != NULL) {
 12046             
 13135               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12047             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 13136               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13137             }
       
 13138             
       
 13139             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 12048             {
 13140             {
 12049         
 13141         
 12050                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 13142                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 12051                 return return_type_symbol;
 13143                 return return_type_symbol;
 12052                 
 13144                 
 12068 
 13160 
 12069         {
 13161         {
 12070             identifier_c param_name("IN");
 13162             identifier_c param_name("IN");
 12071             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13163             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12072             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13164             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12073             
 13165             symbol_c *IN_type_symbol = NULL;
 12074             /* Get the value from a foo(<param_value>) style call */
 13166             
 12075             if (IN_param_value == NULL)
 13167             /* Get the value from a foo(<param_value>) style call */
 12076               IN_param_value = function_call_param_iterator.next();
 13168             if (IN_param_value == NULL)
 12077             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13169               IN_param_value = function_call_param_iterator.next();
 12078             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13170             if (IN_param_value != NULL) {
 12079             
 13171               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12080             if(search_expression_type->is_real_type(IN_type_symbol))
 13172               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13173             }
       
 13174             
       
 13175             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 12081             {
 13176             {
 12082         
 13177         
 12083                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 13178                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 12084                 return return_type_symbol;
 13179                 return return_type_symbol;
 12085                 
 13180                 
 12101 
 13196 
 12102         {
 13197         {
 12103             identifier_c param_name("IN");
 13198             identifier_c param_name("IN");
 12104             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13199             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12105             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13200             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12106             
 13201             symbol_c *IN_type_symbol = NULL;
 12107             /* Get the value from a foo(<param_value>) style call */
 13202             
 12108             if (IN_param_value == NULL)
 13203             /* Get the value from a foo(<param_value>) style call */
 12109               IN_param_value = function_call_param_iterator.next();
 13204             if (IN_param_value == NULL)
 12110             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13205               IN_param_value = function_call_param_iterator.next();
 12111             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13206             if (IN_param_value != NULL) {
 12112             
 13207               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12113             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 13208               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13209             }
       
 13210             
       
 13211             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 12114             {
 13212             {
 12115         
 13213         
 12116                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 13214                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 12117                 return return_type_symbol;
 13215                 return return_type_symbol;
 12118                 
 13216                 
 12134 
 13232 
 12135         {
 13233         {
 12136             identifier_c param_name("IN");
 13234             identifier_c param_name("IN");
 12137             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13235             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12138             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13236             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12139             
 13237             symbol_c *IN_type_symbol = NULL;
 12140             /* Get the value from a foo(<param_value>) style call */
 13238             
 12141             if (IN_param_value == NULL)
 13239             /* Get the value from a foo(<param_value>) style call */
 12142               IN_param_value = function_call_param_iterator.next();
 13240             if (IN_param_value == NULL)
 12143             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13241               IN_param_value = function_call_param_iterator.next();
 12144             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13242             if (IN_param_value != NULL) {
 12145             
 13243               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12146             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 13244               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13245             }
       
 13246             
       
 13247             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 12147             {
 13248             {
 12148         
 13249         
 12149                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 13250                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 12150                 return return_type_symbol;
 13251                 return return_type_symbol;
 12151                 
 13252                 
 12167 
 13268 
 12168         {
 13269         {
 12169             identifier_c param_name("IN");
 13270             identifier_c param_name("IN");
 12170             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13271             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12171             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13272             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12172             
 13273             symbol_c *IN_type_symbol = NULL;
 12173             /* Get the value from a foo(<param_value>) style call */
 13274             
 12174             if (IN_param_value == NULL)
 13275             /* Get the value from a foo(<param_value>) style call */
 12175               IN_param_value = function_call_param_iterator.next();
 13276             if (IN_param_value == NULL)
 12176             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13277               IN_param_value = function_call_param_iterator.next();
 12177             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13278             if (IN_param_value != NULL) {
 12178             
 13279               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12179             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 13280               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13281             }
       
 13282             
       
 13283             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 12180             {
 13284             {
 12181         
 13285         
 12182                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 13286                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 12183                 return return_type_symbol;
 13287                 return return_type_symbol;
 12184                 
 13288                 
 12200 
 13304 
 12201         {
 13305         {
 12202             identifier_c param_name("IN");
 13306             identifier_c param_name("IN");
 12203             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13307             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12204             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13308             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12205             
 13309             symbol_c *IN_type_symbol = NULL;
 12206             /* Get the value from a foo(<param_value>) style call */
 13310             
 12207             if (IN_param_value == NULL)
 13311             /* Get the value from a foo(<param_value>) style call */
 12208               IN_param_value = function_call_param_iterator.next();
 13312             if (IN_param_value == NULL)
 12209             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13313               IN_param_value = function_call_param_iterator.next();
 12210             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13314             if (IN_param_value != NULL) {
 12211             
 13315               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12212             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 13316               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13317             }
       
 13318             
       
 13319             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 12213             {
 13320             {
 12214         
 13321         
 12215                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 13322                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 12216                 return return_type_symbol;
 13323                 return return_type_symbol;
 12217                 
 13324                 
 12233 
 13340 
 12234         {
 13341         {
 12235             identifier_c param_name("IN");
 13342             identifier_c param_name("IN");
 12236             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13343             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12237             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13344             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12238             
 13345             symbol_c *IN_type_symbol = NULL;
 12239             /* Get the value from a foo(<param_value>) style call */
 13346             
 12240             if (IN_param_value == NULL)
 13347             /* Get the value from a foo(<param_value>) style call */
 12241               IN_param_value = function_call_param_iterator.next();
 13348             if (IN_param_value == NULL)
 12242             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13349               IN_param_value = function_call_param_iterator.next();
 12243             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13350             if (IN_param_value != NULL) {
 12244             
 13351               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12245             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 13352               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13353             }
       
 13354             
       
 13355             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 12246             {
 13356             {
 12247         
 13357         
 12248                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 13358                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 12249                 return return_type_symbol;
 13359                 return return_type_symbol;
 12250                 
 13360                 
 12266 
 13376 
 12267         {
 13377         {
 12268             identifier_c param_name("IN");
 13378             identifier_c param_name("IN");
 12269             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13379             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12270             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13380             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12271             
 13381             symbol_c *IN_type_symbol = NULL;
 12272             /* Get the value from a foo(<param_value>) style call */
 13382             
 12273             if (IN_param_value == NULL)
 13383             /* Get the value from a foo(<param_value>) style call */
 12274               IN_param_value = function_call_param_iterator.next();
 13384             if (IN_param_value == NULL)
 12275             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13385               IN_param_value = function_call_param_iterator.next();
 12276             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13386             if (IN_param_value != NULL) {
 12277             
 13387               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12278             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 13388               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13389             }
       
 13390             
       
 13391             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 12279             {
 13392             {
 12280         
 13393         
 12281                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 13394                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 12282                 return return_type_symbol;
 13395                 return return_type_symbol;
 12283                 
 13396                 
 12299 
 13412 
 12300         {
 13413         {
 12301             identifier_c param_name("IN");
 13414             identifier_c param_name("IN");
 12302             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13415             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12303             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13416             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12304             
 13417             symbol_c *IN_type_symbol = NULL;
 12305             /* Get the value from a foo(<param_value>) style call */
 13418             
 12306             if (IN_param_value == NULL)
 13419             /* Get the value from a foo(<param_value>) style call */
 12307               IN_param_value = function_call_param_iterator.next();
 13420             if (IN_param_value == NULL)
 12308             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13421               IN_param_value = function_call_param_iterator.next();
 12309             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13422             if (IN_param_value != NULL) {
 12310             
 13423               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12311             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 13424               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13425             }
       
 13426             
       
 13427             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 12312             {
 13428             {
 12313         
 13429         
 12314                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 13430                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 12315                 return return_type_symbol;
 13431                 return return_type_symbol;
 12316                 
 13432                 
 12332 
 13448 
 12333         {
 13449         {
 12334             identifier_c param_name("IN");
 13450             identifier_c param_name("IN");
 12335             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13451             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12336             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13452             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12337             
 13453             symbol_c *IN_type_symbol = NULL;
 12338             /* Get the value from a foo(<param_value>) style call */
 13454             
 12339             if (IN_param_value == NULL)
 13455             /* Get the value from a foo(<param_value>) style call */
 12340               IN_param_value = function_call_param_iterator.next();
 13456             if (IN_param_value == NULL)
 12341             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13457               IN_param_value = function_call_param_iterator.next();
 12342             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13458             if (IN_param_value != NULL) {
 12343             
 13459               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12344             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 13460               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13461             }
       
 13462             
       
 13463             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 12345             {
 13464             {
 12346         
 13465         
 12347                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 13466                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 12348                 return return_type_symbol;
 13467                 return return_type_symbol;
 12349                 
 13468                 
 12365 
 13484 
 12366         {
 13485         {
 12367             identifier_c param_name("IN");
 13486             identifier_c param_name("IN");
 12368             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13487             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12369             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13488             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12370             
 13489             symbol_c *IN_type_symbol = NULL;
 12371             /* Get the value from a foo(<param_value>) style call */
 13490             
 12372             if (IN_param_value == NULL)
 13491             /* Get the value from a foo(<param_value>) style call */
 12373               IN_param_value = function_call_param_iterator.next();
 13492             if (IN_param_value == NULL)
 12374             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13493               IN_param_value = function_call_param_iterator.next();
 12375             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13494             if (IN_param_value != NULL) {
 12376             
 13495               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12377             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 13496               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13497             }
       
 13498             
       
 13499             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 12378             {
 13500             {
 12379         
 13501         
 12380                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 13502                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 12381                 return return_type_symbol;
 13503                 return return_type_symbol;
 12382                 
 13504                 
 12398 
 13520 
 12399         {
 13521         {
 12400             identifier_c param_name("IN");
 13522             identifier_c param_name("IN");
 12401             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13523             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12402             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13524             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12403             
 13525             symbol_c *IN_type_symbol = NULL;
 12404             /* Get the value from a foo(<param_value>) style call */
 13526             
 12405             if (IN_param_value == NULL)
 13527             /* Get the value from a foo(<param_value>) style call */
 12406               IN_param_value = function_call_param_iterator.next();
 13528             if (IN_param_value == NULL)
 12407             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13529               IN_param_value = function_call_param_iterator.next();
 12408             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13530             if (IN_param_value != NULL) {
 12409             
 13531               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12410             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 13532               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13533             }
       
 13534             
       
 13535             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 12411             {
 13536             {
 12412         
 13537         
 12413                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 13538                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 12414                 return return_type_symbol;
 13539                 return return_type_symbol;
 12415                 
 13540                 
 12431 
 13556 
 12432         {
 13557         {
 12433             identifier_c param_name("IN");
 13558             identifier_c param_name("IN");
 12434             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13559             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12435             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13560             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12436             
 13561             symbol_c *IN_type_symbol = NULL;
 12437             /* Get the value from a foo(<param_value>) style call */
 13562             
 12438             if (IN_param_value == NULL)
 13563             /* Get the value from a foo(<param_value>) style call */
 12439               IN_param_value = function_call_param_iterator.next();
 13564             if (IN_param_value == NULL)
 12440             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13565               IN_param_value = function_call_param_iterator.next();
 12441             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13566             if (IN_param_value != NULL) {
 12442             
 13567               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12443             if(search_expression_type->is_num_type(IN_type_symbol))
 13568               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13569             }
       
 13570             
       
 13571             if(IN_type_symbol == NULL || search_expression_type->is_num_type(IN_type_symbol))
 12444             {
 13572             {
 12445         
 13573         
 12446                 symbol_c * return_type_symbol = IN_type_symbol;
 13574                 symbol_c * return_type_symbol = IN_type_symbol;
 12447                 return return_type_symbol;
 13575                 return return_type_symbol;
 12448                 
 13576                 
 12464 
 13592 
 12465         {
 13593         {
 12466             identifier_c param_name("IN");
 13594             identifier_c param_name("IN");
 12467             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13595             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12468             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13596             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12469             
 13597             symbol_c *IN_type_symbol = NULL;
 12470             /* Get the value from a foo(<param_value>) style call */
 13598             
 12471             if (IN_param_value == NULL)
 13599             /* Get the value from a foo(<param_value>) style call */
 12472               IN_param_value = function_call_param_iterator.next();
 13600             if (IN_param_value == NULL)
 12473             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13601               IN_param_value = function_call_param_iterator.next();
 12474             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13602             if (IN_param_value != NULL) {
 12475             
 13603               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12476             if(search_expression_type->is_real_type(IN_type_symbol))
 13604               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13605             }
       
 13606             
       
 13607             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 12477             {
 13608             {
 12478         
 13609         
 12479                 symbol_c * return_type_symbol = IN_type_symbol;
 13610                 symbol_c * return_type_symbol = IN_type_symbol;
 12480                 return return_type_symbol;
 13611                 return return_type_symbol;
 12481                 
 13612                 
 12497 
 13628 
 12498         {
 13629         {
 12499             identifier_c param_name("IN");
 13630             identifier_c param_name("IN");
 12500             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13631             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12501             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13632             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12502             
 13633             symbol_c *IN_type_symbol = NULL;
 12503             /* Get the value from a foo(<param_value>) style call */
 13634             
 12504             if (IN_param_value == NULL)
 13635             /* Get the value from a foo(<param_value>) style call */
 12505               IN_param_value = function_call_param_iterator.next();
 13636             if (IN_param_value == NULL)
 12506             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13637               IN_param_value = function_call_param_iterator.next();
 12507             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13638             if (IN_param_value != NULL) {
 12508             
 13639               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12509             if(search_expression_type->is_real_type(IN_type_symbol))
 13640               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13641             }
       
 13642             
       
 13643             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 12510             {
 13644             {
 12511         
 13645         
 12512                 symbol_c * return_type_symbol = IN_type_symbol;
 13646                 symbol_c * return_type_symbol = IN_type_symbol;
 12513                 return return_type_symbol;
 13647                 return return_type_symbol;
 12514                 
 13648                 
 12530 
 13664 
 12531         {
 13665         {
 12532             identifier_c param_name("IN");
 13666             identifier_c param_name("IN");
 12533             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13667             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12534             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13668             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12535             
 13669             symbol_c *IN_type_symbol = NULL;
 12536             /* Get the value from a foo(<param_value>) style call */
 13670             
 12537             if (IN_param_value == NULL)
 13671             /* Get the value from a foo(<param_value>) style call */
 12538               IN_param_value = function_call_param_iterator.next();
 13672             if (IN_param_value == NULL)
 12539             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13673               IN_param_value = function_call_param_iterator.next();
 12540             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13674             if (IN_param_value != NULL) {
 12541             
 13675               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12542             if(search_expression_type->is_real_type(IN_type_symbol))
 13676               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13677             }
       
 13678             
       
 13679             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 12543             {
 13680             {
 12544         
 13681         
 12545                 symbol_c * return_type_symbol = IN_type_symbol;
 13682                 symbol_c * return_type_symbol = IN_type_symbol;
 12546                 return return_type_symbol;
 13683                 return return_type_symbol;
 12547                 
 13684                 
 12563 
 13700 
 12564         {
 13701         {
 12565             identifier_c param_name("IN");
 13702             identifier_c param_name("IN");
 12566             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13703             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12567             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13704             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12568             
 13705             symbol_c *IN_type_symbol = NULL;
 12569             /* Get the value from a foo(<param_value>) style call */
 13706             
 12570             if (IN_param_value == NULL)
 13707             /* Get the value from a foo(<param_value>) style call */
 12571               IN_param_value = function_call_param_iterator.next();
 13708             if (IN_param_value == NULL)
 12572             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13709               IN_param_value = function_call_param_iterator.next();
 12573             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13710             if (IN_param_value != NULL) {
 12574             
 13711               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12575             if(search_expression_type->is_real_type(IN_type_symbol))
 13712               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13713             }
       
 13714             
       
 13715             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 12576             {
 13716             {
 12577         
 13717         
 12578                 symbol_c * return_type_symbol = IN_type_symbol;
 13718                 symbol_c * return_type_symbol = IN_type_symbol;
 12579                 return return_type_symbol;
 13719                 return return_type_symbol;
 12580                 
 13720                 
 12596 
 13736 
 12597         {
 13737         {
 12598             identifier_c param_name("IN");
 13738             identifier_c param_name("IN");
 12599             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13739             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12600             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13740             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12601             
 13741             symbol_c *IN_type_symbol = NULL;
 12602             /* Get the value from a foo(<param_value>) style call */
 13742             
 12603             if (IN_param_value == NULL)
 13743             /* Get the value from a foo(<param_value>) style call */
 12604               IN_param_value = function_call_param_iterator.next();
 13744             if (IN_param_value == NULL)
 12605             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13745               IN_param_value = function_call_param_iterator.next();
 12606             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13746             if (IN_param_value != NULL) {
 12607             
 13747               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12608             if(search_expression_type->is_real_type(IN_type_symbol))
 13748               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13749             }
       
 13750             
       
 13751             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 12609             {
 13752             {
 12610         
 13753         
 12611                 symbol_c * return_type_symbol = IN_type_symbol;
 13754                 symbol_c * return_type_symbol = IN_type_symbol;
 12612                 return return_type_symbol;
 13755                 return return_type_symbol;
 12613                 
 13756                 
 12629 
 13772 
 12630         {
 13773         {
 12631             identifier_c param_name("IN");
 13774             identifier_c param_name("IN");
 12632             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13775             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12633             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13776             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12634             
 13777             symbol_c *IN_type_symbol = NULL;
 12635             /* Get the value from a foo(<param_value>) style call */
 13778             
 12636             if (IN_param_value == NULL)
 13779             /* Get the value from a foo(<param_value>) style call */
 12637               IN_param_value = function_call_param_iterator.next();
 13780             if (IN_param_value == NULL)
 12638             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13781               IN_param_value = function_call_param_iterator.next();
 12639             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13782             if (IN_param_value != NULL) {
 12640             
 13783               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12641             if(search_expression_type->is_real_type(IN_type_symbol))
 13784               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13785             }
       
 13786             
       
 13787             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 12642             {
 13788             {
 12643         
 13789         
 12644                 symbol_c * return_type_symbol = IN_type_symbol;
 13790                 symbol_c * return_type_symbol = IN_type_symbol;
 12645                 return return_type_symbol;
 13791                 return return_type_symbol;
 12646                 
 13792                 
 12662 
 13808 
 12663         {
 13809         {
 12664             identifier_c param_name("IN");
 13810             identifier_c param_name("IN");
 12665             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13811             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12666             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13812             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12667             
 13813             symbol_c *IN_type_symbol = NULL;
 12668             /* Get the value from a foo(<param_value>) style call */
 13814             
 12669             if (IN_param_value == NULL)
 13815             /* Get the value from a foo(<param_value>) style call */
 12670               IN_param_value = function_call_param_iterator.next();
 13816             if (IN_param_value == NULL)
 12671             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13817               IN_param_value = function_call_param_iterator.next();
 12672             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13818             if (IN_param_value != NULL) {
 12673             
 13819               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12674             if(search_expression_type->is_real_type(IN_type_symbol))
 13820               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13821             }
       
 13822             
       
 13823             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 12675             {
 13824             {
 12676         
 13825         
 12677                 symbol_c * return_type_symbol = IN_type_symbol;
 13826                 symbol_c * return_type_symbol = IN_type_symbol;
 12678                 return return_type_symbol;
 13827                 return return_type_symbol;
 12679                 
 13828                 
 12695 
 13844 
 12696         {
 13845         {
 12697             identifier_c param_name("IN");
 13846             identifier_c param_name("IN");
 12698             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13847             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12699             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13848             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12700             
 13849             symbol_c *IN_type_symbol = NULL;
 12701             /* Get the value from a foo(<param_value>) style call */
 13850             
 12702             if (IN_param_value == NULL)
 13851             /* Get the value from a foo(<param_value>) style call */
 12703               IN_param_value = function_call_param_iterator.next();
 13852             if (IN_param_value == NULL)
 12704             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13853               IN_param_value = function_call_param_iterator.next();
 12705             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13854             if (IN_param_value != NULL) {
 12706             
 13855               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12707             if(search_expression_type->is_real_type(IN_type_symbol))
 13856               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13857             }
       
 13858             
       
 13859             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 12708             {
 13860             {
 12709         
 13861         
 12710                 symbol_c * return_type_symbol = IN_type_symbol;
 13862                 symbol_c * return_type_symbol = IN_type_symbol;
 12711                 return return_type_symbol;
 13863                 return return_type_symbol;
 12712                 
 13864                 
 12728 
 13880 
 12729         {
 13881         {
 12730             identifier_c param_name("IN");
 13882             identifier_c param_name("IN");
 12731             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13883             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12732             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13884             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12733             
 13885             symbol_c *IN_type_symbol = NULL;
 12734             /* Get the value from a foo(<param_value>) style call */
 13886             
 12735             if (IN_param_value == NULL)
 13887             /* Get the value from a foo(<param_value>) style call */
 12736               IN_param_value = function_call_param_iterator.next();
 13888             if (IN_param_value == NULL)
 12737             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13889               IN_param_value = function_call_param_iterator.next();
 12738             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13890             if (IN_param_value != NULL) {
 12739             
 13891               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12740             if(search_expression_type->is_real_type(IN_type_symbol))
 13892               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13893             }
       
 13894             
       
 13895             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 12741             {
 13896             {
 12742         
 13897         
 12743                 symbol_c * return_type_symbol = IN_type_symbol;
 13898                 symbol_c * return_type_symbol = IN_type_symbol;
 12744                 return return_type_symbol;
 13899                 return return_type_symbol;
 12745                 
 13900                 
 12761 
 13916 
 12762         {
 13917         {
 12763             identifier_c param_name("IN");
 13918             identifier_c param_name("IN");
 12764             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13919             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12765             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13920             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 12766             
 13921             symbol_c *IN_type_symbol = NULL;
 12767             /* Get the value from a foo(<param_value>) style call */
 13922             
 12768             if (IN_param_value == NULL)
 13923             /* Get the value from a foo(<param_value>) style call */
 12769               IN_param_value = function_call_param_iterator.next();
 13924             if (IN_param_value == NULL)
 12770             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13925               IN_param_value = function_call_param_iterator.next();
 12771             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 13926             if (IN_param_value != NULL) {
 12772             
 13927               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 12773             if(search_expression_type->is_real_type(IN_type_symbol))
 13928               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 13929             }
       
 13930             
       
 13931             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 12774             {
 13932             {
 12775         
 13933         
 12776                 symbol_c * return_type_symbol = IN_type_symbol;
 13934                 symbol_c * return_type_symbol = IN_type_symbol;
 12777                 return return_type_symbol;
 13935                 return return_type_symbol;
 12778                 
 13936                 
 12794 
 13952 
 12795         {
 13953         {
 12796             identifier_c param_name("IN1");
 13954             identifier_c param_name("IN1");
 12797             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13955             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12798             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 13956             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 13957             symbol_c *IN1_type_symbol = NULL;
 12799             
 13958             
 12800             /* Get the value from a foo(<param_value>) style call */
 13959             /* Get the value from a foo(<param_value>) style call */
 12801             if (IN1_param_value == NULL)
 13960             if (IN1_param_value == NULL)
 12802               IN1_param_value = function_call_param_iterator.next();
 13961               IN1_param_value = function_call_param_iterator.next();
 12803             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 13962             if (IN1_param_value != NULL) {
 12804             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 13963               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 12805             
 13964               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 12806             if(search_expression_type->is_num_type(IN1_type_symbol))
 13965             }
       
 13966             
       
 13967             if(IN1_type_symbol == NULL || search_expression_type->is_num_type(IN1_type_symbol))
 12807             {
 13968             {
 12808         
 13969         
 12809                 {
 13970                 {
 12810                     identifier_c param_name("IN2");
 13971                     identifier_c param_name("IN2");
 12811                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13972                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 12812                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 13973                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 13974                     symbol_c *IN2_type_symbol = NULL;
 12813                     
 13975                     
 12814                     /* Get the value from a foo(<param_value>) style call */
 13976                     /* Get the value from a foo(<param_value>) style call */
 12815                     if (IN2_param_value == NULL)
 13977                     if (IN2_param_value == NULL)
 12816                       IN2_param_value = function_call_param_iterator.next();
 13978                       IN2_param_value = function_call_param_iterator.next();
 12817                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 13979                     if (IN2_param_value != NULL) {
 12818                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 13980                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 12819                     
 13981                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 12820                     if(search_expression_type->is_num_type(IN2_type_symbol))
 13982                     }
       
 13983                     
       
 13984                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 12821                     {
 13985                     {
 12822                 
 13986                 
 12823                         symbol_c * return_type_symbol = last_type_symbol;
 13987                         symbol_c * return_type_symbol = last_type_symbol;
 12824                         return return_type_symbol;
 13988                         return return_type_symbol;
 12825                         
 13989                         
 12829                     ERROR;
 13993                     ERROR;
 12830                 }
 13994                 }
 12831                 
 13995                 
 12832             }
 13996             }
 12833             
 13997             
 12834             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 13998             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 12835             {
 13999             {
 12836         
 14000         
 12837                 {
 14001                 {
 12838                     identifier_c param_name("IN2");
 14002                     identifier_c param_name("IN2");
 12839                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14003                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 12840                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14004                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14005                     symbol_c *IN2_type_symbol = NULL;
 12841                     
 14006                     
 12842                     /* Get the value from a foo(<param_value>) style call */
 14007                     /* Get the value from a foo(<param_value>) style call */
 12843                     if (IN2_param_value == NULL)
 14008                     if (IN2_param_value == NULL)
 12844                       IN2_param_value = function_call_param_iterator.next();
 14009                       IN2_param_value = function_call_param_iterator.next();
 12845                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14010                     if (IN2_param_value != NULL) {
 12846                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14011                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 12847                     
 14012                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 12848                     if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 14013                     }
       
 14014                     
       
 14015                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12849                     {
 14016                     {
 12850                 
 14017                 
 12851                         symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 14018                         symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 12852                         return return_type_symbol;
 14019                         return return_type_symbol;
 12853                         
 14020                         
 12857                     ERROR;
 14024                     ERROR;
 12858                 }
 14025                 }
 12859                 
 14026                 
 12860             }
 14027             }
 12861             
 14028             
 12862             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 14029             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 12863             {
 14030             {
 12864         
 14031         
 12865                 {
 14032                 {
 12866                     identifier_c param_name("IN2");
 14033                     identifier_c param_name("IN2");
 12867                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14034                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 12868                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14035                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14036                     symbol_c *IN2_type_symbol = NULL;
 12869                     
 14037                     
 12870                     /* Get the value from a foo(<param_value>) style call */
 14038                     /* Get the value from a foo(<param_value>) style call */
 12871                     if (IN2_param_value == NULL)
 14039                     if (IN2_param_value == NULL)
 12872                       IN2_param_value = function_call_param_iterator.next();
 14040                       IN2_param_value = function_call_param_iterator.next();
 12873                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14041                     if (IN2_param_value != NULL) {
 12874                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14042                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 12875                     
 14043                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 12876                     if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 14044                     }
       
 14045                     
       
 14046                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12877                     {
 14047                     {
 12878                 
 14048                 
 12879                         symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 14049                         symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 12880                         return return_type_symbol;
 14050                         return return_type_symbol;
 12881                         
 14051                         
 12885                     ERROR;
 14055                     ERROR;
 12886                 }
 14056                 }
 12887                 
 14057                 
 12888             }
 14058             }
 12889             
 14059             
 12890             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 14060             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12891             {
 14061             {
 12892         
 14062         
 12893                 {
 14063                 {
 12894                     identifier_c param_name("IN2");
 14064                     identifier_c param_name("IN2");
 12895                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14065                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 12896                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14066                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14067                     symbol_c *IN2_type_symbol = NULL;
 12897                     
 14068                     
 12898                     /* Get the value from a foo(<param_value>) style call */
 14069                     /* Get the value from a foo(<param_value>) style call */
 12899                     if (IN2_param_value == NULL)
 14070                     if (IN2_param_value == NULL)
 12900                       IN2_param_value = function_call_param_iterator.next();
 14071                       IN2_param_value = function_call_param_iterator.next();
 12901                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14072                     if (IN2_param_value != NULL) {
 12902                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14073                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 12903                     
 14074                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 12904                     if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 14075                     }
       
 14076                     
       
 14077                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12905                     {
 14078                     {
 12906                 
 14079                 
 12907                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 14080                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 12908                         return return_type_symbol;
 14081                         return return_type_symbol;
 12909                         
 14082                         
 12931 
 14104 
 12932         {
 14105         {
 12933             identifier_c param_name("IN1");
 14106             identifier_c param_name("IN1");
 12934             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14107             /* Get the value from a foo(<param_name> = <param_value>) style call */
 12935             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 14108             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 14109             symbol_c *IN1_type_symbol = NULL;
 12936             
 14110             
 12937             /* Get the value from a foo(<param_value>) style call */
 14111             /* Get the value from a foo(<param_value>) style call */
 12938             if (IN1_param_value == NULL)
 14112             if (IN1_param_value == NULL)
 12939               IN1_param_value = function_call_param_iterator.next();
 14113               IN1_param_value = function_call_param_iterator.next();
 12940             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 14114             if (IN1_param_value != NULL) {
 12941             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 14115               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 12942             
 14116               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 12943             if(search_expression_type->is_num_type(IN1_type_symbol))
 14117             }
       
 14118             
       
 14119             if(IN1_type_symbol == NULL || search_expression_type->is_num_type(IN1_type_symbol))
 12944             {
 14120             {
 12945         
 14121         
 12946                 {
 14122                 {
 12947                     identifier_c param_name("IN2");
 14123                     identifier_c param_name("IN2");
 12948                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14124                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 12949                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14125                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14126                     symbol_c *IN2_type_symbol = NULL;
 12950                     
 14127                     
 12951                     /* Get the value from a foo(<param_value>) style call */
 14128                     /* Get the value from a foo(<param_value>) style call */
 12952                     if (IN2_param_value == NULL)
 14129                     if (IN2_param_value == NULL)
 12953                       IN2_param_value = function_call_param_iterator.next();
 14130                       IN2_param_value = function_call_param_iterator.next();
 12954                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14131                     if (IN2_param_value != NULL) {
 12955                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14132                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 12956                     
 14133                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 12957                     if(search_expression_type->is_num_type(IN2_type_symbol))
 14134                     }
       
 14135                     
       
 14136                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 12958                     {
 14137                     {
 12959                 
 14138                 
 12960                         symbol_c * return_type_symbol = last_type_symbol;
 14139                         symbol_c * return_type_symbol = last_type_symbol;
 12961                         return return_type_symbol;
 14140                         return return_type_symbol;
 12962                         
 14141                         
 12966                     ERROR;
 14145                     ERROR;
 12967                 }
 14146                 }
 12968                 
 14147                 
 12969             }
 14148             }
 12970             
 14149             
 12971             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 14150             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 12972             {
 14151             {
 12973         
 14152         
 12974                 {
 14153                 {
 12975                     identifier_c param_name("IN2");
 14154                     identifier_c param_name("IN2");
 12976                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14155                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 12977                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14156                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14157                     symbol_c *IN2_type_symbol = NULL;
 12978                     
 14158                     
 12979                     /* Get the value from a foo(<param_value>) style call */
 14159                     /* Get the value from a foo(<param_value>) style call */
 12980                     if (IN2_param_value == NULL)
 14160                     if (IN2_param_value == NULL)
 12981                       IN2_param_value = function_call_param_iterator.next();
 14161                       IN2_param_value = function_call_param_iterator.next();
 12982                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14162                     if (IN2_param_value != NULL) {
 12983                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14163                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 12984                     
 14164                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 12985                     if(search_expression_type->is_num_type(IN2_type_symbol))
 14165                     }
       
 14166                     
       
 14167                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 12986                     {
 14168                     {
 12987                 
 14169                 
 12988                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 14170                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 12989                         return return_type_symbol;
 14171                         return return_type_symbol;
 12990                         
 14172                         
 13012 
 14194 
 13013         {
 14195         {
 13014             identifier_c param_name("IN1");
 14196             identifier_c param_name("IN1");
 13015             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14197             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13016             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 14198             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 14199             symbol_c *IN1_type_symbol = NULL;
 13017             
 14200             
 13018             /* Get the value from a foo(<param_value>) style call */
 14201             /* Get the value from a foo(<param_value>) style call */
 13019             if (IN1_param_value == NULL)
 14202             if (IN1_param_value == NULL)
 13020               IN1_param_value = function_call_param_iterator.next();
 14203               IN1_param_value = function_call_param_iterator.next();
 13021             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 14204             if (IN1_param_value != NULL) {
 13022             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 14205               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 13023             
 14206               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 13024             if(search_expression_type->is_num_type(IN1_type_symbol))
 14207             }
       
 14208             
       
 14209             if(IN1_type_symbol == NULL || search_expression_type->is_num_type(IN1_type_symbol))
 13025             {
 14210             {
 13026         
 14211         
 13027                 {
 14212                 {
 13028                     identifier_c param_name("IN2");
 14213                     identifier_c param_name("IN2");
 13029                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14214                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13030                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14215                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14216                     symbol_c *IN2_type_symbol = NULL;
 13031                     
 14217                     
 13032                     /* Get the value from a foo(<param_value>) style call */
 14218                     /* Get the value from a foo(<param_value>) style call */
 13033                     if (IN2_param_value == NULL)
 14219                     if (IN2_param_value == NULL)
 13034                       IN2_param_value = function_call_param_iterator.next();
 14220                       IN2_param_value = function_call_param_iterator.next();
 13035                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14221                     if (IN2_param_value != NULL) {
 13036                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14222                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 13037                     
 14223                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 13038                     if(search_expression_type->is_num_type(IN2_type_symbol))
 14224                     }
       
 14225                     
       
 14226                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 13039                     {
 14227                     {
 13040                 
 14228                 
 13041                         symbol_c * return_type_symbol = last_type_symbol;
 14229                         symbol_c * return_type_symbol = last_type_symbol;
 13042                         return return_type_symbol;
 14230                         return return_type_symbol;
 13043                         
 14231                         
 13047                     ERROR;
 14235                     ERROR;
 13048                 }
 14236                 }
 13049                 
 14237                 
 13050             }
 14238             }
 13051             
 14239             
 13052             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 14240             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 13053             {
 14241             {
 13054         
 14242         
 13055                 {
 14243                 {
 13056                     identifier_c param_name("IN2");
 14244                     identifier_c param_name("IN2");
 13057                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14245                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13058                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14246                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14247                     symbol_c *IN2_type_symbol = NULL;
 13059                     
 14248                     
 13060                     /* Get the value from a foo(<param_value>) style call */
 14249                     /* Get the value from a foo(<param_value>) style call */
 13061                     if (IN2_param_value == NULL)
 14250                     if (IN2_param_value == NULL)
 13062                       IN2_param_value = function_call_param_iterator.next();
 14251                       IN2_param_value = function_call_param_iterator.next();
 13063                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14252                     if (IN2_param_value != NULL) {
 13064                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14253                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 13065                     
 14254                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 13066                     if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 14255                     }
       
 14256                     
       
 14257                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 13067                     {
 14258                     {
 13068                 
 14259                 
 13069                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 14260                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 13070                         return return_type_symbol;
 14261                         return return_type_symbol;
 13071                         
 14262                         
 13075                     ERROR;
 14266                     ERROR;
 13076                 }
 14267                 }
 13077                 
 14268                 
 13078             }
 14269             }
 13079             
 14270             
 13080             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 14271             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 13081             {
 14272             {
 13082         
 14273         
 13083                 {
 14274                 {
 13084                     identifier_c param_name("IN2");
 14275                     identifier_c param_name("IN2");
 13085                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14276                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13086                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14277                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14278                     symbol_c *IN2_type_symbol = NULL;
 13087                     
 14279                     
 13088                     /* Get the value from a foo(<param_value>) style call */
 14280                     /* Get the value from a foo(<param_value>) style call */
 13089                     if (IN2_param_value == NULL)
 14281                     if (IN2_param_value == NULL)
 13090                       IN2_param_value = function_call_param_iterator.next();
 14282                       IN2_param_value = function_call_param_iterator.next();
 13091                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14283                     if (IN2_param_value != NULL) {
 13092                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14284                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 13093                     
 14285                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 13094                     if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 14286                     }
       
 14287                     
       
 14288                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 13095                     {
 14289                     {
 13096                 
 14290                 
 13097                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 14291                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 13098                         return return_type_symbol;
 14292                         return return_type_symbol;
 13099                         
 14293                         
 13100                     }
 14294                     }
 13101                     
 14295                     
 13102                     if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 14296                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 13103                     {
 14297                     {
 13104                 
 14298                 
 13105                         symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 14299                         symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 13106                         return return_type_symbol;
 14300                         return return_type_symbol;
 13107                         
 14301                         
 13111                     ERROR;
 14305                     ERROR;
 13112                 }
 14306                 }
 13113                 
 14307                 
 13114             }
 14308             }
 13115             
 14309             
 13116             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 14310             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 13117             {
 14311             {
 13118         
 14312         
 13119                 {
 14313                 {
 13120                     identifier_c param_name("IN2");
 14314                     identifier_c param_name("IN2");
 13121                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14315                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13122                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14316                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14317                     symbol_c *IN2_type_symbol = NULL;
 13123                     
 14318                     
 13124                     /* Get the value from a foo(<param_value>) style call */
 14319                     /* Get the value from a foo(<param_value>) style call */
 13125                     if (IN2_param_value == NULL)
 14320                     if (IN2_param_value == NULL)
 13126                       IN2_param_value = function_call_param_iterator.next();
 14321                       IN2_param_value = function_call_param_iterator.next();
 13127                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14322                     if (IN2_param_value != NULL) {
 13128                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14323                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 13129                     
 14324                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 13130                     if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 14325                     }
       
 14326                     
       
 14327                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 13131                     {
 14328                     {
 13132                 
 14329                 
 13133                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 14330                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 13134                         return return_type_symbol;
 14331                         return return_type_symbol;
 13135                         
 14332                         
 13136                     }
 14333                     }
 13137                     
 14334                     
 13138                     if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 14335                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 13139                     {
 14336                     {
 13140                 
 14337                 
 13141                         symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 14338                         symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 13142                         return return_type_symbol;
 14339                         return return_type_symbol;
 13143                         
 14340                         
 13147                     ERROR;
 14344                     ERROR;
 13148                 }
 14345                 }
 13149                 
 14346                 
 13150             }
 14347             }
 13151             
 14348             
 13152             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 14349             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 13153             {
 14350             {
 13154         
 14351         
 13155                 {
 14352                 {
 13156                     identifier_c param_name("IN2");
 14353                     identifier_c param_name("IN2");
 13157                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14354                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13158                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14355                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14356                     symbol_c *IN2_type_symbol = NULL;
 13159                     
 14357                     
 13160                     /* Get the value from a foo(<param_value>) style call */
 14358                     /* Get the value from a foo(<param_value>) style call */
 13161                     if (IN2_param_value == NULL)
 14359                     if (IN2_param_value == NULL)
 13162                       IN2_param_value = function_call_param_iterator.next();
 14360                       IN2_param_value = function_call_param_iterator.next();
 13163                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14361                     if (IN2_param_value != NULL) {
 13164                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14362                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 13165                     
 14363                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 13166                     if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 14364                     }
       
 14365                     
       
 14366                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 13167                     {
 14367                     {
 13168                 
 14368                 
 13169                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 14369                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 13170                         return return_type_symbol;
 14370                         return return_type_symbol;
 13171                         
 14371                         
 13193 
 14393 
 13194         {
 14394         {
 13195             identifier_c param_name("IN1");
 14395             identifier_c param_name("IN1");
 13196             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14396             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13197             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 14397             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 14398             symbol_c *IN1_type_symbol = NULL;
 13198             
 14399             
 13199             /* Get the value from a foo(<param_value>) style call */
 14400             /* Get the value from a foo(<param_value>) style call */
 13200             if (IN1_param_value == NULL)
 14401             if (IN1_param_value == NULL)
 13201               IN1_param_value = function_call_param_iterator.next();
 14402               IN1_param_value = function_call_param_iterator.next();
 13202             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 14403             if (IN1_param_value != NULL) {
 13203             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 14404               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 13204             
 14405               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 13205             if(search_expression_type->is_num_type(IN1_type_symbol))
 14406             }
       
 14407             
       
 14408             if(IN1_type_symbol == NULL || search_expression_type->is_num_type(IN1_type_symbol))
 13206             {
 14409             {
 13207         
 14410         
 13208                 {
 14411                 {
 13209                     identifier_c param_name("IN2");
 14412                     identifier_c param_name("IN2");
 13210                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14413                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13211                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14414                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14415                     symbol_c *IN2_type_symbol = NULL;
 13212                     
 14416                     
 13213                     /* Get the value from a foo(<param_value>) style call */
 14417                     /* Get the value from a foo(<param_value>) style call */
 13214                     if (IN2_param_value == NULL)
 14418                     if (IN2_param_value == NULL)
 13215                       IN2_param_value = function_call_param_iterator.next();
 14419                       IN2_param_value = function_call_param_iterator.next();
 13216                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14420                     if (IN2_param_value != NULL) {
 13217                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14421                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 13218                     
 14422                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 13219                     if(search_expression_type->is_num_type(IN2_type_symbol))
 14423                     }
       
 14424                     
       
 14425                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 13220                     {
 14426                     {
 13221                 
 14427                 
 13222                         symbol_c * return_type_symbol = last_type_symbol;
 14428                         symbol_c * return_type_symbol = last_type_symbol;
 13223                         return return_type_symbol;
 14429                         return return_type_symbol;
 13224                         
 14430                         
 13228                     ERROR;
 14434                     ERROR;
 13229                 }
 14435                 }
 13230                 
 14436                 
 13231             }
 14437             }
 13232             
 14438             
 13233             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 14439             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 13234             {
 14440             {
 13235         
 14441         
 13236                 {
 14442                 {
 13237                     identifier_c param_name("IN2");
 14443                     identifier_c param_name("IN2");
 13238                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14444                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13239                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14445                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14446                     symbol_c *IN2_type_symbol = NULL;
 13240                     
 14447                     
 13241                     /* Get the value from a foo(<param_value>) style call */
 14448                     /* Get the value from a foo(<param_value>) style call */
 13242                     if (IN2_param_value == NULL)
 14449                     if (IN2_param_value == NULL)
 13243                       IN2_param_value = function_call_param_iterator.next();
 14450                       IN2_param_value = function_call_param_iterator.next();
 13244                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14451                     if (IN2_param_value != NULL) {
 13245                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14452                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 13246                     
 14453                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 13247                     if(search_expression_type->is_num_type(IN2_type_symbol))
 14454                     }
       
 14455                     
       
 14456                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 13248                     {
 14457                     {
 13249                 
 14458                 
 13250                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 14459                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 13251                         return return_type_symbol;
 14460                         return return_type_symbol;
 13252                         
 14461                         
 13274 
 14483 
 13275         {
 14484         {
 13276             identifier_c param_name("IN1");
 14485             identifier_c param_name("IN1");
 13277             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14486             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13278             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 14487             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 14488             symbol_c *IN1_type_symbol = NULL;
 13279             
 14489             
 13280             /* Get the value from a foo(<param_value>) style call */
 14490             /* Get the value from a foo(<param_value>) style call */
 13281             if (IN1_param_value == NULL)
 14491             if (IN1_param_value == NULL)
 13282               IN1_param_value = function_call_param_iterator.next();
 14492               IN1_param_value = function_call_param_iterator.next();
 13283             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 14493             if (IN1_param_value != NULL) {
 13284             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 14494               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 13285             
 14495               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 13286             if(search_expression_type->is_num_type(IN1_type_symbol))
 14496             }
       
 14497             
       
 14498             if(IN1_type_symbol == NULL || search_expression_type->is_num_type(IN1_type_symbol))
 13287             {
 14499             {
 13288         
 14500         
 13289                 {
 14501                 {
 13290                     identifier_c param_name("IN2");
 14502                     identifier_c param_name("IN2");
 13291                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14503                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13292                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14504                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14505                     symbol_c *IN2_type_symbol = NULL;
 13293                     
 14506                     
 13294                     /* Get the value from a foo(<param_value>) style call */
 14507                     /* Get the value from a foo(<param_value>) style call */
 13295                     if (IN2_param_value == NULL)
 14508                     if (IN2_param_value == NULL)
 13296                       IN2_param_value = function_call_param_iterator.next();
 14509                       IN2_param_value = function_call_param_iterator.next();
 13297                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14510                     if (IN2_param_value != NULL) {
 13298                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14511                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 13299                     
 14512                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 13300                     if(search_expression_type->is_num_type(IN2_type_symbol))
 14513                     }
       
 14514                     
       
 14515                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 13301                     {
 14516                     {
 13302                 
 14517                 
 13303                         symbol_c * return_type_symbol = last_type_symbol;
 14518                         symbol_c * return_type_symbol = last_type_symbol;
 13304                         return return_type_symbol;
 14519                         return return_type_symbol;
 13305                         
 14520                         
 13327 
 14542 
 13328         {
 14543         {
 13329             identifier_c param_name("IN1");
 14544             identifier_c param_name("IN1");
 13330             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14545             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13331             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 14546             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 14547             symbol_c *IN1_type_symbol = NULL;
 13332             
 14548             
 13333             /* Get the value from a foo(<param_value>) style call */
 14549             /* Get the value from a foo(<param_value>) style call */
 13334             if (IN1_param_value == NULL)
 14550             if (IN1_param_value == NULL)
 13335               IN1_param_value = function_call_param_iterator.next();
 14551               IN1_param_value = function_call_param_iterator.next();
 13336             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 14552             if (IN1_param_value != NULL) {
 13337             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 14553               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 13338             
 14554               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 13339             if(search_expression_type->is_real_type(IN1_type_symbol))
 14555             }
       
 14556             
       
 14557             if(IN1_type_symbol == NULL || search_expression_type->is_real_type(IN1_type_symbol))
 13340             {
 14558             {
 13341         
 14559         
 13342                 {
 14560                 {
 13343                     identifier_c param_name("IN2");
 14561                     identifier_c param_name("IN2");
 13344                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14562                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13345                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14563                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14564                     symbol_c *IN2_type_symbol = NULL;
 13346                     
 14565                     
 13347                     /* Get the value from a foo(<param_value>) style call */
 14566                     /* Get the value from a foo(<param_value>) style call */
 13348                     if (IN2_param_value == NULL)
 14567                     if (IN2_param_value == NULL)
 13349                       IN2_param_value = function_call_param_iterator.next();
 14568                       IN2_param_value = function_call_param_iterator.next();
 13350                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14569                     if (IN2_param_value != NULL) {
 13351                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14570                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 13352                     
 14571                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 13353                     if(search_expression_type->is_num_type(IN2_type_symbol))
 14572                     }
       
 14573                     
       
 14574                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 13354                     {
 14575                     {
 13355                 
 14576                 
 13356                         symbol_c * return_type_symbol = last_type_symbol;
 14577                         symbol_c * return_type_symbol = last_type_symbol;
 13357                         return return_type_symbol;
 14578                         return return_type_symbol;
 13358                         
 14579                         
 13380 
 14601 
 13381         {
 14602         {
 13382             identifier_c param_name("IN");
 14603             identifier_c param_name("IN");
 13383             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14604             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13384             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 14605             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13385             
 14606             symbol_c *IN_type_symbol = NULL;
 13386             /* Get the value from a foo(<param_value>) style call */
 14607             
 13387             if (IN_param_value == NULL)
 14608             /* Get the value from a foo(<param_value>) style call */
 13388               IN_param_value = function_call_param_iterator.next();
 14609             if (IN_param_value == NULL)
 13389             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 14610               IN_param_value = function_call_param_iterator.next();
 13390             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 14611             if (IN_param_value != NULL) {
       
 14612               IN_type_symbol = search_expression_type->get_type(IN_param_value);
       
 14613               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 14614             }
 13391             
 14615             
 13392             
 14616             
 13393             {
 14617             {
 13394         
 14618         
 13395                 symbol_c * return_type_symbol = last_type_symbol;
 14619                 symbol_c * return_type_symbol = last_type_symbol;
 13413 
 14637 
 13414         {
 14638         {
 13415             identifier_c param_name("IN");
 14639             identifier_c param_name("IN");
 13416             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14640             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13417             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 14641             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13418             
 14642             symbol_c *IN_type_symbol = NULL;
 13419             /* Get the value from a foo(<param_value>) style call */
 14643             
 13420             if (IN_param_value == NULL)
 14644             /* Get the value from a foo(<param_value>) style call */
 13421               IN_param_value = function_call_param_iterator.next();
 14645             if (IN_param_value == NULL)
 13422             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 14646               IN_param_value = function_call_param_iterator.next();
 13423             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 14647             if (IN_param_value != NULL) {
 13424             
 14648               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13425             if(search_expression_type->is_binary_type(IN_type_symbol))
 14649               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 14650             }
       
 14651             
       
 14652             if(IN_type_symbol == NULL || search_expression_type->is_binary_type(IN_type_symbol))
 13426             {
 14653             {
 13427         
 14654         
 13428                 {
 14655                 {
 13429                     identifier_c param_name("N");
 14656                     identifier_c param_name("N");
 13430                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14657                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13431                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
 14658                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
       
 14659                     symbol_c *N_type_symbol = NULL;
 13432                     
 14660                     
 13433                     /* Get the value from a foo(<param_value>) style call */
 14661                     /* Get the value from a foo(<param_value>) style call */
 13434                     if (N_param_value == NULL)
 14662                     if (N_param_value == NULL)
 13435                       N_param_value = function_call_param_iterator.next();
 14663                       N_param_value = function_call_param_iterator.next();
 13436                     symbol_c *N_type_symbol = search_expression_type->get_type(N_param_value);
 14664                     if (N_param_value != NULL) {
 13437                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 14665                       N_type_symbol = search_expression_type->get_type(N_param_value);
 13438                     
 14666                       last_type_symbol = last_type_symbol && N_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 13439                     if(search_expression_type->is_integer_type(N_type_symbol))
 14667                     }
       
 14668                     
       
 14669                     if(N_type_symbol == NULL || search_expression_type->is_integer_type(N_type_symbol))
 13440                     {
 14670                     {
 13441                 
 14671                 
 13442                         symbol_c * return_type_symbol = IN_type_symbol;
 14672                         symbol_c * return_type_symbol = IN_type_symbol;
 13443                         return return_type_symbol;
 14673                         return return_type_symbol;
 13444                         
 14674                         
 13466 
 14696 
 13467         {
 14697         {
 13468             identifier_c param_name("IN");
 14698             identifier_c param_name("IN");
 13469             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14699             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13470             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 14700             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13471             
 14701             symbol_c *IN_type_symbol = NULL;
 13472             /* Get the value from a foo(<param_value>) style call */
 14702             
 13473             if (IN_param_value == NULL)
 14703             /* Get the value from a foo(<param_value>) style call */
 13474               IN_param_value = function_call_param_iterator.next();
 14704             if (IN_param_value == NULL)
 13475             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 14705               IN_param_value = function_call_param_iterator.next();
 13476             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 14706             if (IN_param_value != NULL) {
 13477             
 14707               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13478             if(search_expression_type->is_binary_type(IN_type_symbol))
 14708               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 14709             }
       
 14710             
       
 14711             if(IN_type_symbol == NULL || search_expression_type->is_binary_type(IN_type_symbol))
 13479             {
 14712             {
 13480         
 14713         
 13481                 {
 14714                 {
 13482                     identifier_c param_name("N");
 14715                     identifier_c param_name("N");
 13483                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14716                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13484                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
 14717                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
       
 14718                     symbol_c *N_type_symbol = NULL;
 13485                     
 14719                     
 13486                     /* Get the value from a foo(<param_value>) style call */
 14720                     /* Get the value from a foo(<param_value>) style call */
 13487                     if (N_param_value == NULL)
 14721                     if (N_param_value == NULL)
 13488                       N_param_value = function_call_param_iterator.next();
 14722                       N_param_value = function_call_param_iterator.next();
 13489                     symbol_c *N_type_symbol = search_expression_type->get_type(N_param_value);
 14723                     if (N_param_value != NULL) {
 13490                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 14724                       N_type_symbol = search_expression_type->get_type(N_param_value);
 13491                     
 14725                       last_type_symbol = last_type_symbol && N_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 13492                     if(search_expression_type->is_integer_type(N_type_symbol))
 14726                     }
       
 14727                     
       
 14728                     if(N_type_symbol == NULL || search_expression_type->is_integer_type(N_type_symbol))
 13493                     {
 14729                     {
 13494                 
 14730                 
 13495                         symbol_c * return_type_symbol = IN_type_symbol;
 14731                         symbol_c * return_type_symbol = IN_type_symbol;
 13496                         return return_type_symbol;
 14732                         return return_type_symbol;
 13497                         
 14733                         
 13519 
 14755 
 13520         {
 14756         {
 13521             identifier_c param_name("IN");
 14757             identifier_c param_name("IN");
 13522             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14758             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13523             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 14759             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13524             
 14760             symbol_c *IN_type_symbol = NULL;
 13525             /* Get the value from a foo(<param_value>) style call */
 14761             
 13526             if (IN_param_value == NULL)
 14762             /* Get the value from a foo(<param_value>) style call */
 13527               IN_param_value = function_call_param_iterator.next();
 14763             if (IN_param_value == NULL)
 13528             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 14764               IN_param_value = function_call_param_iterator.next();
 13529             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 14765             if (IN_param_value != NULL) {
 13530             
 14766               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13531             if(search_expression_type->is_nbinary_type(IN_type_symbol))
 14767               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 14768             }
       
 14769             
       
 14770             if(IN_type_symbol == NULL || search_expression_type->is_nbinary_type(IN_type_symbol))
 13532             {
 14771             {
 13533         
 14772         
 13534                 {
 14773                 {
 13535                     identifier_c param_name("N");
 14774                     identifier_c param_name("N");
 13536                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14775                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13537                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
 14776                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
       
 14777                     symbol_c *N_type_symbol = NULL;
 13538                     
 14778                     
 13539                     /* Get the value from a foo(<param_value>) style call */
 14779                     /* Get the value from a foo(<param_value>) style call */
 13540                     if (N_param_value == NULL)
 14780                     if (N_param_value == NULL)
 13541                       N_param_value = function_call_param_iterator.next();
 14781                       N_param_value = function_call_param_iterator.next();
 13542                     symbol_c *N_type_symbol = search_expression_type->get_type(N_param_value);
 14782                     if (N_param_value != NULL) {
 13543                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 14783                       N_type_symbol = search_expression_type->get_type(N_param_value);
 13544                     
 14784                       last_type_symbol = last_type_symbol && N_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 13545                     if(search_expression_type->is_integer_type(N_type_symbol))
 14785                     }
       
 14786                     
       
 14787                     if(N_type_symbol == NULL || search_expression_type->is_integer_type(N_type_symbol))
 13546                     {
 14788                     {
 13547                 
 14789                 
 13548                         symbol_c * return_type_symbol = IN_type_symbol;
 14790                         symbol_c * return_type_symbol = IN_type_symbol;
 13549                         return return_type_symbol;
 14791                         return return_type_symbol;
 13550                         
 14792                         
 13572 
 14814 
 13573         {
 14815         {
 13574             identifier_c param_name("IN");
 14816             identifier_c param_name("IN");
 13575             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14817             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13576             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 14818             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13577             
 14819             symbol_c *IN_type_symbol = NULL;
 13578             /* Get the value from a foo(<param_value>) style call */
 14820             
 13579             if (IN_param_value == NULL)
 14821             /* Get the value from a foo(<param_value>) style call */
 13580               IN_param_value = function_call_param_iterator.next();
 14822             if (IN_param_value == NULL)
 13581             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 14823               IN_param_value = function_call_param_iterator.next();
 13582             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 14824             if (IN_param_value != NULL) {
 13583             
 14825               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13584             if(search_expression_type->is_nbinary_type(IN_type_symbol))
 14826               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 14827             }
       
 14828             
       
 14829             if(IN_type_symbol == NULL || search_expression_type->is_nbinary_type(IN_type_symbol))
 13585             {
 14830             {
 13586         
 14831         
 13587                 {
 14832                 {
 13588                     identifier_c param_name("N");
 14833                     identifier_c param_name("N");
 13589                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14834                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13590                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
 14835                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
       
 14836                     symbol_c *N_type_symbol = NULL;
 13591                     
 14837                     
 13592                     /* Get the value from a foo(<param_value>) style call */
 14838                     /* Get the value from a foo(<param_value>) style call */
 13593                     if (N_param_value == NULL)
 14839                     if (N_param_value == NULL)
 13594                       N_param_value = function_call_param_iterator.next();
 14840                       N_param_value = function_call_param_iterator.next();
 13595                     symbol_c *N_type_symbol = search_expression_type->get_type(N_param_value);
 14841                     if (N_param_value != NULL) {
 13596                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 14842                       N_type_symbol = search_expression_type->get_type(N_param_value);
 13597                     
 14843                       last_type_symbol = last_type_symbol && N_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 13598                     if(search_expression_type->is_integer_type(N_type_symbol))
 14844                     }
       
 14845                     
       
 14846                     if(N_type_symbol == NULL || search_expression_type->is_integer_type(N_type_symbol))
 13599                     {
 14847                     {
 13600                 
 14848                 
 13601                         symbol_c * return_type_symbol = IN_type_symbol;
 14849                         symbol_c * return_type_symbol = IN_type_symbol;
 13602                         return return_type_symbol;
 14850                         return return_type_symbol;
 13603                         
 14851                         
 13625 
 14873 
 13626         {
 14874         {
 13627             identifier_c param_name("IN1");
 14875             identifier_c param_name("IN1");
 13628             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14876             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13629             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 14877             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 14878             symbol_c *IN1_type_symbol = NULL;
 13630             
 14879             
 13631             /* Get the value from a foo(<param_value>) style call */
 14880             /* Get the value from a foo(<param_value>) style call */
 13632             if (IN1_param_value == NULL)
 14881             if (IN1_param_value == NULL)
 13633               IN1_param_value = function_call_param_iterator.next();
 14882               IN1_param_value = function_call_param_iterator.next();
 13634             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 14883             if (IN1_param_value != NULL) {
 13635             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 14884               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 13636             
 14885               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 13637             if(search_expression_type->is_binary_type(IN1_type_symbol))
 14886             }
       
 14887             
       
 14888             if(IN1_type_symbol == NULL || search_expression_type->is_binary_type(IN1_type_symbol))
 13638             {
 14889             {
 13639         
 14890         
 13640                 {
 14891                 {
 13641                     identifier_c param_name("IN2");
 14892                     identifier_c param_name("IN2");
 13642                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14893                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13643                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14894                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14895                     symbol_c *IN2_type_symbol = NULL;
 13644                     
 14896                     
 13645                     /* Get the value from a foo(<param_value>) style call */
 14897                     /* Get the value from a foo(<param_value>) style call */
 13646                     if (IN2_param_value == NULL)
 14898                     if (IN2_param_value == NULL)
 13647                       IN2_param_value = function_call_param_iterator.next();
 14899                       IN2_param_value = function_call_param_iterator.next();
 13648                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14900                     if (IN2_param_value != NULL) {
 13649                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14901                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 13650                     
 14902                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 13651                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 14903                     }
       
 14904                     
       
 14905                     if(IN2_type_symbol == NULL || search_expression_type->is_binary_type(IN2_type_symbol))
 13652                     {
 14906                     {
 13653                 
 14907                 
 13654                         symbol_c * return_type_symbol = last_type_symbol;
 14908                         symbol_c * return_type_symbol = last_type_symbol;
 13655                         return return_type_symbol;
 14909                         return return_type_symbol;
 13656                         
 14910                         
 13678 
 14932 
 13679         {
 14933         {
 13680             identifier_c param_name("IN1");
 14934             identifier_c param_name("IN1");
 13681             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14935             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13682             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 14936             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 14937             symbol_c *IN1_type_symbol = NULL;
 13683             
 14938             
 13684             /* Get the value from a foo(<param_value>) style call */
 14939             /* Get the value from a foo(<param_value>) style call */
 13685             if (IN1_param_value == NULL)
 14940             if (IN1_param_value == NULL)
 13686               IN1_param_value = function_call_param_iterator.next();
 14941               IN1_param_value = function_call_param_iterator.next();
 13687             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 14942             if (IN1_param_value != NULL) {
 13688             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 14943               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 13689             
 14944               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 13690             if(search_expression_type->is_binary_type(IN1_type_symbol))
 14945             }
       
 14946             
       
 14947             if(IN1_type_symbol == NULL || search_expression_type->is_binary_type(IN1_type_symbol))
 13691             {
 14948             {
 13692         
 14949         
 13693                 {
 14950                 {
 13694                     identifier_c param_name("IN2");
 14951                     identifier_c param_name("IN2");
 13695                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14952                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13696                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 14953                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 14954                     symbol_c *IN2_type_symbol = NULL;
 13697                     
 14955                     
 13698                     /* Get the value from a foo(<param_value>) style call */
 14956                     /* Get the value from a foo(<param_value>) style call */
 13699                     if (IN2_param_value == NULL)
 14957                     if (IN2_param_value == NULL)
 13700                       IN2_param_value = function_call_param_iterator.next();
 14958                       IN2_param_value = function_call_param_iterator.next();
 13701                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14959                     if (IN2_param_value != NULL) {
 13702                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14960                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 13703                     
 14961                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 13704                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 14962                     }
       
 14963                     
       
 14964                     if(IN2_type_symbol == NULL || search_expression_type->is_binary_type(IN2_type_symbol))
 13705                     {
 14965                     {
 13706                 
 14966                 
 13707                         symbol_c * return_type_symbol = last_type_symbol;
 14967                         symbol_c * return_type_symbol = last_type_symbol;
 13708                         return return_type_symbol;
 14968                         return return_type_symbol;
 13709                         
 14969                         
 13731 
 14991 
 13732         {
 14992         {
 13733             identifier_c param_name("IN1");
 14993             identifier_c param_name("IN1");
 13734             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14994             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13735             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 14995             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 14996             symbol_c *IN1_type_symbol = NULL;
 13736             
 14997             
 13737             /* Get the value from a foo(<param_value>) style call */
 14998             /* Get the value from a foo(<param_value>) style call */
 13738             if (IN1_param_value == NULL)
 14999             if (IN1_param_value == NULL)
 13739               IN1_param_value = function_call_param_iterator.next();
 15000               IN1_param_value = function_call_param_iterator.next();
 13740             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 15001             if (IN1_param_value != NULL) {
 13741             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 15002               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 13742             
 15003               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 13743             if(search_expression_type->is_binary_type(IN1_type_symbol))
 15004             }
       
 15005             
       
 15006             if(IN1_type_symbol == NULL || search_expression_type->is_binary_type(IN1_type_symbol))
 13744             {
 15007             {
 13745         
 15008         
 13746                 {
 15009                 {
 13747                     identifier_c param_name("IN2");
 15010                     identifier_c param_name("IN2");
 13748                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15011                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13749                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 15012                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 15013                     symbol_c *IN2_type_symbol = NULL;
 13750                     
 15014                     
 13751                     /* Get the value from a foo(<param_value>) style call */
 15015                     /* Get the value from a foo(<param_value>) style call */
 13752                     if (IN2_param_value == NULL)
 15016                     if (IN2_param_value == NULL)
 13753                       IN2_param_value = function_call_param_iterator.next();
 15017                       IN2_param_value = function_call_param_iterator.next();
 13754                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 15018                     if (IN2_param_value != NULL) {
 13755                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 15019                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 13756                     
 15020                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 13757                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 15021                     }
       
 15022                     
       
 15023                     if(IN2_type_symbol == NULL || search_expression_type->is_binary_type(IN2_type_symbol))
 13758                     {
 15024                     {
 13759                 
 15025                 
 13760                         symbol_c * return_type_symbol = last_type_symbol;
 15026                         symbol_c * return_type_symbol = last_type_symbol;
 13761                         return return_type_symbol;
 15027                         return return_type_symbol;
 13762                         
 15028                         
 13784 
 15050 
 13785         {
 15051         {
 13786             identifier_c param_name("IN");
 15052             identifier_c param_name("IN");
 13787             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15053             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13788             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 15054             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 13789             
 15055             symbol_c *IN_type_symbol = NULL;
 13790             /* Get the value from a foo(<param_value>) style call */
 15056             
 13791             if (IN_param_value == NULL)
 15057             /* Get the value from a foo(<param_value>) style call */
 13792               IN_param_value = function_call_param_iterator.next();
 15058             if (IN_param_value == NULL)
 13793             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 15059               IN_param_value = function_call_param_iterator.next();
 13794             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 15060             if (IN_param_value != NULL) {
 13795             
 15061               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 13796             if(search_expression_type->is_binary_type(IN_type_symbol))
 15062               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 15063             }
       
 15064             
       
 15065             if(IN_type_symbol == NULL || search_expression_type->is_binary_type(IN_type_symbol))
 13797             {
 15066             {
 13798         
 15067         
 13799                 symbol_c * return_type_symbol = IN_type_symbol;
 15068                 symbol_c * return_type_symbol = IN_type_symbol;
 13800                 return return_type_symbol;
 15069                 return return_type_symbol;
 13801                 
 15070                 
 13817 
 15086 
 13818         {
 15087         {
 13819             identifier_c param_name("G");
 15088             identifier_c param_name("G");
 13820             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15089             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13821             symbol_c *G_param_value = function_call_param_iterator.search(&param_name);
 15090             symbol_c *G_param_value = function_call_param_iterator.search(&param_name);
       
 15091             symbol_c *G_type_symbol = NULL;
 13822             
 15092             
 13823             /* Get the value from a foo(<param_value>) style call */
 15093             /* Get the value from a foo(<param_value>) style call */
 13824             if (G_param_value == NULL)
 15094             if (G_param_value == NULL)
 13825               G_param_value = function_call_param_iterator.next();
 15095               G_param_value = function_call_param_iterator.next();
 13826             symbol_c *G_type_symbol = search_expression_type->get_type(G_param_value);
 15096             if (G_param_value != NULL) {
 13827             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(G_type_symbol, last_type_symbol) ? search_expression_type->common_type(G_type_symbol, last_type_symbol) : G_type_symbol ;
 15097               G_type_symbol = search_expression_type->get_type(G_param_value);
 13828             
 15098               last_type_symbol = last_type_symbol && G_type_symbol && search_expression_type->is_same_type(G_type_symbol, last_type_symbol) ? search_expression_type->common_type(G_type_symbol, last_type_symbol) : G_type_symbol ;
 13829             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 15099             }
       
 15100             
       
 15101             if(G_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 13830             {
 15102             {
 13831         
 15103         
 13832                 {
 15104                 {
 13833                     identifier_c param_name("IN0");
 15105                     identifier_c param_name("IN0");
 13834                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15106                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13835                     symbol_c *IN0_param_value = function_call_param_iterator.search(&param_name);
 15107                     symbol_c *IN0_param_value = function_call_param_iterator.search(&param_name);
       
 15108                     symbol_c *IN0_type_symbol = NULL;
 13836                     
 15109                     
 13837                     /* Get the value from a foo(<param_value>) style call */
 15110                     /* Get the value from a foo(<param_value>) style call */
 13838                     if (IN0_param_value == NULL)
 15111                     if (IN0_param_value == NULL)
 13839                       IN0_param_value = function_call_param_iterator.next();
 15112                       IN0_param_value = function_call_param_iterator.next();
 13840                     symbol_c *IN0_type_symbol = search_expression_type->get_type(IN0_param_value);
 15113                     if (IN0_param_value != NULL) {
 13841                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN0_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN0_type_symbol, last_type_symbol) : IN0_type_symbol ;
 15114                       IN0_type_symbol = search_expression_type->get_type(IN0_param_value);
       
 15115                       last_type_symbol = last_type_symbol && IN0_type_symbol && search_expression_type->is_same_type(IN0_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN0_type_symbol, last_type_symbol) : IN0_type_symbol ;
       
 15116                     }
 13842                     
 15117                     
 13843                     
 15118                     
 13844                     {
 15119                     {
 13845                 
 15120                 
 13846                         {
 15121                         {
 13847                             identifier_c param_name("IN1");
 15122                             identifier_c param_name("IN1");
 13848                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15123                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13849                             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 15124                             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 15125                             symbol_c *IN1_type_symbol = NULL;
 13850                             
 15126                             
 13851                             /* Get the value from a foo(<param_value>) style call */
 15127                             /* Get the value from a foo(<param_value>) style call */
 13852                             if (IN1_param_value == NULL)
 15128                             if (IN1_param_value == NULL)
 13853                               IN1_param_value = function_call_param_iterator.next();
 15129                               IN1_param_value = function_call_param_iterator.next();
 13854                             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 15130                             if (IN1_param_value != NULL) {
 13855                             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 15131                               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
       
 15132                               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
       
 15133                             }
 13856                             
 15134                             
 13857                             
 15135                             
 13858                             {
 15136                             {
 13859                         
 15137                         
 13860                                 symbol_c * return_type_symbol = last_type_symbol;
 15138                                 symbol_c * return_type_symbol = last_type_symbol;
 13890 
 15168 
 13891         {
 15169         {
 13892             identifier_c param_name("IN1");
 15170             identifier_c param_name("IN1");
 13893             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15171             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13894             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 15172             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 15173             symbol_c *IN1_type_symbol = NULL;
 13895             
 15174             
 13896             /* Get the value from a foo(<param_value>) style call */
 15175             /* Get the value from a foo(<param_value>) style call */
 13897             if (IN1_param_value == NULL)
 15176             if (IN1_param_value == NULL)
 13898               IN1_param_value = function_call_param_iterator.next();
 15177               IN1_param_value = function_call_param_iterator.next();
 13899             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 15178             if (IN1_param_value != NULL) {
 13900             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 15179               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
       
 15180               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
       
 15181             }
 13901             
 15182             
 13902             
 15183             
 13903             {
 15184             {
 13904         
 15185         
 13905                 {
 15186                 {
 13906                     identifier_c param_name("IN2");
 15187                     identifier_c param_name("IN2");
 13907                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15188                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13908                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 15189                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 15190                     symbol_c *IN2_type_symbol = NULL;
 13909                     
 15191                     
 13910                     /* Get the value from a foo(<param_value>) style call */
 15192                     /* Get the value from a foo(<param_value>) style call */
 13911                     if (IN2_param_value == NULL)
 15193                     if (IN2_param_value == NULL)
 13912                       IN2_param_value = function_call_param_iterator.next();
 15194                       IN2_param_value = function_call_param_iterator.next();
 13913                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 15195                     if (IN2_param_value != NULL) {
 13914                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 15196                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 15197                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 15198                     }
 13915                     
 15199                     
 13916                     
 15200                     
 13917                     {
 15201                     {
 13918                 
 15202                 
 13919                         symbol_c * return_type_symbol = last_type_symbol;
 15203                         symbol_c * return_type_symbol = last_type_symbol;
 13943 
 15227 
 13944         {
 15228         {
 13945             identifier_c param_name("IN1");
 15229             identifier_c param_name("IN1");
 13946             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15230             /* Get the value from a foo(<param_name> = <param_value>) style call */
 13947             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 15231             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 15232             symbol_c *IN1_type_symbol = NULL;
 13948             
 15233             
 13949             /* Get the value from a foo(<param_value>) style call */
 15234             /* Get the value from a foo(<param_value>) style call */
 13950             if (IN1_param_value == NULL)
 15235             if (IN1_param_value == NULL)
 13951               IN1_param_value = function_call_param_iterator.next();
 15236               IN1_param_value = function_call_param_iterator.next();
 13952             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 15237             if (IN1_param_value != NULL) {
 13953             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 15238               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
       
 15239               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
       
 15240             }
 13954             
 15241             
 13955             
 15242             
 13956             {
 15243             {
 13957         
 15244         
 13958                 {
 15245                 {
 13959                     identifier_c param_name("IN2");
 15246                     identifier_c param_name("IN2");
 13960                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15247                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 13961                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 15248                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 15249                     symbol_c *IN2_type_symbol = NULL;
 13962                     
 15250                     
 13963                     /* Get the value from a foo(<param_value>) style call */
 15251                     /* Get the value from a foo(<param_value>) style call */
 13964                     if (IN2_param_value == NULL)
 15252                     if (IN2_param_value == NULL)
 13965                       IN2_param_value = function_call_param_iterator.next();
 15253                       IN2_param_value = function_call_param_iterator.next();
 13966                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 15254                     if (IN2_param_value != NULL) {
 13967                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 15255                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 15256                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 15257                     }
 13968                     
 15258                     
 13969                     
 15259                     
 13970                     {
 15260                     {
 13971                 
 15261                 
 13972                         symbol_c * return_type_symbol = last_type_symbol;
 15262                         symbol_c * return_type_symbol = last_type_symbol;
 13996 
 15286 
 13997         {
 15287         {
 13998             identifier_c param_name("MN");
 15288             identifier_c param_name("MN");
 13999             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15289             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14000             symbol_c *MN_param_value = function_call_param_iterator.search(&param_name);
 15290             symbol_c *MN_param_value = function_call_param_iterator.search(&param_name);
       
 15291             symbol_c *MN_type_symbol = NULL;
 14001             
 15292             
 14002             /* Get the value from a foo(<param_value>) style call */
 15293             /* Get the value from a foo(<param_value>) style call */
 14003             if (MN_param_value == NULL)
 15294             if (MN_param_value == NULL)
 14004               MN_param_value = function_call_param_iterator.next();
 15295               MN_param_value = function_call_param_iterator.next();
 14005             symbol_c *MN_type_symbol = search_expression_type->get_type(MN_param_value);
 15296             if (MN_param_value != NULL) {
 14006             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(MN_type_symbol, last_type_symbol) ? search_expression_type->common_type(MN_type_symbol, last_type_symbol) : MN_type_symbol ;
 15297               MN_type_symbol = search_expression_type->get_type(MN_param_value);
       
 15298               last_type_symbol = last_type_symbol && MN_type_symbol && search_expression_type->is_same_type(MN_type_symbol, last_type_symbol) ? search_expression_type->common_type(MN_type_symbol, last_type_symbol) : MN_type_symbol ;
       
 15299             }
 14007             
 15300             
 14008             
 15301             
 14009             {
 15302             {
 14010         
 15303         
 14011                 {
 15304                 {
 14012                     identifier_c param_name("IN");
 15305                     identifier_c param_name("IN");
 14013                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15306                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14014                     symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 15307                     symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
       
 15308                     symbol_c *IN_type_symbol = NULL;
 14015                     
 15309                     
 14016                     /* Get the value from a foo(<param_value>) style call */
 15310                     /* Get the value from a foo(<param_value>) style call */
 14017                     if (IN_param_value == NULL)
 15311                     if (IN_param_value == NULL)
 14018                       IN_param_value = function_call_param_iterator.next();
 15312                       IN_param_value = function_call_param_iterator.next();
 14019                     symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 15313                     if (IN_param_value != NULL) {
 14020                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 15314                       IN_type_symbol = search_expression_type->get_type(IN_param_value);
       
 15315                       last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 15316                     }
 14021                     
 15317                     
 14022                     
 15318                     
 14023                     {
 15319                     {
 14024                 
 15320                 
 14025                         {
 15321                         {
 14026                             identifier_c param_name("MX");
 15322                             identifier_c param_name("MX");
 14027                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15323                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14028                             symbol_c *MX_param_value = function_call_param_iterator.search(&param_name);
 15324                             symbol_c *MX_param_value = function_call_param_iterator.search(&param_name);
       
 15325                             symbol_c *MX_type_symbol = NULL;
 14029                             
 15326                             
 14030                             /* Get the value from a foo(<param_value>) style call */
 15327                             /* Get the value from a foo(<param_value>) style call */
 14031                             if (MX_param_value == NULL)
 15328                             if (MX_param_value == NULL)
 14032                               MX_param_value = function_call_param_iterator.next();
 15329                               MX_param_value = function_call_param_iterator.next();
 14033                             symbol_c *MX_type_symbol = search_expression_type->get_type(MX_param_value);
 15330                             if (MX_param_value != NULL) {
 14034                             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(MX_type_symbol, last_type_symbol) ? search_expression_type->common_type(MX_type_symbol, last_type_symbol) : MX_type_symbol ;
 15331                               MX_type_symbol = search_expression_type->get_type(MX_param_value);
       
 15332                               last_type_symbol = last_type_symbol && MX_type_symbol && search_expression_type->is_same_type(MX_type_symbol, last_type_symbol) ? search_expression_type->common_type(MX_type_symbol, last_type_symbol) : MX_type_symbol ;
       
 15333                             }
 14035                             
 15334                             
 14036                             
 15335                             
 14037                             {
 15336                             {
 14038                         
 15337                         
 14039                                 symbol_c * return_type_symbol = IN_type_symbol;
 15338                                 symbol_c * return_type_symbol = IN_type_symbol;
 14069 
 15368 
 14070         {
 15369         {
 14071             identifier_c param_name("K");
 15370             identifier_c param_name("K");
 14072             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15371             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14073             symbol_c *K_param_value = function_call_param_iterator.search(&param_name);
 15372             symbol_c *K_param_value = function_call_param_iterator.search(&param_name);
       
 15373             symbol_c *K_type_symbol = NULL;
 14074             
 15374             
 14075             /* Get the value from a foo(<param_value>) style call */
 15375             /* Get the value from a foo(<param_value>) style call */
 14076             if (K_param_value == NULL)
 15376             if (K_param_value == NULL)
 14077               K_param_value = function_call_param_iterator.next();
 15377               K_param_value = function_call_param_iterator.next();
 14078             symbol_c *K_type_symbol = search_expression_type->get_type(K_param_value);
 15378             if (K_param_value != NULL) {
 14079             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(K_type_symbol, last_type_symbol) ? search_expression_type->common_type(K_type_symbol, last_type_symbol) : K_type_symbol ;
 15379               K_type_symbol = search_expression_type->get_type(K_param_value);
 14080             
 15380               last_type_symbol = last_type_symbol && K_type_symbol && search_expression_type->is_same_type(K_type_symbol, last_type_symbol) ? search_expression_type->common_type(K_type_symbol, last_type_symbol) : K_type_symbol ;
 14081             if(search_expression_type->is_integer_type(K_type_symbol))
 15381             }
       
 15382             
       
 15383             if(K_type_symbol == NULL || search_expression_type->is_integer_type(K_type_symbol))
 14082             {
 15384             {
 14083         
 15385         
 14084                 {
 15386                 {
 14085                     identifier_c param_name("IN0");
 15387                     identifier_c param_name("IN0");
 14086                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15388                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14087                     symbol_c *IN0_param_value = function_call_param_iterator.search(&param_name);
 15389                     symbol_c *IN0_param_value = function_call_param_iterator.search(&param_name);
       
 15390                     symbol_c *IN0_type_symbol = NULL;
 14088                     
 15391                     
 14089                     /* Get the value from a foo(<param_value>) style call */
 15392                     /* Get the value from a foo(<param_value>) style call */
 14090                     if (IN0_param_value == NULL)
 15393                     if (IN0_param_value == NULL)
 14091                       IN0_param_value = function_call_param_iterator.next();
 15394                       IN0_param_value = function_call_param_iterator.next();
 14092                     symbol_c *IN0_type_symbol = search_expression_type->get_type(IN0_param_value);
 15395                     if (IN0_param_value != NULL) {
 14093                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN0_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN0_type_symbol, last_type_symbol) : IN0_type_symbol ;
 15396                       IN0_type_symbol = search_expression_type->get_type(IN0_param_value);
       
 15397                       last_type_symbol = last_type_symbol && IN0_type_symbol && search_expression_type->is_same_type(IN0_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN0_type_symbol, last_type_symbol) : IN0_type_symbol ;
       
 15398                     }
 14094                     
 15399                     
 14095                     
 15400                     
 14096                     {
 15401                     {
 14097                 
 15402                 
 14098                         {
 15403                         {
 14099                             identifier_c param_name("IN1");
 15404                             identifier_c param_name("IN1");
 14100                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15405                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14101                             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 15406                             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 15407                             symbol_c *IN1_type_symbol = NULL;
 14102                             
 15408                             
 14103                             /* Get the value from a foo(<param_value>) style call */
 15409                             /* Get the value from a foo(<param_value>) style call */
 14104                             if (IN1_param_value == NULL)
 15410                             if (IN1_param_value == NULL)
 14105                               IN1_param_value = function_call_param_iterator.next();
 15411                               IN1_param_value = function_call_param_iterator.next();
 14106                             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 15412                             if (IN1_param_value != NULL) {
 14107                             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 15413                               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
       
 15414                               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
       
 15415                             }
 14108                             
 15416                             
 14109                             
 15417                             
 14110                             {
 15418                             {
 14111                         
 15419                         
 14112                                 symbol_c * return_type_symbol = last_type_symbol;
 15420                                 symbol_c * return_type_symbol = last_type_symbol;
 14142 
 15450 
 14143         {
 15451         {
 14144             identifier_c param_name("IN1");
 15452             identifier_c param_name("IN1");
 14145             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15453             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14146             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 15454             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 15455             symbol_c *IN1_type_symbol = NULL;
 14147             
 15456             
 14148             /* Get the value from a foo(<param_value>) style call */
 15457             /* Get the value from a foo(<param_value>) style call */
 14149             if (IN1_param_value == NULL)
 15458             if (IN1_param_value == NULL)
 14150               IN1_param_value = function_call_param_iterator.next();
 15459               IN1_param_value = function_call_param_iterator.next();
 14151             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 15460             if (IN1_param_value != NULL) {
 14152             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 15461               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
       
 15462               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
       
 15463             }
 14153             
 15464             
 14154             
 15465             
 14155             {
 15466             {
 14156         
 15467         
 14157                 {
 15468                 {
 14158                     identifier_c param_name("IN2");
 15469                     identifier_c param_name("IN2");
 14159                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15470                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14160                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 15471                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 15472                     symbol_c *IN2_type_symbol = NULL;
 14161                     
 15473                     
 14162                     /* Get the value from a foo(<param_value>) style call */
 15474                     /* Get the value from a foo(<param_value>) style call */
 14163                     if (IN2_param_value == NULL)
 15475                     if (IN2_param_value == NULL)
 14164                       IN2_param_value = function_call_param_iterator.next();
 15476                       IN2_param_value = function_call_param_iterator.next();
 14165                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 15477                     if (IN2_param_value != NULL) {
 14166                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 15478                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 15479                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 15480                     }
 14167                     
 15481                     
 14168                     
 15482                     
 14169                     {
 15483                     {
 14170                 
 15484                 
 14171                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 15485                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 14195 
 15509 
 14196         {
 15510         {
 14197             identifier_c param_name("IN1");
 15511             identifier_c param_name("IN1");
 14198             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15512             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14199             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 15513             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 15514             symbol_c *IN1_type_symbol = NULL;
 14200             
 15515             
 14201             /* Get the value from a foo(<param_value>) style call */
 15516             /* Get the value from a foo(<param_value>) style call */
 14202             if (IN1_param_value == NULL)
 15517             if (IN1_param_value == NULL)
 14203               IN1_param_value = function_call_param_iterator.next();
 15518               IN1_param_value = function_call_param_iterator.next();
 14204             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 15519             if (IN1_param_value != NULL) {
 14205             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 15520               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
       
 15521               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
       
 15522             }
 14206             
 15523             
 14207             
 15524             
 14208             {
 15525             {
 14209         
 15526         
 14210                 {
 15527                 {
 14211                     identifier_c param_name("IN2");
 15528                     identifier_c param_name("IN2");
 14212                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15529                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14213                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 15530                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 15531                     symbol_c *IN2_type_symbol = NULL;
 14214                     
 15532                     
 14215                     /* Get the value from a foo(<param_value>) style call */
 15533                     /* Get the value from a foo(<param_value>) style call */
 14216                     if (IN2_param_value == NULL)
 15534                     if (IN2_param_value == NULL)
 14217                       IN2_param_value = function_call_param_iterator.next();
 15535                       IN2_param_value = function_call_param_iterator.next();
 14218                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 15536                     if (IN2_param_value != NULL) {
 14219                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 15537                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 15538                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 15539                     }
 14220                     
 15540                     
 14221                     
 15541                     
 14222                     {
 15542                     {
 14223                 
 15543                 
 14224                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 15544                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 14248 
 15568 
 14249         {
 15569         {
 14250             identifier_c param_name("IN1");
 15570             identifier_c param_name("IN1");
 14251             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15571             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14252             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 15572             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 15573             symbol_c *IN1_type_symbol = NULL;
 14253             
 15574             
 14254             /* Get the value from a foo(<param_value>) style call */
 15575             /* Get the value from a foo(<param_value>) style call */
 14255             if (IN1_param_value == NULL)
 15576             if (IN1_param_value == NULL)
 14256               IN1_param_value = function_call_param_iterator.next();
 15577               IN1_param_value = function_call_param_iterator.next();
 14257             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 15578             if (IN1_param_value != NULL) {
 14258             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 15579               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
       
 15580               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
       
 15581             }
 14259             
 15582             
 14260             
 15583             
 14261             {
 15584             {
 14262         
 15585         
 14263                 {
 15586                 {
 14264                     identifier_c param_name("IN2");
 15587                     identifier_c param_name("IN2");
 14265                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15588                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14266                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 15589                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 15590                     symbol_c *IN2_type_symbol = NULL;
 14267                     
 15591                     
 14268                     /* Get the value from a foo(<param_value>) style call */
 15592                     /* Get the value from a foo(<param_value>) style call */
 14269                     if (IN2_param_value == NULL)
 15593                     if (IN2_param_value == NULL)
 14270                       IN2_param_value = function_call_param_iterator.next();
 15594                       IN2_param_value = function_call_param_iterator.next();
 14271                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 15595                     if (IN2_param_value != NULL) {
 14272                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 15596                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 15597                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 15598                     }
 14273                     
 15599                     
 14274                     
 15600                     
 14275                     {
 15601                     {
 14276                 
 15602                 
 14277                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 15603                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 14301 
 15627 
 14302         {
 15628         {
 14303             identifier_c param_name("IN1");
 15629             identifier_c param_name("IN1");
 14304             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15630             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14305             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 15631             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 15632             symbol_c *IN1_type_symbol = NULL;
 14306             
 15633             
 14307             /* Get the value from a foo(<param_value>) style call */
 15634             /* Get the value from a foo(<param_value>) style call */
 14308             if (IN1_param_value == NULL)
 15635             if (IN1_param_value == NULL)
 14309               IN1_param_value = function_call_param_iterator.next();
 15636               IN1_param_value = function_call_param_iterator.next();
 14310             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 15637             if (IN1_param_value != NULL) {
 14311             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 15638               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
       
 15639               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
       
 15640             }
 14312             
 15641             
 14313             
 15642             
 14314             {
 15643             {
 14315         
 15644         
 14316                 {
 15645                 {
 14317                     identifier_c param_name("IN2");
 15646                     identifier_c param_name("IN2");
 14318                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15647                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14319                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 15648                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 15649                     symbol_c *IN2_type_symbol = NULL;
 14320                     
 15650                     
 14321                     /* Get the value from a foo(<param_value>) style call */
 15651                     /* Get the value from a foo(<param_value>) style call */
 14322                     if (IN2_param_value == NULL)
 15652                     if (IN2_param_value == NULL)
 14323                       IN2_param_value = function_call_param_iterator.next();
 15653                       IN2_param_value = function_call_param_iterator.next();
 14324                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 15654                     if (IN2_param_value != NULL) {
 14325                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 15655                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 15656                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 15657                     }
 14326                     
 15658                     
 14327                     
 15659                     
 14328                     {
 15660                     {
 14329                 
 15661                 
 14330                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 15662                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 14354 
 15686 
 14355         {
 15687         {
 14356             identifier_c param_name("IN1");
 15688             identifier_c param_name("IN1");
 14357             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15689             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14358             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 15690             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 15691             symbol_c *IN1_type_symbol = NULL;
 14359             
 15692             
 14360             /* Get the value from a foo(<param_value>) style call */
 15693             /* Get the value from a foo(<param_value>) style call */
 14361             if (IN1_param_value == NULL)
 15694             if (IN1_param_value == NULL)
 14362               IN1_param_value = function_call_param_iterator.next();
 15695               IN1_param_value = function_call_param_iterator.next();
 14363             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 15696             if (IN1_param_value != NULL) {
 14364             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 15697               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
       
 15698               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
       
 15699             }
 14365             
 15700             
 14366             
 15701             
 14367             {
 15702             {
 14368         
 15703         
 14369                 {
 15704                 {
 14370                     identifier_c param_name("IN2");
 15705                     identifier_c param_name("IN2");
 14371                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15706                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14372                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 15707                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 15708                     symbol_c *IN2_type_symbol = NULL;
 14373                     
 15709                     
 14374                     /* Get the value from a foo(<param_value>) style call */
 15710                     /* Get the value from a foo(<param_value>) style call */
 14375                     if (IN2_param_value == NULL)
 15711                     if (IN2_param_value == NULL)
 14376                       IN2_param_value = function_call_param_iterator.next();
 15712                       IN2_param_value = function_call_param_iterator.next();
 14377                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 15713                     if (IN2_param_value != NULL) {
 14378                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 15714                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 15715                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 15716                     }
 14379                     
 15717                     
 14380                     
 15718                     
 14381                     {
 15719                     {
 14382                 
 15720                 
 14383                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 15721                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 14407 
 15745 
 14408         {
 15746         {
 14409             identifier_c param_name("IN1");
 15747             identifier_c param_name("IN1");
 14410             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15748             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14411             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 15749             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 15750             symbol_c *IN1_type_symbol = NULL;
 14412             
 15751             
 14413             /* Get the value from a foo(<param_value>) style call */
 15752             /* Get the value from a foo(<param_value>) style call */
 14414             if (IN1_param_value == NULL)
 15753             if (IN1_param_value == NULL)
 14415               IN1_param_value = function_call_param_iterator.next();
 15754               IN1_param_value = function_call_param_iterator.next();
 14416             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 15755             if (IN1_param_value != NULL) {
 14417             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 15756               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
       
 15757               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
       
 15758             }
 14418             
 15759             
 14419             
 15760             
 14420             {
 15761             {
 14421         
 15762         
 14422                 {
 15763                 {
 14423                     identifier_c param_name("IN2");
 15764                     identifier_c param_name("IN2");
 14424                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15765                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14425                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 15766                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 15767                     symbol_c *IN2_type_symbol = NULL;
 14426                     
 15768                     
 14427                     /* Get the value from a foo(<param_value>) style call */
 15769                     /* Get the value from a foo(<param_value>) style call */
 14428                     if (IN2_param_value == NULL)
 15770                     if (IN2_param_value == NULL)
 14429                       IN2_param_value = function_call_param_iterator.next();
 15771                       IN2_param_value = function_call_param_iterator.next();
 14430                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 15772                     if (IN2_param_value != NULL) {
 14431                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 15773                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 15774                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 15775                     }
 14432                     
 15776                     
 14433                     
 15777                     
 14434                     {
 15778                     {
 14435                 
 15779                 
 14436                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 15780                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 14460 
 15804 
 14461         {
 15805         {
 14462             identifier_c param_name("IN");
 15806             identifier_c param_name("IN");
 14463             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15807             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14464             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 15808             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 14465             
 15809             symbol_c *IN_type_symbol = NULL;
 14466             /* Get the value from a foo(<param_value>) style call */
 15810             
 14467             if (IN_param_value == NULL)
 15811             /* Get the value from a foo(<param_value>) style call */
 14468               IN_param_value = function_call_param_iterator.next();
 15812             if (IN_param_value == NULL)
 14469             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 15813               IN_param_value = function_call_param_iterator.next();
 14470             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 15814             if (IN_param_value != NULL) {
 14471             
 15815               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 14472             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 15816               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 15817             }
       
 15818             
       
 15819             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 14473             {
 15820             {
 14474         
 15821         
 14475                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 15822                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 14476                 return return_type_symbol;
 15823                 return return_type_symbol;
 14477                 
 15824                 
 14493 
 15840 
 14494         {
 15841         {
 14495             identifier_c param_name("IN");
 15842             identifier_c param_name("IN");
 14496             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15843             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14497             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 15844             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 14498             
 15845             symbol_c *IN_type_symbol = NULL;
 14499             /* Get the value from a foo(<param_value>) style call */
 15846             
 14500             if (IN_param_value == NULL)
 15847             /* Get the value from a foo(<param_value>) style call */
 14501               IN_param_value = function_call_param_iterator.next();
 15848             if (IN_param_value == NULL)
 14502             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 15849               IN_param_value = function_call_param_iterator.next();
 14503             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 15850             if (IN_param_value != NULL) {
 14504             
 15851               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 14505             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 15852               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 15853             }
       
 15854             
       
 15855             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 14506             {
 15856             {
 14507         
 15857         
 14508                 {
 15858                 {
 14509                     identifier_c param_name("L");
 15859                     identifier_c param_name("L");
 14510                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15860                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14511                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
 15861                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
       
 15862                     symbol_c *L_type_symbol = NULL;
 14512                     
 15863                     
 14513                     /* Get the value from a foo(<param_value>) style call */
 15864                     /* Get the value from a foo(<param_value>) style call */
 14514                     if (L_param_value == NULL)
 15865                     if (L_param_value == NULL)
 14515                       L_param_value = function_call_param_iterator.next();
 15866                       L_param_value = function_call_param_iterator.next();
 14516                     symbol_c *L_type_symbol = search_expression_type->get_type(L_param_value);
 15867                     if (L_param_value != NULL) {
 14517                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 15868                       L_type_symbol = search_expression_type->get_type(L_param_value);
 14518                     
 15869                       last_type_symbol = last_type_symbol && L_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 14519                     if(search_expression_type->is_integer_type(L_type_symbol))
 15870                     }
       
 15871                     
       
 15872                     if(L_type_symbol == NULL || search_expression_type->is_integer_type(L_type_symbol))
 14520                     {
 15873                     {
 14521                 
 15874                 
 14522                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 15875                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 14523                         return return_type_symbol;
 15876                         return return_type_symbol;
 14524                         
 15877                         
 14546 
 15899 
 14547         {
 15900         {
 14548             identifier_c param_name("IN");
 15901             identifier_c param_name("IN");
 14549             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15902             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14550             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 15903             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 14551             
 15904             symbol_c *IN_type_symbol = NULL;
 14552             /* Get the value from a foo(<param_value>) style call */
 15905             
 14553             if (IN_param_value == NULL)
 15906             /* Get the value from a foo(<param_value>) style call */
 14554               IN_param_value = function_call_param_iterator.next();
 15907             if (IN_param_value == NULL)
 14555             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 15908               IN_param_value = function_call_param_iterator.next();
 14556             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 15909             if (IN_param_value != NULL) {
 14557             
 15910               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 14558             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 15911               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 15912             }
       
 15913             
       
 15914             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 14559             {
 15915             {
 14560         
 15916         
 14561                 {
 15917                 {
 14562                     identifier_c param_name("L");
 15918                     identifier_c param_name("L");
 14563                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15919                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14564                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
 15920                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
       
 15921                     symbol_c *L_type_symbol = NULL;
 14565                     
 15922                     
 14566                     /* Get the value from a foo(<param_value>) style call */
 15923                     /* Get the value from a foo(<param_value>) style call */
 14567                     if (L_param_value == NULL)
 15924                     if (L_param_value == NULL)
 14568                       L_param_value = function_call_param_iterator.next();
 15925                       L_param_value = function_call_param_iterator.next();
 14569                     symbol_c *L_type_symbol = search_expression_type->get_type(L_param_value);
 15926                     if (L_param_value != NULL) {
 14570                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 15927                       L_type_symbol = search_expression_type->get_type(L_param_value);
 14571                     
 15928                       last_type_symbol = last_type_symbol && L_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 14572                     if(search_expression_type->is_integer_type(L_type_symbol))
 15929                     }
       
 15930                     
       
 15931                     if(L_type_symbol == NULL || search_expression_type->is_integer_type(L_type_symbol))
 14573                     {
 15932                     {
 14574                 
 15933                 
 14575                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 15934                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 14576                         return return_type_symbol;
 15935                         return return_type_symbol;
 14577                         
 15936                         
 14599 
 15958 
 14600         {
 15959         {
 14601             identifier_c param_name("IN");
 15960             identifier_c param_name("IN");
 14602             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15961             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14603             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 15962             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 14604             
 15963             symbol_c *IN_type_symbol = NULL;
 14605             /* Get the value from a foo(<param_value>) style call */
 15964             
 14606             if (IN_param_value == NULL)
 15965             /* Get the value from a foo(<param_value>) style call */
 14607               IN_param_value = function_call_param_iterator.next();
 15966             if (IN_param_value == NULL)
 14608             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 15967               IN_param_value = function_call_param_iterator.next();
 14609             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 15968             if (IN_param_value != NULL) {
 14610             
 15969               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 14611             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 15970               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 15971             }
       
 15972             
       
 15973             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 14612             {
 15974             {
 14613         
 15975         
 14614                 {
 15976                 {
 14615                     identifier_c param_name("L");
 15977                     identifier_c param_name("L");
 14616                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15978                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14617                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
 15979                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
       
 15980                     symbol_c *L_type_symbol = NULL;
 14618                     
 15981                     
 14619                     /* Get the value from a foo(<param_value>) style call */
 15982                     /* Get the value from a foo(<param_value>) style call */
 14620                     if (L_param_value == NULL)
 15983                     if (L_param_value == NULL)
 14621                       L_param_value = function_call_param_iterator.next();
 15984                       L_param_value = function_call_param_iterator.next();
 14622                     symbol_c *L_type_symbol = search_expression_type->get_type(L_param_value);
 15985                     if (L_param_value != NULL) {
 14623                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 15986                       L_type_symbol = search_expression_type->get_type(L_param_value);
 14624                     
 15987                       last_type_symbol = last_type_symbol && L_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 14625                     if(search_expression_type->is_integer_type(L_type_symbol))
 15988                     }
       
 15989                     
       
 15990                     if(L_type_symbol == NULL || search_expression_type->is_integer_type(L_type_symbol))
 14626                     {
 15991                     {
 14627                 
 15992                 
 14628                         {
 15993                         {
 14629                             identifier_c param_name("P");
 15994                             identifier_c param_name("P");
 14630                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 15995                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14631                             symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
 15996                             symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
       
 15997                             symbol_c *P_type_symbol = NULL;
 14632                             
 15998                             
 14633                             /* Get the value from a foo(<param_value>) style call */
 15999                             /* Get the value from a foo(<param_value>) style call */
 14634                             if (P_param_value == NULL)
 16000                             if (P_param_value == NULL)
 14635                               P_param_value = function_call_param_iterator.next();
 16001                               P_param_value = function_call_param_iterator.next();
 14636                             symbol_c *P_type_symbol = search_expression_type->get_type(P_param_value);
 16002                             if (P_param_value != NULL) {
 14637                             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
 16003                               P_type_symbol = search_expression_type->get_type(P_param_value);
       
 16004                               last_type_symbol = last_type_symbol && P_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
       
 16005                             }
 14638                             
 16006                             
 14639                             if(search_expression_type->is_integer_type(P_type_symbol))
 16007                             if(P_type_symbol == NULL || search_expression_type->is_integer_type(P_type_symbol))
 14640                             {
 16008                             {
 14641                         
 16009                         
 14642                                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 16010                                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 14643                                 return return_type_symbol;
 16011                                 return return_type_symbol;
 14644                                 
 16012                                 
 14672 
 16040 
 14673         {
 16041         {
 14674             identifier_c param_name("IN1");
 16042             identifier_c param_name("IN1");
 14675             /* Get the value from a foo(<param_name> = <param_value>) style call */
 16043             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14676             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 16044             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 16045             symbol_c *IN1_type_symbol = NULL;
 14677             
 16046             
 14678             /* Get the value from a foo(<param_value>) style call */
 16047             /* Get the value from a foo(<param_value>) style call */
 14679             if (IN1_param_value == NULL)
 16048             if (IN1_param_value == NULL)
 14680               IN1_param_value = function_call_param_iterator.next();
 16049               IN1_param_value = function_call_param_iterator.next();
 14681             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 16050             if (IN1_param_value != NULL) {
 14682             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 16051               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 14683             
 16052               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 14684             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 16053             }
       
 16054             
       
 16055             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 14685             {
 16056             {
 14686         
 16057         
 14687                 {
 16058                 {
 14688                     identifier_c param_name("IN2");
 16059                     identifier_c param_name("IN2");
 14689                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 16060                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14690                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 16061                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 16062                     symbol_c *IN2_type_symbol = NULL;
 14691                     
 16063                     
 14692                     /* Get the value from a foo(<param_value>) style call */
 16064                     /* Get the value from a foo(<param_value>) style call */
 14693                     if (IN2_param_value == NULL)
 16065                     if (IN2_param_value == NULL)
 14694                       IN2_param_value = function_call_param_iterator.next();
 16066                       IN2_param_value = function_call_param_iterator.next();
 14695                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 16067                     if (IN2_param_value != NULL) {
 14696                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 16068                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14697                     
 16069                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14698                     if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 16070                     }
       
 16071                     
       
 16072                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 14699                     {
 16073                     {
 14700                 
 16074                 
 14701                         symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 16075                         symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 14702                         return return_type_symbol;
 16076                         return return_type_symbol;
 14703                         
 16077                         
 14707                     ERROR;
 16081                     ERROR;
 14708                 }
 16082                 }
 14709                 
 16083                 
 14710             }
 16084             }
 14711             
 16085             
 14712             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 16086             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 14713             {
 16087             {
 14714         
 16088         
 14715                 {
 16089                 {
 14716                     identifier_c param_name("IN2");
 16090                     identifier_c param_name("IN2");
 14717                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 16091                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14718                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 16092                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 16093                     symbol_c *IN2_type_symbol = NULL;
 14719                     
 16094                     
 14720                     /* Get the value from a foo(<param_value>) style call */
 16095                     /* Get the value from a foo(<param_value>) style call */
 14721                     if (IN2_param_value == NULL)
 16096                     if (IN2_param_value == NULL)
 14722                       IN2_param_value = function_call_param_iterator.next();
 16097                       IN2_param_value = function_call_param_iterator.next();
 14723                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 16098                     if (IN2_param_value != NULL) {
 14724                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 16099                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14725                     
 16100                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14726                     if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 16101                     }
       
 16102                     
       
 16103                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 14727                     {
 16104                     {
 14728                 
 16105                 
 14729                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 16106                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 14730                         return return_type_symbol;
 16107                         return return_type_symbol;
 14731                         
 16108                         
 14753 
 16130 
 14754         {
 16131         {
 14755             identifier_c param_name("IN1");
 16132             identifier_c param_name("IN1");
 14756             /* Get the value from a foo(<param_name> = <param_value>) style call */
 16133             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14757             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 16134             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 16135             symbol_c *IN1_type_symbol = NULL;
 14758             
 16136             
 14759             /* Get the value from a foo(<param_value>) style call */
 16137             /* Get the value from a foo(<param_value>) style call */
 14760             if (IN1_param_value == NULL)
 16138             if (IN1_param_value == NULL)
 14761               IN1_param_value = function_call_param_iterator.next();
 16139               IN1_param_value = function_call_param_iterator.next();
 14762             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 16140             if (IN1_param_value != NULL) {
 14763             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 16141               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 14764             
 16142               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 14765             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 16143             }
       
 16144             
       
 16145             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 14766             {
 16146             {
 14767         
 16147         
 14768                 {
 16148                 {
 14769                     identifier_c param_name("IN2");
 16149                     identifier_c param_name("IN2");
 14770                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 16150                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14771                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 16151                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 16152                     symbol_c *IN2_type_symbol = NULL;
 14772                     
 16153                     
 14773                     /* Get the value from a foo(<param_value>) style call */
 16154                     /* Get the value from a foo(<param_value>) style call */
 14774                     if (IN2_param_value == NULL)
 16155                     if (IN2_param_value == NULL)
 14775                       IN2_param_value = function_call_param_iterator.next();
 16156                       IN2_param_value = function_call_param_iterator.next();
 14776                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 16157                     if (IN2_param_value != NULL) {
 14777                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 16158                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14778                     
 16159                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14779                     if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 16160                     }
       
 16161                     
       
 16162                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 14780                     {
 16163                     {
 14781                 
 16164                 
 14782                         {
 16165                         {
 14783                             identifier_c param_name("P");
 16166                             identifier_c param_name("P");
 14784                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 16167                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14785                             symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
 16168                             symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
       
 16169                             symbol_c *P_type_symbol = NULL;
 14786                             
 16170                             
 14787                             /* Get the value from a foo(<param_value>) style call */
 16171                             /* Get the value from a foo(<param_value>) style call */
 14788                             if (P_param_value == NULL)
 16172                             if (P_param_value == NULL)
 14789                               P_param_value = function_call_param_iterator.next();
 16173                               P_param_value = function_call_param_iterator.next();
 14790                             symbol_c *P_type_symbol = search_expression_type->get_type(P_param_value);
 16174                             if (P_param_value != NULL) {
 14791                             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
 16175                               P_type_symbol = search_expression_type->get_type(P_param_value);
       
 16176                               last_type_symbol = last_type_symbol && P_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
       
 16177                             }
 14792                             
 16178                             
 14793                             if(search_expression_type->is_integer_type(P_type_symbol))
 16179                             if(P_type_symbol == NULL || search_expression_type->is_integer_type(P_type_symbol))
 14794                             {
 16180                             {
 14795                         
 16181                         
 14796                                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 16182                                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 14797                                 return return_type_symbol;
 16183                                 return return_type_symbol;
 14798                                 
 16184                                 
 14826 
 16212 
 14827         {
 16213         {
 14828             identifier_c param_name("IN");
 16214             identifier_c param_name("IN");
 14829             /* Get the value from a foo(<param_name> = <param_value>) style call */
 16215             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14830             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 16216             symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 14831             
 16217             symbol_c *IN_type_symbol = NULL;
 14832             /* Get the value from a foo(<param_value>) style call */
 16218             
 14833             if (IN_param_value == NULL)
 16219             /* Get the value from a foo(<param_value>) style call */
 14834               IN_param_value = function_call_param_iterator.next();
 16220             if (IN_param_value == NULL)
 14835             symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16221               IN_param_value = function_call_param_iterator.next();
 14836             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16222             if (IN_param_value != NULL) {
 14837             
 16223               IN_type_symbol = search_expression_type->get_type(IN_param_value);
 14838             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 16224               last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 16225             }
       
 16226             
       
 16227             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 14839             {
 16228             {
 14840         
 16229         
 14841                 {
 16230                 {
 14842                     identifier_c param_name("L");
 16231                     identifier_c param_name("L");
 14843                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 16232                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14844                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
 16233                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
       
 16234                     symbol_c *L_type_symbol = NULL;
 14845                     
 16235                     
 14846                     /* Get the value from a foo(<param_value>) style call */
 16236                     /* Get the value from a foo(<param_value>) style call */
 14847                     if (L_param_value == NULL)
 16237                     if (L_param_value == NULL)
 14848                       L_param_value = function_call_param_iterator.next();
 16238                       L_param_value = function_call_param_iterator.next();
 14849                     symbol_c *L_type_symbol = search_expression_type->get_type(L_param_value);
 16239                     if (L_param_value != NULL) {
 14850                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 16240                       L_type_symbol = search_expression_type->get_type(L_param_value);
 14851                     
 16241                       last_type_symbol = last_type_symbol && L_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 14852                     if(search_expression_type->is_integer_type(L_type_symbol))
 16242                     }
       
 16243                     
       
 16244                     if(L_type_symbol == NULL || search_expression_type->is_integer_type(L_type_symbol))
 14853                     {
 16245                     {
 14854                 
 16246                 
 14855                         {
 16247                         {
 14856                             identifier_c param_name("P");
 16248                             identifier_c param_name("P");
 14857                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 16249                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14858                             symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
 16250                             symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
       
 16251                             symbol_c *P_type_symbol = NULL;
 14859                             
 16252                             
 14860                             /* Get the value from a foo(<param_value>) style call */
 16253                             /* Get the value from a foo(<param_value>) style call */
 14861                             if (P_param_value == NULL)
 16254                             if (P_param_value == NULL)
 14862                               P_param_value = function_call_param_iterator.next();
 16255                               P_param_value = function_call_param_iterator.next();
 14863                             symbol_c *P_type_symbol = search_expression_type->get_type(P_param_value);
 16256                             if (P_param_value != NULL) {
 14864                             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
 16257                               P_type_symbol = search_expression_type->get_type(P_param_value);
       
 16258                               last_type_symbol = last_type_symbol && P_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
       
 16259                             }
 14865                             
 16260                             
 14866                             if(search_expression_type->is_integer_type(P_type_symbol))
 16261                             if(P_type_symbol == NULL || search_expression_type->is_integer_type(P_type_symbol))
 14867                             {
 16262                             {
 14868                         
 16263                         
 14869                                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 16264                                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 14870                                 return return_type_symbol;
 16265                                 return return_type_symbol;
 14871                                 
 16266                                 
 14899 
 16294 
 14900         {
 16295         {
 14901             identifier_c param_name("IN1");
 16296             identifier_c param_name("IN1");
 14902             /* Get the value from a foo(<param_name> = <param_value>) style call */
 16297             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14903             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 16298             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 16299             symbol_c *IN1_type_symbol = NULL;
 14904             
 16300             
 14905             /* Get the value from a foo(<param_value>) style call */
 16301             /* Get the value from a foo(<param_value>) style call */
 14906             if (IN1_param_value == NULL)
 16302             if (IN1_param_value == NULL)
 14907               IN1_param_value = function_call_param_iterator.next();
 16303               IN1_param_value = function_call_param_iterator.next();
 14908             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 16304             if (IN1_param_value != NULL) {
 14909             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 16305               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 14910             
 16306               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 14911             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 16307             }
       
 16308             
       
 16309             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 14912             {
 16310             {
 14913         
 16311         
 14914                 {
 16312                 {
 14915                     identifier_c param_name("IN2");
 16313                     identifier_c param_name("IN2");
 14916                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 16314                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14917                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 16315                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 16316                     symbol_c *IN2_type_symbol = NULL;
 14918                     
 16317                     
 14919                     /* Get the value from a foo(<param_value>) style call */
 16318                     /* Get the value from a foo(<param_value>) style call */
 14920                     if (IN2_param_value == NULL)
 16319                     if (IN2_param_value == NULL)
 14921                       IN2_param_value = function_call_param_iterator.next();
 16320                       IN2_param_value = function_call_param_iterator.next();
 14922                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 16321                     if (IN2_param_value != NULL) {
 14923                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 16322                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 14924                     
 16323                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 14925                     if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 16324                     }
       
 16325                     
       
 16326                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 14926                     {
 16327                     {
 14927                 
 16328                 
 14928                         {
 16329                         {
 14929                             identifier_c param_name("L");
 16330                             identifier_c param_name("L");
 14930                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 16331                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14931                             symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
 16332                             symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
       
 16333                             symbol_c *L_type_symbol = NULL;
 14932                             
 16334                             
 14933                             /* Get the value from a foo(<param_value>) style call */
 16335                             /* Get the value from a foo(<param_value>) style call */
 14934                             if (L_param_value == NULL)
 16336                             if (L_param_value == NULL)
 14935                               L_param_value = function_call_param_iterator.next();
 16337                               L_param_value = function_call_param_iterator.next();
 14936                             symbol_c *L_type_symbol = search_expression_type->get_type(L_param_value);
 16338                             if (L_param_value != NULL) {
 14937                             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 16339                               L_type_symbol = search_expression_type->get_type(L_param_value);
       
 16340                               last_type_symbol = last_type_symbol && L_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
       
 16341                             }
 14938                             
 16342                             
 14939                             if(search_expression_type->is_integer_type(L_type_symbol))
 16343                             if(L_type_symbol == NULL || search_expression_type->is_integer_type(L_type_symbol))
 14940                             {
 16344                             {
 14941                         
 16345                         
 14942                                 {
 16346                                 {
 14943                                     identifier_c param_name("P");
 16347                                     identifier_c param_name("P");
 14944                                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 16348                                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 14945                                     symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
 16349                                     symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
       
 16350                                     symbol_c *P_type_symbol = NULL;
 14946                                     
 16351                                     
 14947                                     /* Get the value from a foo(<param_value>) style call */
 16352                                     /* Get the value from a foo(<param_value>) style call */
 14948                                     if (P_param_value == NULL)
 16353                                     if (P_param_value == NULL)
 14949                                       P_param_value = function_call_param_iterator.next();
 16354                                       P_param_value = function_call_param_iterator.next();
 14950                                     symbol_c *P_type_symbol = search_expression_type->get_type(P_param_value);
 16355                                     if (P_param_value != NULL) {
 14951                                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
 16356                                       P_type_symbol = search_expression_type->get_type(P_param_value);
       
 16357                                       last_type_symbol = last_type_symbol && P_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
       
 16358                                     }
 14952                                     
 16359                                     
 14953                                     if(search_expression_type->is_integer_type(P_type_symbol))
 16360                                     if(P_type_symbol == NULL || search_expression_type->is_integer_type(P_type_symbol))
 14954                                     {
 16361                                     {
 14955                                 
 16362                                 
 14956                                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 16363                                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 14957                                         return return_type_symbol;
 16364                                         return return_type_symbol;
 14958                                         
 16365                                         
 14992 
 16399 
 14993         {
 16400         {
 14994             identifier_c param_name("IN1");
 16401             identifier_c param_name("IN1");
 14995             /* Get the value from a foo(<param_name> = <param_value>) style call */
 16402             /* Get the value from a foo(<param_name> = <param_value>) style call */
 14996             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 16403             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 16404             symbol_c *IN1_type_symbol = NULL;
 14997             
 16405             
 14998             /* Get the value from a foo(<param_value>) style call */
 16406             /* Get the value from a foo(<param_value>) style call */
 14999             if (IN1_param_value == NULL)
 16407             if (IN1_param_value == NULL)
 15000               IN1_param_value = function_call_param_iterator.next();
 16408               IN1_param_value = function_call_param_iterator.next();
 15001             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 16409             if (IN1_param_value != NULL) {
 15002             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 16410               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 15003             
 16411               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 15004             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 16412             }
       
 16413             
       
 16414             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 15005             {
 16415             {
 15006         
 16416         
 15007                 {
 16417                 {
 15008                     identifier_c param_name("IN2");
 16418                     identifier_c param_name("IN2");
 15009                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 16419                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 15010                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 16420                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 16421                     symbol_c *IN2_type_symbol = NULL;
 15011                     
 16422                     
 15012                     /* Get the value from a foo(<param_value>) style call */
 16423                     /* Get the value from a foo(<param_value>) style call */
 15013                     if (IN2_param_value == NULL)
 16424                     if (IN2_param_value == NULL)
 15014                       IN2_param_value = function_call_param_iterator.next();
 16425                       IN2_param_value = function_call_param_iterator.next();
 15015                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 16426                     if (IN2_param_value != NULL) {
 15016                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 16427                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 15017                     
 16428                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 15018                     if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 16429                     }
       
 16430                     
       
 16431                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 15019                     {
 16432                     {
 15020                 
 16433                 
 15021                         symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 16434                         symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 15022                         return return_type_symbol;
 16435                         return return_type_symbol;
 15023                         
 16436                         
 15059 
 16472 
 15060         {
 16473         {
 15061             symbol_c *IN_type_symbol = param_data_type;
 16474             symbol_c *IN_type_symbol = param_data_type;
 15062             last_type_symbol = param_data_type;
 16475             last_type_symbol = param_data_type;
 15063             
 16476             
 15064             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16477             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15065             {
 16478             {
 15066         
 16479         
 15067                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 16480                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 15068                 return return_type_symbol;
 16481                 return return_type_symbol;
 15069                 
 16482                 
 15085 
 16498 
 15086         {
 16499         {
 15087             symbol_c *IN_type_symbol = param_data_type;
 16500             symbol_c *IN_type_symbol = param_data_type;
 15088             last_type_symbol = param_data_type;
 16501             last_type_symbol = param_data_type;
 15089             
 16502             
 15090             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16503             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15091             {
 16504             {
 15092         
 16505         
 15093                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 16506                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 15094                 return return_type_symbol;
 16507                 return return_type_symbol;
 15095                 
 16508                 
 15111 
 16524 
 15112         {
 16525         {
 15113             symbol_c *IN_type_symbol = param_data_type;
 16526             symbol_c *IN_type_symbol = param_data_type;
 15114             last_type_symbol = param_data_type;
 16527             last_type_symbol = param_data_type;
 15115             
 16528             
 15116             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16529             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15117             {
 16530             {
 15118         
 16531         
 15119                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 16532                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 15120                 return return_type_symbol;
 16533                 return return_type_symbol;
 15121                 
 16534                 
 15137 
 16550 
 15138         {
 16551         {
 15139             symbol_c *IN_type_symbol = param_data_type;
 16552             symbol_c *IN_type_symbol = param_data_type;
 15140             last_type_symbol = param_data_type;
 16553             last_type_symbol = param_data_type;
 15141             
 16554             
 15142             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16555             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15143             {
 16556             {
 15144         
 16557         
 15145                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 16558                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 15146                 return return_type_symbol;
 16559                 return return_type_symbol;
 15147                 
 16560                 
 15163 
 16576 
 15164         {
 16577         {
 15165             symbol_c *IN_type_symbol = param_data_type;
 16578             symbol_c *IN_type_symbol = param_data_type;
 15166             last_type_symbol = param_data_type;
 16579             last_type_symbol = param_data_type;
 15167             
 16580             
 15168             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16581             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15169             {
 16582             {
 15170         
 16583         
 15171                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 16584                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 15172                 return return_type_symbol;
 16585                 return return_type_symbol;
 15173                 
 16586                 
 15189 
 16602 
 15190         {
 16603         {
 15191             symbol_c *IN_type_symbol = param_data_type;
 16604             symbol_c *IN_type_symbol = param_data_type;
 15192             last_type_symbol = param_data_type;
 16605             last_type_symbol = param_data_type;
 15193             
 16606             
 15194             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16607             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15195             {
 16608             {
 15196         
 16609         
 15197                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 16610                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 15198                 return return_type_symbol;
 16611                 return return_type_symbol;
 15199                 
 16612                 
 15215 
 16628 
 15216         {
 16629         {
 15217             symbol_c *IN_type_symbol = param_data_type;
 16630             symbol_c *IN_type_symbol = param_data_type;
 15218             last_type_symbol = param_data_type;
 16631             last_type_symbol = param_data_type;
 15219             
 16632             
 15220             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16633             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15221             {
 16634             {
 15222         
 16635         
 15223                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 16636                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 15224                 return return_type_symbol;
 16637                 return return_type_symbol;
 15225                 
 16638                 
 15241 
 16654 
 15242         {
 16655         {
 15243             symbol_c *IN_type_symbol = param_data_type;
 16656             symbol_c *IN_type_symbol = param_data_type;
 15244             last_type_symbol = param_data_type;
 16657             last_type_symbol = param_data_type;
 15245             
 16658             
 15246             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16659             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15247             {
 16660             {
 15248         
 16661         
 15249                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 16662                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 15250                 return return_type_symbol;
 16663                 return return_type_symbol;
 15251                 
 16664                 
 15267 
 16680 
 15268         {
 16681         {
 15269             symbol_c *IN_type_symbol = param_data_type;
 16682             symbol_c *IN_type_symbol = param_data_type;
 15270             last_type_symbol = param_data_type;
 16683             last_type_symbol = param_data_type;
 15271             
 16684             
 15272             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16685             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15273             {
 16686             {
 15274         
 16687         
 15275                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 16688                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 15276                 return return_type_symbol;
 16689                 return return_type_symbol;
 15277                 
 16690                 
 15293 
 16706 
 15294         {
 16707         {
 15295             symbol_c *IN_type_symbol = param_data_type;
 16708             symbol_c *IN_type_symbol = param_data_type;
 15296             last_type_symbol = param_data_type;
 16709             last_type_symbol = param_data_type;
 15297             
 16710             
 15298             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16711             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15299             {
 16712             {
 15300         
 16713         
 15301                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 16714                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 15302                 return return_type_symbol;
 16715                 return return_type_symbol;
 15303                 
 16716                 
 15319 
 16732 
 15320         {
 16733         {
 15321             symbol_c *IN_type_symbol = param_data_type;
 16734             symbol_c *IN_type_symbol = param_data_type;
 15322             last_type_symbol = param_data_type;
 16735             last_type_symbol = param_data_type;
 15323             
 16736             
 15324             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16737             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15325             {
 16738             {
 15326         
 16739         
 15327                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 16740                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 15328                 return return_type_symbol;
 16741                 return return_type_symbol;
 15329                 
 16742                 
 15345 
 16758 
 15346         {
 16759         {
 15347             symbol_c *IN_type_symbol = param_data_type;
 16760             symbol_c *IN_type_symbol = param_data_type;
 15348             last_type_symbol = param_data_type;
 16761             last_type_symbol = param_data_type;
 15349             
 16762             
 15350             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16763             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15351             {
 16764             {
 15352         
 16765         
 15353                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 16766                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 15354                 return return_type_symbol;
 16767                 return return_type_symbol;
 15355                 
 16768                 
 15371 
 16784 
 15372         {
 16785         {
 15373             symbol_c *IN_type_symbol = param_data_type;
 16786             symbol_c *IN_type_symbol = param_data_type;
 15374             last_type_symbol = param_data_type;
 16787             last_type_symbol = param_data_type;
 15375             
 16788             
 15376             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16789             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15377             {
 16790             {
 15378         
 16791         
 15379                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 16792                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 15380                 return return_type_symbol;
 16793                 return return_type_symbol;
 15381                 
 16794                 
 15397 
 16810 
 15398         {
 16811         {
 15399             symbol_c *IN_type_symbol = param_data_type;
 16812             symbol_c *IN_type_symbol = param_data_type;
 15400             last_type_symbol = param_data_type;
 16813             last_type_symbol = param_data_type;
 15401             
 16814             
 15402             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16815             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15403             {
 16816             {
 15404         
 16817         
 15405                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 16818                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 15406                 return return_type_symbol;
 16819                 return return_type_symbol;
 15407                 
 16820                 
 15423 
 16836 
 15424         {
 16837         {
 15425             symbol_c *IN_type_symbol = param_data_type;
 16838             symbol_c *IN_type_symbol = param_data_type;
 15426             last_type_symbol = param_data_type;
 16839             last_type_symbol = param_data_type;
 15427             
 16840             
 15428             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16841             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15429             {
 16842             {
 15430         
 16843         
 15431                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 16844                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 15432                 return return_type_symbol;
 16845                 return return_type_symbol;
 15433                 
 16846                 
 15449 
 16862 
 15450         {
 16863         {
 15451             symbol_c *IN_type_symbol = param_data_type;
 16864             symbol_c *IN_type_symbol = param_data_type;
 15452             last_type_symbol = param_data_type;
 16865             last_type_symbol = param_data_type;
 15453             
 16866             
 15454             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16867             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15455             {
 16868             {
 15456         
 16869         
 15457                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 16870                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 15458                 return return_type_symbol;
 16871                 return return_type_symbol;
 15459                 
 16872                 
 15475 
 16888 
 15476         {
 16889         {
 15477             symbol_c *IN_type_symbol = param_data_type;
 16890             symbol_c *IN_type_symbol = param_data_type;
 15478             last_type_symbol = param_data_type;
 16891             last_type_symbol = param_data_type;
 15479             
 16892             
 15480             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16893             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15481             {
 16894             {
 15482         
 16895         
 15483                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 16896                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 15484                 return return_type_symbol;
 16897                 return return_type_symbol;
 15485                 
 16898                 
 15501 
 16914 
 15502         {
 16915         {
 15503             symbol_c *IN_type_symbol = param_data_type;
 16916             symbol_c *IN_type_symbol = param_data_type;
 15504             last_type_symbol = param_data_type;
 16917             last_type_symbol = param_data_type;
 15505             
 16918             
 15506             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16919             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15507             {
 16920             {
 15508         
 16921         
 15509                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 16922                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 15510                 return return_type_symbol;
 16923                 return return_type_symbol;
 15511                 
 16924                 
 15527 
 16940 
 15528         {
 16941         {
 15529             symbol_c *IN_type_symbol = param_data_type;
 16942             symbol_c *IN_type_symbol = param_data_type;
 15530             last_type_symbol = param_data_type;
 16943             last_type_symbol = param_data_type;
 15531             
 16944             
 15532             if(search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 16945             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
 15533             {
 16946             {
 15534         
 16947         
 15535                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 16948                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 15536                 return return_type_symbol;
 16949                 return return_type_symbol;
 15537                 
 16950                 
 15553 
 16966 
 15554         {
 16967         {
 15555             symbol_c *IN_type_symbol = param_data_type;
 16968             symbol_c *IN_type_symbol = param_data_type;
 15556             last_type_symbol = param_data_type;
 16969             last_type_symbol = param_data_type;
 15557             
 16970             
 15558             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 16971             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15559             {
 16972             {
 15560         
 16973         
 15561                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 16974                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 15562                 return return_type_symbol;
 16975                 return return_type_symbol;
 15563                 
 16976                 
 15579 
 16992 
 15580         {
 16993         {
 15581             symbol_c *IN_type_symbol = param_data_type;
 16994             symbol_c *IN_type_symbol = param_data_type;
 15582             last_type_symbol = param_data_type;
 16995             last_type_symbol = param_data_type;
 15583             
 16996             
 15584             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 16997             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15585             {
 16998             {
 15586         
 16999         
 15587                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 17000                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 15588                 return return_type_symbol;
 17001                 return return_type_symbol;
 15589                 
 17002                 
 15605 
 17018 
 15606         {
 17019         {
 15607             symbol_c *IN_type_symbol = param_data_type;
 17020             symbol_c *IN_type_symbol = param_data_type;
 15608             last_type_symbol = param_data_type;
 17021             last_type_symbol = param_data_type;
 15609             
 17022             
 15610             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17023             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15611             {
 17024             {
 15612         
 17025         
 15613                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 17026                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 15614                 return return_type_symbol;
 17027                 return return_type_symbol;
 15615                 
 17028                 
 15631 
 17044 
 15632         {
 17045         {
 15633             symbol_c *IN_type_symbol = param_data_type;
 17046             symbol_c *IN_type_symbol = param_data_type;
 15634             last_type_symbol = param_data_type;
 17047             last_type_symbol = param_data_type;
 15635             
 17048             
 15636             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17049             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15637             {
 17050             {
 15638         
 17051         
 15639                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 17052                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 15640                 return return_type_symbol;
 17053                 return return_type_symbol;
 15641                 
 17054                 
 15657 
 17070 
 15658         {
 17071         {
 15659             symbol_c *IN_type_symbol = param_data_type;
 17072             symbol_c *IN_type_symbol = param_data_type;
 15660             last_type_symbol = param_data_type;
 17073             last_type_symbol = param_data_type;
 15661             
 17074             
 15662             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17075             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15663             {
 17076             {
 15664         
 17077         
 15665                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 17078                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 15666                 return return_type_symbol;
 17079                 return return_type_symbol;
 15667                 
 17080                 
 15683 
 17096 
 15684         {
 17097         {
 15685             symbol_c *IN_type_symbol = param_data_type;
 17098             symbol_c *IN_type_symbol = param_data_type;
 15686             last_type_symbol = param_data_type;
 17099             last_type_symbol = param_data_type;
 15687             
 17100             
 15688             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17101             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15689             {
 17102             {
 15690         
 17103         
 15691                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 17104                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 15692                 return return_type_symbol;
 17105                 return return_type_symbol;
 15693                 
 17106                 
 15709 
 17122 
 15710         {
 17123         {
 15711             symbol_c *IN_type_symbol = param_data_type;
 17124             symbol_c *IN_type_symbol = param_data_type;
 15712             last_type_symbol = param_data_type;
 17125             last_type_symbol = param_data_type;
 15713             
 17126             
 15714             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17127             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15715             {
 17128             {
 15716         
 17129         
 15717                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 17130                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 15718                 return return_type_symbol;
 17131                 return return_type_symbol;
 15719                 
 17132                 
 15735 
 17148 
 15736         {
 17149         {
 15737             symbol_c *IN_type_symbol = param_data_type;
 17150             symbol_c *IN_type_symbol = param_data_type;
 15738             last_type_symbol = param_data_type;
 17151             last_type_symbol = param_data_type;
 15739             
 17152             
 15740             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17153             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15741             {
 17154             {
 15742         
 17155         
 15743                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 17156                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 15744                 return return_type_symbol;
 17157                 return return_type_symbol;
 15745                 
 17158                 
 15761 
 17174 
 15762         {
 17175         {
 15763             symbol_c *IN_type_symbol = param_data_type;
 17176             symbol_c *IN_type_symbol = param_data_type;
 15764             last_type_symbol = param_data_type;
 17177             last_type_symbol = param_data_type;
 15765             
 17178             
 15766             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17179             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15767             {
 17180             {
 15768         
 17181         
 15769                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 17182                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 15770                 return return_type_symbol;
 17183                 return return_type_symbol;
 15771                 
 17184                 
 15787 
 17200 
 15788         {
 17201         {
 15789             symbol_c *IN_type_symbol = param_data_type;
 17202             symbol_c *IN_type_symbol = param_data_type;
 15790             last_type_symbol = param_data_type;
 17203             last_type_symbol = param_data_type;
 15791             
 17204             
 15792             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17205             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15793             {
 17206             {
 15794         
 17207         
 15795                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 17208                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 15796                 return return_type_symbol;
 17209                 return return_type_symbol;
 15797                 
 17210                 
 15813 
 17226 
 15814         {
 17227         {
 15815             symbol_c *IN_type_symbol = param_data_type;
 17228             symbol_c *IN_type_symbol = param_data_type;
 15816             last_type_symbol = param_data_type;
 17229             last_type_symbol = param_data_type;
 15817             
 17230             
 15818             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17231             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15819             {
 17232             {
 15820         
 17233         
 15821                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 17234                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 15822                 return return_type_symbol;
 17235                 return return_type_symbol;
 15823                 
 17236                 
 15839 
 17252 
 15840         {
 17253         {
 15841             symbol_c *IN_type_symbol = param_data_type;
 17254             symbol_c *IN_type_symbol = param_data_type;
 15842             last_type_symbol = param_data_type;
 17255             last_type_symbol = param_data_type;
 15843             
 17256             
 15844             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17257             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15845             {
 17258             {
 15846         
 17259         
 15847                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 17260                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 15848                 return return_type_symbol;
 17261                 return return_type_symbol;
 15849                 
 17262                 
 15865 
 17278 
 15866         {
 17279         {
 15867             symbol_c *IN_type_symbol = param_data_type;
 17280             symbol_c *IN_type_symbol = param_data_type;
 15868             last_type_symbol = param_data_type;
 17281             last_type_symbol = param_data_type;
 15869             
 17282             
 15870             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17283             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15871             {
 17284             {
 15872         
 17285         
 15873                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 17286                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 15874                 return return_type_symbol;
 17287                 return return_type_symbol;
 15875                 
 17288                 
 15891 
 17304 
 15892         {
 17305         {
 15893             symbol_c *IN_type_symbol = param_data_type;
 17306             symbol_c *IN_type_symbol = param_data_type;
 15894             last_type_symbol = param_data_type;
 17307             last_type_symbol = param_data_type;
 15895             
 17308             
 15896             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17309             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15897             {
 17310             {
 15898         
 17311         
 15899                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 17312                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 15900                 return return_type_symbol;
 17313                 return return_type_symbol;
 15901                 
 17314                 
 15917 
 17330 
 15918         {
 17331         {
 15919             symbol_c *IN_type_symbol = param_data_type;
 17332             symbol_c *IN_type_symbol = param_data_type;
 15920             last_type_symbol = param_data_type;
 17333             last_type_symbol = param_data_type;
 15921             
 17334             
 15922             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17335             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15923             {
 17336             {
 15924         
 17337         
 15925                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 17338                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 15926                 return return_type_symbol;
 17339                 return return_type_symbol;
 15927                 
 17340                 
 15943 
 17356 
 15944         {
 17357         {
 15945             symbol_c *IN_type_symbol = param_data_type;
 17358             symbol_c *IN_type_symbol = param_data_type;
 15946             last_type_symbol = param_data_type;
 17359             last_type_symbol = param_data_type;
 15947             
 17360             
 15948             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17361             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15949             {
 17362             {
 15950         
 17363         
 15951                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 17364                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 15952                 return return_type_symbol;
 17365                 return return_type_symbol;
 15953                 
 17366                 
 15969 
 17382 
 15970         {
 17383         {
 15971             symbol_c *IN_type_symbol = param_data_type;
 17384             symbol_c *IN_type_symbol = param_data_type;
 15972             last_type_symbol = param_data_type;
 17385             last_type_symbol = param_data_type;
 15973             
 17386             
 15974             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17387             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 15975             {
 17388             {
 15976         
 17389         
 15977                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 17390                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 15978                 return return_type_symbol;
 17391                 return return_type_symbol;
 15979                 
 17392                 
 15995 
 17408 
 15996         {
 17409         {
 15997             symbol_c *IN_type_symbol = param_data_type;
 17410             symbol_c *IN_type_symbol = param_data_type;
 15998             last_type_symbol = param_data_type;
 17411             last_type_symbol = param_data_type;
 15999             
 17412             
 16000             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17413             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 16001             {
 17414             {
 16002         
 17415         
 16003                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 17416                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 16004                 return return_type_symbol;
 17417                 return return_type_symbol;
 16005                 
 17418                 
 16021 
 17434 
 16022         {
 17435         {
 16023             symbol_c *IN_type_symbol = param_data_type;
 17436             symbol_c *IN_type_symbol = param_data_type;
 16024             last_type_symbol = param_data_type;
 17437             last_type_symbol = param_data_type;
 16025             
 17438             
 16026             if(search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 17439             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
 16027             {
 17440             {
 16028         
 17441         
 16029                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 17442                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 16030                 return return_type_symbol;
 17443                 return return_type_symbol;
 16031                 
 17444                 
 16047 
 17460 
 16048         {
 17461         {
 16049             symbol_c *IN_type_symbol = param_data_type;
 17462             symbol_c *IN_type_symbol = param_data_type;
 16050             last_type_symbol = param_data_type;
 17463             last_type_symbol = param_data_type;
 16051             
 17464             
 16052             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17465             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16053             {
 17466             {
 16054         
 17467         
 16055                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 17468                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 16056                 return return_type_symbol;
 17469                 return return_type_symbol;
 16057                 
 17470                 
 16073 
 17486 
 16074         {
 17487         {
 16075             symbol_c *IN_type_symbol = param_data_type;
 17488             symbol_c *IN_type_symbol = param_data_type;
 16076             last_type_symbol = param_data_type;
 17489             last_type_symbol = param_data_type;
 16077             
 17490             
 16078             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17491             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16079             {
 17492             {
 16080         
 17493         
 16081                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 17494                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 16082                 return return_type_symbol;
 17495                 return return_type_symbol;
 16083                 
 17496                 
 16099 
 17512 
 16100         {
 17513         {
 16101             symbol_c *IN_type_symbol = param_data_type;
 17514             symbol_c *IN_type_symbol = param_data_type;
 16102             last_type_symbol = param_data_type;
 17515             last_type_symbol = param_data_type;
 16103             
 17516             
 16104             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17517             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16105             {
 17518             {
 16106         
 17519         
 16107                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 17520                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 16108                 return return_type_symbol;
 17521                 return return_type_symbol;
 16109                 
 17522                 
 16125 
 17538 
 16126         {
 17539         {
 16127             symbol_c *IN_type_symbol = param_data_type;
 17540             symbol_c *IN_type_symbol = param_data_type;
 16128             last_type_symbol = param_data_type;
 17541             last_type_symbol = param_data_type;
 16129             
 17542             
 16130             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17543             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16131             {
 17544             {
 16132         
 17545         
 16133                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 17546                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 16134                 return return_type_symbol;
 17547                 return return_type_symbol;
 16135                 
 17548                 
 16151 
 17564 
 16152         {
 17565         {
 16153             symbol_c *IN_type_symbol = param_data_type;
 17566             symbol_c *IN_type_symbol = param_data_type;
 16154             last_type_symbol = param_data_type;
 17567             last_type_symbol = param_data_type;
 16155             
 17568             
 16156             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17569             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16157             {
 17570             {
 16158         
 17571         
 16159                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 17572                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 16160                 return return_type_symbol;
 17573                 return return_type_symbol;
 16161                 
 17574                 
 16177 
 17590 
 16178         {
 17591         {
 16179             symbol_c *IN_type_symbol = param_data_type;
 17592             symbol_c *IN_type_symbol = param_data_type;
 16180             last_type_symbol = param_data_type;
 17593             last_type_symbol = param_data_type;
 16181             
 17594             
 16182             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17595             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16183             {
 17596             {
 16184         
 17597         
 16185                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 17598                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 16186                 return return_type_symbol;
 17599                 return return_type_symbol;
 16187                 
 17600                 
 16203 
 17616 
 16204         {
 17617         {
 16205             symbol_c *IN_type_symbol = param_data_type;
 17618             symbol_c *IN_type_symbol = param_data_type;
 16206             last_type_symbol = param_data_type;
 17619             last_type_symbol = param_data_type;
 16207             
 17620             
 16208             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17621             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16209             {
 17622             {
 16210         
 17623         
 16211                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 17624                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 16212                 return return_type_symbol;
 17625                 return return_type_symbol;
 16213                 
 17626                 
 16229 
 17642 
 16230         {
 17643         {
 16231             symbol_c *IN_type_symbol = param_data_type;
 17644             symbol_c *IN_type_symbol = param_data_type;
 16232             last_type_symbol = param_data_type;
 17645             last_type_symbol = param_data_type;
 16233             
 17646             
 16234             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17647             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16235             {
 17648             {
 16236         
 17649         
 16237                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 17650                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 16238                 return return_type_symbol;
 17651                 return return_type_symbol;
 16239                 
 17652                 
 16255 
 17668 
 16256         {
 17669         {
 16257             symbol_c *IN_type_symbol = param_data_type;
 17670             symbol_c *IN_type_symbol = param_data_type;
 16258             last_type_symbol = param_data_type;
 17671             last_type_symbol = param_data_type;
 16259             
 17672             
 16260             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17673             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16261             {
 17674             {
 16262         
 17675         
 16263                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 17676                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 16264                 return return_type_symbol;
 17677                 return return_type_symbol;
 16265                 
 17678                 
 16281 
 17694 
 16282         {
 17695         {
 16283             symbol_c *IN_type_symbol = param_data_type;
 17696             symbol_c *IN_type_symbol = param_data_type;
 16284             last_type_symbol = param_data_type;
 17697             last_type_symbol = param_data_type;
 16285             
 17698             
 16286             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17699             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16287             {
 17700             {
 16288         
 17701         
 16289                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 17702                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 16290                 return return_type_symbol;
 17703                 return return_type_symbol;
 16291                 
 17704                 
 16307 
 17720 
 16308         {
 17721         {
 16309             symbol_c *IN_type_symbol = param_data_type;
 17722             symbol_c *IN_type_symbol = param_data_type;
 16310             last_type_symbol = param_data_type;
 17723             last_type_symbol = param_data_type;
 16311             
 17724             
 16312             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17725             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16313             {
 17726             {
 16314         
 17727         
 16315                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 17728                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 16316                 return return_type_symbol;
 17729                 return return_type_symbol;
 16317                 
 17730                 
 16333 
 17746 
 16334         {
 17747         {
 16335             symbol_c *IN_type_symbol = param_data_type;
 17748             symbol_c *IN_type_symbol = param_data_type;
 16336             last_type_symbol = param_data_type;
 17749             last_type_symbol = param_data_type;
 16337             
 17750             
 16338             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17751             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16339             {
 17752             {
 16340         
 17753         
 16341                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 17754                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 16342                 return return_type_symbol;
 17755                 return return_type_symbol;
 16343                 
 17756                 
 16359 
 17772 
 16360         {
 17773         {
 16361             symbol_c *IN_type_symbol = param_data_type;
 17774             symbol_c *IN_type_symbol = param_data_type;
 16362             last_type_symbol = param_data_type;
 17775             last_type_symbol = param_data_type;
 16363             
 17776             
 16364             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17777             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16365             {
 17778             {
 16366         
 17779         
 16367                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 17780                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 16368                 return return_type_symbol;
 17781                 return return_type_symbol;
 16369                 
 17782                 
 16385 
 17798 
 16386         {
 17799         {
 16387             symbol_c *IN_type_symbol = param_data_type;
 17800             symbol_c *IN_type_symbol = param_data_type;
 16388             last_type_symbol = param_data_type;
 17801             last_type_symbol = param_data_type;
 16389             
 17802             
 16390             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17803             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16391             {
 17804             {
 16392         
 17805         
 16393                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 17806                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 16394                 return return_type_symbol;
 17807                 return return_type_symbol;
 16395                 
 17808                 
 16411 
 17824 
 16412         {
 17825         {
 16413             symbol_c *IN_type_symbol = param_data_type;
 17826             symbol_c *IN_type_symbol = param_data_type;
 16414             last_type_symbol = param_data_type;
 17827             last_type_symbol = param_data_type;
 16415             
 17828             
 16416             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17829             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16417             {
 17830             {
 16418         
 17831         
 16419                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 17832                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 16420                 return return_type_symbol;
 17833                 return return_type_symbol;
 16421                 
 17834                 
 16437 
 17850 
 16438         {
 17851         {
 16439             symbol_c *IN_type_symbol = param_data_type;
 17852             symbol_c *IN_type_symbol = param_data_type;
 16440             last_type_symbol = param_data_type;
 17853             last_type_symbol = param_data_type;
 16441             
 17854             
 16442             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17855             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16443             {
 17856             {
 16444         
 17857         
 16445                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 17858                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 16446                 return return_type_symbol;
 17859                 return return_type_symbol;
 16447                 
 17860                 
 16463 
 17876 
 16464         {
 17877         {
 16465             symbol_c *IN_type_symbol = param_data_type;
 17878             symbol_c *IN_type_symbol = param_data_type;
 16466             last_type_symbol = param_data_type;
 17879             last_type_symbol = param_data_type;
 16467             
 17880             
 16468             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17881             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16469             {
 17882             {
 16470         
 17883         
 16471                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 17884                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 16472                 return return_type_symbol;
 17885                 return return_type_symbol;
 16473                 
 17886                 
 16489 
 17902 
 16490         {
 17903         {
 16491             symbol_c *IN_type_symbol = param_data_type;
 17904             symbol_c *IN_type_symbol = param_data_type;
 16492             last_type_symbol = param_data_type;
 17905             last_type_symbol = param_data_type;
 16493             
 17906             
 16494             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17907             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16495             {
 17908             {
 16496         
 17909         
 16497                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 17910                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 16498                 return return_type_symbol;
 17911                 return return_type_symbol;
 16499                 
 17912                 
 16515 
 17928 
 16516         {
 17929         {
 16517             symbol_c *IN_type_symbol = param_data_type;
 17930             symbol_c *IN_type_symbol = param_data_type;
 16518             last_type_symbol = param_data_type;
 17931             last_type_symbol = param_data_type;
 16519             
 17932             
 16520             if(search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 17933             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
 16521             {
 17934             {
 16522         
 17935         
 16523                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 17936                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 16524                 return return_type_symbol;
 17937                 return return_type_symbol;
 16525                 
 17938                 
 16541 
 17954 
 16542         {
 17955         {
 16543             symbol_c *IN_type_symbol = param_data_type;
 17956             symbol_c *IN_type_symbol = param_data_type;
 16544             last_type_symbol = param_data_type;
 17957             last_type_symbol = param_data_type;
 16545             
 17958             
 16546             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 17959             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16547             {
 17960             {
 16548         
 17961         
 16549                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 17962                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 16550                 return return_type_symbol;
 17963                 return return_type_symbol;
 16551                 
 17964                 
 16567 
 17980 
 16568         {
 17981         {
 16569             symbol_c *IN_type_symbol = param_data_type;
 17982             symbol_c *IN_type_symbol = param_data_type;
 16570             last_type_symbol = param_data_type;
 17983             last_type_symbol = param_data_type;
 16571             
 17984             
 16572             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 17985             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16573             {
 17986             {
 16574         
 17987         
 16575                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 17988                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 16576                 return return_type_symbol;
 17989                 return return_type_symbol;
 16577                 
 17990                 
 16593 
 18006 
 16594         {
 18007         {
 16595             symbol_c *IN_type_symbol = param_data_type;
 18008             symbol_c *IN_type_symbol = param_data_type;
 16596             last_type_symbol = param_data_type;
 18009             last_type_symbol = param_data_type;
 16597             
 18010             
 16598             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18011             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16599             {
 18012             {
 16600         
 18013         
 16601                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 18014                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 16602                 return return_type_symbol;
 18015                 return return_type_symbol;
 16603                 
 18016                 
 16619 
 18032 
 16620         {
 18033         {
 16621             symbol_c *IN_type_symbol = param_data_type;
 18034             symbol_c *IN_type_symbol = param_data_type;
 16622             last_type_symbol = param_data_type;
 18035             last_type_symbol = param_data_type;
 16623             
 18036             
 16624             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18037             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16625             {
 18038             {
 16626         
 18039         
 16627                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 18040                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 16628                 return return_type_symbol;
 18041                 return return_type_symbol;
 16629                 
 18042                 
 16645 
 18058 
 16646         {
 18059         {
 16647             symbol_c *IN_type_symbol = param_data_type;
 18060             symbol_c *IN_type_symbol = param_data_type;
 16648             last_type_symbol = param_data_type;
 18061             last_type_symbol = param_data_type;
 16649             
 18062             
 16650             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18063             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16651             {
 18064             {
 16652         
 18065         
 16653                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 18066                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 16654                 return return_type_symbol;
 18067                 return return_type_symbol;
 16655                 
 18068                 
 16671 
 18084 
 16672         {
 18085         {
 16673             symbol_c *IN_type_symbol = param_data_type;
 18086             symbol_c *IN_type_symbol = param_data_type;
 16674             last_type_symbol = param_data_type;
 18087             last_type_symbol = param_data_type;
 16675             
 18088             
 16676             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18089             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16677             {
 18090             {
 16678         
 18091         
 16679                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 18092                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 16680                 return return_type_symbol;
 18093                 return return_type_symbol;
 16681                 
 18094                 
 16697 
 18110 
 16698         {
 18111         {
 16699             symbol_c *IN_type_symbol = param_data_type;
 18112             symbol_c *IN_type_symbol = param_data_type;
 16700             last_type_symbol = param_data_type;
 18113             last_type_symbol = param_data_type;
 16701             
 18114             
 16702             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18115             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16703             {
 18116             {
 16704         
 18117         
 16705                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 18118                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 16706                 return return_type_symbol;
 18119                 return return_type_symbol;
 16707                 
 18120                 
 16723 
 18136 
 16724         {
 18137         {
 16725             symbol_c *IN_type_symbol = param_data_type;
 18138             symbol_c *IN_type_symbol = param_data_type;
 16726             last_type_symbol = param_data_type;
 18139             last_type_symbol = param_data_type;
 16727             
 18140             
 16728             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18141             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16729             {
 18142             {
 16730         
 18143         
 16731                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 18144                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 16732                 return return_type_symbol;
 18145                 return return_type_symbol;
 16733                 
 18146                 
 16749 
 18162 
 16750         {
 18163         {
 16751             symbol_c *IN_type_symbol = param_data_type;
 18164             symbol_c *IN_type_symbol = param_data_type;
 16752             last_type_symbol = param_data_type;
 18165             last_type_symbol = param_data_type;
 16753             
 18166             
 16754             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18167             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16755             {
 18168             {
 16756         
 18169         
 16757                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 18170                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 16758                 return return_type_symbol;
 18171                 return return_type_symbol;
 16759                 
 18172                 
 16775 
 18188 
 16776         {
 18189         {
 16777             symbol_c *IN_type_symbol = param_data_type;
 18190             symbol_c *IN_type_symbol = param_data_type;
 16778             last_type_symbol = param_data_type;
 18191             last_type_symbol = param_data_type;
 16779             
 18192             
 16780             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18193             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16781             {
 18194             {
 16782         
 18195         
 16783                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 18196                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 16784                 return return_type_symbol;
 18197                 return return_type_symbol;
 16785                 
 18198                 
 16801 
 18214 
 16802         {
 18215         {
 16803             symbol_c *IN_type_symbol = param_data_type;
 18216             symbol_c *IN_type_symbol = param_data_type;
 16804             last_type_symbol = param_data_type;
 18217             last_type_symbol = param_data_type;
 16805             
 18218             
 16806             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18219             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16807             {
 18220             {
 16808         
 18221         
 16809                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 18222                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 16810                 return return_type_symbol;
 18223                 return return_type_symbol;
 16811                 
 18224                 
 16827 
 18240 
 16828         {
 18241         {
 16829             symbol_c *IN_type_symbol = param_data_type;
 18242             symbol_c *IN_type_symbol = param_data_type;
 16830             last_type_symbol = param_data_type;
 18243             last_type_symbol = param_data_type;
 16831             
 18244             
 16832             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18245             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16833             {
 18246             {
 16834         
 18247         
 16835                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 18248                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 16836                 return return_type_symbol;
 18249                 return return_type_symbol;
 16837                 
 18250                 
 16853 
 18266 
 16854         {
 18267         {
 16855             symbol_c *IN_type_symbol = param_data_type;
 18268             symbol_c *IN_type_symbol = param_data_type;
 16856             last_type_symbol = param_data_type;
 18269             last_type_symbol = param_data_type;
 16857             
 18270             
 16858             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18271             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16859             {
 18272             {
 16860         
 18273         
 16861                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 18274                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 16862                 return return_type_symbol;
 18275                 return return_type_symbol;
 16863                 
 18276                 
 16879 
 18292 
 16880         {
 18293         {
 16881             symbol_c *IN_type_symbol = param_data_type;
 18294             symbol_c *IN_type_symbol = param_data_type;
 16882             last_type_symbol = param_data_type;
 18295             last_type_symbol = param_data_type;
 16883             
 18296             
 16884             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18297             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16885             {
 18298             {
 16886         
 18299         
 16887                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 18300                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 16888                 return return_type_symbol;
 18301                 return return_type_symbol;
 16889                 
 18302                 
 16905 
 18318 
 16906         {
 18319         {
 16907             symbol_c *IN_type_symbol = param_data_type;
 18320             symbol_c *IN_type_symbol = param_data_type;
 16908             last_type_symbol = param_data_type;
 18321             last_type_symbol = param_data_type;
 16909             
 18322             
 16910             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18323             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16911             {
 18324             {
 16912         
 18325         
 16913                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 18326                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 16914                 return return_type_symbol;
 18327                 return return_type_symbol;
 16915                 
 18328                 
 16931 
 18344 
 16932         {
 18345         {
 16933             symbol_c *IN_type_symbol = param_data_type;
 18346             symbol_c *IN_type_symbol = param_data_type;
 16934             last_type_symbol = param_data_type;
 18347             last_type_symbol = param_data_type;
 16935             
 18348             
 16936             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18349             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16937             {
 18350             {
 16938         
 18351         
 16939                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 18352                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 16940                 return return_type_symbol;
 18353                 return return_type_symbol;
 16941                 
 18354                 
 16957 
 18370 
 16958         {
 18371         {
 16959             symbol_c *IN_type_symbol = param_data_type;
 18372             symbol_c *IN_type_symbol = param_data_type;
 16960             last_type_symbol = param_data_type;
 18373             last_type_symbol = param_data_type;
 16961             
 18374             
 16962             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18375             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16963             {
 18376             {
 16964         
 18377         
 16965                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 18378                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 16966                 return return_type_symbol;
 18379                 return return_type_symbol;
 16967                 
 18380                 
 16983 
 18396 
 16984         {
 18397         {
 16985             symbol_c *IN_type_symbol = param_data_type;
 18398             symbol_c *IN_type_symbol = param_data_type;
 16986             last_type_symbol = param_data_type;
 18399             last_type_symbol = param_data_type;
 16987             
 18400             
 16988             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18401             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 16989             {
 18402             {
 16990         
 18403         
 16991                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 18404                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 16992                 return return_type_symbol;
 18405                 return return_type_symbol;
 16993                 
 18406                 
 17009 
 18422 
 17010         {
 18423         {
 17011             symbol_c *IN_type_symbol = param_data_type;
 18424             symbol_c *IN_type_symbol = param_data_type;
 17012             last_type_symbol = param_data_type;
 18425             last_type_symbol = param_data_type;
 17013             
 18426             
 17014             if(search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 18427             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
 17015             {
 18428             {
 17016         
 18429         
 17017                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 18430                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 17018                 return return_type_symbol;
 18431                 return return_type_symbol;
 17019                 
 18432                 
 17035 
 18448 
 17036         {
 18449         {
 17037             symbol_c *IN_type_symbol = param_data_type;
 18450             symbol_c *IN_type_symbol = param_data_type;
 17038             last_type_symbol = param_data_type;
 18451             last_type_symbol = param_data_type;
 17039             
 18452             
 17040             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 18453             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 17041             {
 18454             {
 17042         
 18455         
 17043                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 18456                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 17044                 return return_type_symbol;
 18457                 return return_type_symbol;
 17045                 
 18458                 
 17061 
 18474 
 17062         {
 18475         {
 17063             symbol_c *IN_type_symbol = param_data_type;
 18476             symbol_c *IN_type_symbol = param_data_type;
 17064             last_type_symbol = param_data_type;
 18477             last_type_symbol = param_data_type;
 17065             
 18478             
 17066             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 18479             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 17067             {
 18480             {
 17068         
 18481         
 17069                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 18482                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 17070                 return return_type_symbol;
 18483                 return return_type_symbol;
 17071                 
 18484                 
 17087 
 18500 
 17088         {
 18501         {
 17089             symbol_c *IN_type_symbol = param_data_type;
 18502             symbol_c *IN_type_symbol = param_data_type;
 17090             last_type_symbol = param_data_type;
 18503             last_type_symbol = param_data_type;
 17091             
 18504             
 17092             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 18505             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 17093             {
 18506             {
 17094         
 18507         
 17095                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 18508                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 17096                 return return_type_symbol;
 18509                 return return_type_symbol;
 17097                 
 18510                 
 17113 
 18526 
 17114         {
 18527         {
 17115             symbol_c *IN_type_symbol = param_data_type;
 18528             symbol_c *IN_type_symbol = param_data_type;
 17116             last_type_symbol = param_data_type;
 18529             last_type_symbol = param_data_type;
 17117             
 18530             
 17118             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 18531             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 17119             {
 18532             {
 17120         
 18533         
 17121                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 18534                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 17122                 return return_type_symbol;
 18535                 return return_type_symbol;
 17123                 
 18536                 
 17139 
 18552 
 17140         {
 18553         {
 17141             symbol_c *IN_type_symbol = param_data_type;
 18554             symbol_c *IN_type_symbol = param_data_type;
 17142             last_type_symbol = param_data_type;
 18555             last_type_symbol = param_data_type;
 17143             
 18556             
 17144             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 18557             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 17145             {
 18558             {
 17146         
 18559         
 17147                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 18560                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 17148                 return return_type_symbol;
 18561                 return return_type_symbol;
 17149                 
 18562                 
 17165 
 18578 
 17166         {
 18579         {
 17167             symbol_c *IN_type_symbol = param_data_type;
 18580             symbol_c *IN_type_symbol = param_data_type;
 17168             last_type_symbol = param_data_type;
 18581             last_type_symbol = param_data_type;
 17169             
 18582             
 17170             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 18583             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 17171             {
 18584             {
 17172         
 18585         
 17173                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 18586                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 17174                 return return_type_symbol;
 18587                 return return_type_symbol;
 17175                 
 18588                 
 17191 
 18604 
 17192         {
 18605         {
 17193             symbol_c *IN_type_symbol = param_data_type;
 18606             symbol_c *IN_type_symbol = param_data_type;
 17194             last_type_symbol = param_data_type;
 18607             last_type_symbol = param_data_type;
 17195             
 18608             
 17196             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 18609             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 17197             {
 18610             {
 17198         
 18611         
 17199                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 18612                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 17200                 return return_type_symbol;
 18613                 return return_type_symbol;
 17201                 
 18614                 
 17217 
 18630 
 17218         {
 18631         {
 17219             symbol_c *IN_type_symbol = param_data_type;
 18632             symbol_c *IN_type_symbol = param_data_type;
 17220             last_type_symbol = param_data_type;
 18633             last_type_symbol = param_data_type;
 17221             
 18634             
 17222             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 18635             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 17223             {
 18636             {
 17224         
 18637         
 17225                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 18638                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 17226                 return return_type_symbol;
 18639                 return return_type_symbol;
 17227                 
 18640                 
 17243 
 18656 
 17244         {
 18657         {
 17245             symbol_c *IN_type_symbol = param_data_type;
 18658             symbol_c *IN_type_symbol = param_data_type;
 17246             last_type_symbol = param_data_type;
 18659             last_type_symbol = param_data_type;
 17247             
 18660             
 17248             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 18661             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 17249             {
 18662             {
 17250         
 18663         
 17251                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 18664                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 17252                 return return_type_symbol;
 18665                 return return_type_symbol;
 17253                 
 18666                 
 17269 
 18682 
 17270         {
 18683         {
 17271             symbol_c *IN_type_symbol = param_data_type;
 18684             symbol_c *IN_type_symbol = param_data_type;
 17272             last_type_symbol = param_data_type;
 18685             last_type_symbol = param_data_type;
 17273             
 18686             
 17274             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 18687             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 17275             {
 18688             {
 17276         
 18689         
 17277                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 18690                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 17278                 return return_type_symbol;
 18691                 return return_type_symbol;
 17279                 
 18692                 
 17295 
 18708 
 17296         {
 18709         {
 17297             symbol_c *IN_type_symbol = param_data_type;
 18710             symbol_c *IN_type_symbol = param_data_type;
 17298             last_type_symbol = param_data_type;
 18711             last_type_symbol = param_data_type;
 17299             
 18712             
 17300             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 18713             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 17301             {
 18714             {
 17302         
 18715         
 17303                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 18716                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 17304                 return return_type_symbol;
 18717                 return return_type_symbol;
 17305                 
 18718                 
 17321 
 18734 
 17322         {
 18735         {
 17323             symbol_c *IN_type_symbol = param_data_type;
 18736             symbol_c *IN_type_symbol = param_data_type;
 17324             last_type_symbol = param_data_type;
 18737             last_type_symbol = param_data_type;
 17325             
 18738             
 17326             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 18739             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 17327             {
 18740             {
 17328         
 18741         
 17329                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 18742                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 17330                 return return_type_symbol;
 18743                 return return_type_symbol;
 17331                 
 18744                 
 17347 
 18760 
 17348         {
 18761         {
 17349             symbol_c *IN_type_symbol = param_data_type;
 18762             symbol_c *IN_type_symbol = param_data_type;
 17350             last_type_symbol = param_data_type;
 18763             last_type_symbol = param_data_type;
 17351             
 18764             
 17352             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 18765             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 17353             {
 18766             {
 17354         
 18767         
 17355                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 18768                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 17356                 return return_type_symbol;
 18769                 return return_type_symbol;
 17357                 
 18770                 
 17373 
 18786 
 17374         {
 18787         {
 17375             symbol_c *IN_type_symbol = param_data_type;
 18788             symbol_c *IN_type_symbol = param_data_type;
 17376             last_type_symbol = param_data_type;
 18789             last_type_symbol = param_data_type;
 17377             
 18790             
 17378             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 18791             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 17379             {
 18792             {
 17380         
 18793         
 17381                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 18794                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 17382                 return return_type_symbol;
 18795                 return return_type_symbol;
 17383                 
 18796                 
 17399 
 18812 
 17400         {
 18813         {
 17401             symbol_c *IN_type_symbol = param_data_type;
 18814             symbol_c *IN_type_symbol = param_data_type;
 17402             last_type_symbol = param_data_type;
 18815             last_type_symbol = param_data_type;
 17403             
 18816             
 17404             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 18817             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 17405             {
 18818             {
 17406         
 18819         
 17407                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 18820                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 17408                 return return_type_symbol;
 18821                 return return_type_symbol;
 17409                 
 18822                 
 17425 
 18838 
 17426         {
 18839         {
 17427             symbol_c *IN_type_symbol = param_data_type;
 18840             symbol_c *IN_type_symbol = param_data_type;
 17428             last_type_symbol = param_data_type;
 18841             last_type_symbol = param_data_type;
 17429             
 18842             
 17430             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 18843             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17431             {
 18844             {
 17432         
 18845         
 17433                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 18846                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 17434                 return return_type_symbol;
 18847                 return return_type_symbol;
 17435                 
 18848                 
 17451 
 18864 
 17452         {
 18865         {
 17453             symbol_c *IN_type_symbol = param_data_type;
 18866             symbol_c *IN_type_symbol = param_data_type;
 17454             last_type_symbol = param_data_type;
 18867             last_type_symbol = param_data_type;
 17455             
 18868             
 17456             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 18869             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17457             {
 18870             {
 17458         
 18871         
 17459                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 18872                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 17460                 return return_type_symbol;
 18873                 return return_type_symbol;
 17461                 
 18874                 
 17477 
 18890 
 17478         {
 18891         {
 17479             symbol_c *IN_type_symbol = param_data_type;
 18892             symbol_c *IN_type_symbol = param_data_type;
 17480             last_type_symbol = param_data_type;
 18893             last_type_symbol = param_data_type;
 17481             
 18894             
 17482             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 18895             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17483             {
 18896             {
 17484         
 18897         
 17485                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 18898                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 17486                 return return_type_symbol;
 18899                 return return_type_symbol;
 17487                 
 18900                 
 17503 
 18916 
 17504         {
 18917         {
 17505             symbol_c *IN_type_symbol = param_data_type;
 18918             symbol_c *IN_type_symbol = param_data_type;
 17506             last_type_symbol = param_data_type;
 18919             last_type_symbol = param_data_type;
 17507             
 18920             
 17508             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 18921             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17509             {
 18922             {
 17510         
 18923         
 17511                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 18924                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 17512                 return return_type_symbol;
 18925                 return return_type_symbol;
 17513                 
 18926                 
 17529 
 18942 
 17530         {
 18943         {
 17531             symbol_c *IN_type_symbol = param_data_type;
 18944             symbol_c *IN_type_symbol = param_data_type;
 17532             last_type_symbol = param_data_type;
 18945             last_type_symbol = param_data_type;
 17533             
 18946             
 17534             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 18947             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17535             {
 18948             {
 17536         
 18949         
 17537                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 18950                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 17538                 return return_type_symbol;
 18951                 return return_type_symbol;
 17539                 
 18952                 
 17555 
 18968 
 17556         {
 18969         {
 17557             symbol_c *IN_type_symbol = param_data_type;
 18970             symbol_c *IN_type_symbol = param_data_type;
 17558             last_type_symbol = param_data_type;
 18971             last_type_symbol = param_data_type;
 17559             
 18972             
 17560             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 18973             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17561             {
 18974             {
 17562         
 18975         
 17563                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 18976                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 17564                 return return_type_symbol;
 18977                 return return_type_symbol;
 17565                 
 18978                 
 17581 
 18994 
 17582         {
 18995         {
 17583             symbol_c *IN_type_symbol = param_data_type;
 18996             symbol_c *IN_type_symbol = param_data_type;
 17584             last_type_symbol = param_data_type;
 18997             last_type_symbol = param_data_type;
 17585             
 18998             
 17586             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 18999             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17587             {
 19000             {
 17588         
 19001         
 17589                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 19002                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 17590                 return return_type_symbol;
 19003                 return return_type_symbol;
 17591                 
 19004                 
 17607 
 19020 
 17608         {
 19021         {
 17609             symbol_c *IN_type_symbol = param_data_type;
 19022             symbol_c *IN_type_symbol = param_data_type;
 17610             last_type_symbol = param_data_type;
 19023             last_type_symbol = param_data_type;
 17611             
 19024             
 17612             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 19025             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17613             {
 19026             {
 17614         
 19027         
 17615                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 19028                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 17616                 return return_type_symbol;
 19029                 return return_type_symbol;
 17617                 
 19030                 
 17633 
 19046 
 17634         {
 19047         {
 17635             symbol_c *IN_type_symbol = param_data_type;
 19048             symbol_c *IN_type_symbol = param_data_type;
 17636             last_type_symbol = param_data_type;
 19049             last_type_symbol = param_data_type;
 17637             
 19050             
 17638             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 19051             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17639             {
 19052             {
 17640         
 19053         
 17641                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 19054                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 17642                 return return_type_symbol;
 19055                 return return_type_symbol;
 17643                 
 19056                 
 17659 
 19072 
 17660         {
 19073         {
 17661             symbol_c *IN_type_symbol = param_data_type;
 19074             symbol_c *IN_type_symbol = param_data_type;
 17662             last_type_symbol = param_data_type;
 19075             last_type_symbol = param_data_type;
 17663             
 19076             
 17664             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 19077             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17665             {
 19078             {
 17666         
 19079         
 17667                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 19080                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 17668                 return return_type_symbol;
 19081                 return return_type_symbol;
 17669                 
 19082                 
 17685 
 19098 
 17686         {
 19099         {
 17687             symbol_c *IN_type_symbol = param_data_type;
 19100             symbol_c *IN_type_symbol = param_data_type;
 17688             last_type_symbol = param_data_type;
 19101             last_type_symbol = param_data_type;
 17689             
 19102             
 17690             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 19103             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17691             {
 19104             {
 17692         
 19105         
 17693                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 19106                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 17694                 return return_type_symbol;
 19107                 return return_type_symbol;
 17695                 
 19108                 
 17711 
 19124 
 17712         {
 19125         {
 17713             symbol_c *IN_type_symbol = param_data_type;
 19126             symbol_c *IN_type_symbol = param_data_type;
 17714             last_type_symbol = param_data_type;
 19127             last_type_symbol = param_data_type;
 17715             
 19128             
 17716             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 19129             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17717             {
 19130             {
 17718         
 19131         
 17719                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 19132                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 17720                 return return_type_symbol;
 19133                 return return_type_symbol;
 17721                 
 19134                 
 17737 
 19150 
 17738         {
 19151         {
 17739             symbol_c *IN_type_symbol = param_data_type;
 19152             symbol_c *IN_type_symbol = param_data_type;
 17740             last_type_symbol = param_data_type;
 19153             last_type_symbol = param_data_type;
 17741             
 19154             
 17742             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 19155             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17743             {
 19156             {
 17744         
 19157         
 17745                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 19158                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 17746                 return return_type_symbol;
 19159                 return return_type_symbol;
 17747                 
 19160                 
 17763 
 19176 
 17764         {
 19177         {
 17765             symbol_c *IN_type_symbol = param_data_type;
 19178             symbol_c *IN_type_symbol = param_data_type;
 17766             last_type_symbol = param_data_type;
 19179             last_type_symbol = param_data_type;
 17767             
 19180             
 17768             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 19181             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17769             {
 19182             {
 17770         
 19183         
 17771                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 19184                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 17772                 return return_type_symbol;
 19185                 return return_type_symbol;
 17773                 
 19186                 
 17789 
 19202 
 17790         {
 19203         {
 17791             symbol_c *IN_type_symbol = param_data_type;
 19204             symbol_c *IN_type_symbol = param_data_type;
 17792             last_type_symbol = param_data_type;
 19205             last_type_symbol = param_data_type;
 17793             
 19206             
 17794             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 19207             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17795             {
 19208             {
 17796         
 19209         
 17797                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 19210                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 17798                 return return_type_symbol;
 19211                 return return_type_symbol;
 17799                 
 19212                 
 17815 
 19228 
 17816         {
 19229         {
 17817             symbol_c *IN_type_symbol = param_data_type;
 19230             symbol_c *IN_type_symbol = param_data_type;
 17818             last_type_symbol = param_data_type;
 19231             last_type_symbol = param_data_type;
 17819             
 19232             
 17820             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 19233             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17821             {
 19234             {
 17822         
 19235         
 17823                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 19236                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 17824                 return return_type_symbol;
 19237                 return return_type_symbol;
 17825                 
 19238                 
 17841 
 19254 
 17842         {
 19255         {
 17843             symbol_c *IN_type_symbol = param_data_type;
 19256             symbol_c *IN_type_symbol = param_data_type;
 17844             last_type_symbol = param_data_type;
 19257             last_type_symbol = param_data_type;
 17845             
 19258             
 17846             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 19259             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17847             {
 19260             {
 17848         
 19261         
 17849                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 19262                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 17850                 return return_type_symbol;
 19263                 return return_type_symbol;
 17851                 
 19264                 
 17867 
 19280 
 17868         {
 19281         {
 17869             symbol_c *IN_type_symbol = param_data_type;
 19282             symbol_c *IN_type_symbol = param_data_type;
 17870             last_type_symbol = param_data_type;
 19283             last_type_symbol = param_data_type;
 17871             
 19284             
 17872             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 19285             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17873             {
 19286             {
 17874         
 19287         
 17875                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 19288                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 17876                 return return_type_symbol;
 19289                 return return_type_symbol;
 17877                 
 19290                 
 17893 
 19306 
 17894         {
 19307         {
 17895             symbol_c *IN_type_symbol = param_data_type;
 19308             symbol_c *IN_type_symbol = param_data_type;
 17896             last_type_symbol = param_data_type;
 19309             last_type_symbol = param_data_type;
 17897             
 19310             
 17898             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 19311             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 17899             {
 19312             {
 17900         
 19313         
 17901                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 19314                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 17902                 return return_type_symbol;
 19315                 return return_type_symbol;
 17903                 
 19316                 
 17919 
 19332 
 17920         {
 19333         {
 17921             symbol_c *IN_type_symbol = param_data_type;
 19334             symbol_c *IN_type_symbol = param_data_type;
 17922             last_type_symbol = param_data_type;
 19335             last_type_symbol = param_data_type;
 17923             
 19336             
 17924             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 19337             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 17925             {
 19338             {
 17926         
 19339         
 17927                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 19340                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 17928                 return return_type_symbol;
 19341                 return return_type_symbol;
 17929                 
 19342                 
 17945 
 19358 
 17946         {
 19359         {
 17947             symbol_c *IN_type_symbol = param_data_type;
 19360             symbol_c *IN_type_symbol = param_data_type;
 17948             last_type_symbol = param_data_type;
 19361             last_type_symbol = param_data_type;
 17949             
 19362             
 17950             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 19363             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 17951             {
 19364             {
 17952         
 19365         
 17953                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 19366                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 17954                 return return_type_symbol;
 19367                 return return_type_symbol;
 17955                 
 19368                 
 17971 
 19384 
 17972         {
 19385         {
 17973             symbol_c *IN_type_symbol = param_data_type;
 19386             symbol_c *IN_type_symbol = param_data_type;
 17974             last_type_symbol = param_data_type;
 19387             last_type_symbol = param_data_type;
 17975             
 19388             
 17976             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 19389             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 17977             {
 19390             {
 17978         
 19391         
 17979                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 19392                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 17980                 return return_type_symbol;
 19393                 return return_type_symbol;
 17981                 
 19394                 
 17997 
 19410 
 17998         {
 19411         {
 17999             symbol_c *IN_type_symbol = param_data_type;
 19412             symbol_c *IN_type_symbol = param_data_type;
 18000             last_type_symbol = param_data_type;
 19413             last_type_symbol = param_data_type;
 18001             
 19414             
 18002             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 19415             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 18003             {
 19416             {
 18004         
 19417         
 18005                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 19418                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 18006                 return return_type_symbol;
 19419                 return return_type_symbol;
 18007                 
 19420                 
 18023 
 19436 
 18024         {
 19437         {
 18025             symbol_c *IN_type_symbol = param_data_type;
 19438             symbol_c *IN_type_symbol = param_data_type;
 18026             last_type_symbol = param_data_type;
 19439             last_type_symbol = param_data_type;
 18027             
 19440             
 18028             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 19441             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 18029             {
 19442             {
 18030         
 19443         
 18031                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 19444                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 18032                 return return_type_symbol;
 19445                 return return_type_symbol;
 18033                 
 19446                 
 18049 
 19462 
 18050         {
 19463         {
 18051             symbol_c *IN_type_symbol = param_data_type;
 19464             symbol_c *IN_type_symbol = param_data_type;
 18052             last_type_symbol = param_data_type;
 19465             last_type_symbol = param_data_type;
 18053             
 19466             
 18054             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 19467             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 18055             {
 19468             {
 18056         
 19469         
 18057                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 19470                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 18058                 return return_type_symbol;
 19471                 return return_type_symbol;
 18059                 
 19472                 
 18075 
 19488 
 18076         {
 19489         {
 18077             symbol_c *IN_type_symbol = param_data_type;
 19490             symbol_c *IN_type_symbol = param_data_type;
 18078             last_type_symbol = param_data_type;
 19491             last_type_symbol = param_data_type;
 18079             
 19492             
 18080             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 19493             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 18081             {
 19494             {
 18082         
 19495         
 18083                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 19496                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 18084                 return return_type_symbol;
 19497                 return return_type_symbol;
 18085                 
 19498                 
 18101 
 19514 
 18102         {
 19515         {
 18103             symbol_c *IN_type_symbol = param_data_type;
 19516             symbol_c *IN_type_symbol = param_data_type;
 18104             last_type_symbol = param_data_type;
 19517             last_type_symbol = param_data_type;
 18105             
 19518             
 18106             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 19519             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 18107             {
 19520             {
 18108         
 19521         
 18109                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 19522                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 18110                 return return_type_symbol;
 19523                 return return_type_symbol;
 18111                 
 19524                 
 18127 
 19540 
 18128         {
 19541         {
 18129             symbol_c *IN_type_symbol = param_data_type;
 19542             symbol_c *IN_type_symbol = param_data_type;
 18130             last_type_symbol = param_data_type;
 19543             last_type_symbol = param_data_type;
 18131             
 19544             
 18132             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 19545             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 18133             {
 19546             {
 18134         
 19547         
 18135                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 19548                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 18136                 return return_type_symbol;
 19549                 return return_type_symbol;
 18137                 
 19550                 
 18153 
 19566 
 18154         {
 19567         {
 18155             symbol_c *IN_type_symbol = param_data_type;
 19568             symbol_c *IN_type_symbol = param_data_type;
 18156             last_type_symbol = param_data_type;
 19569             last_type_symbol = param_data_type;
 18157             
 19570             
 18158             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 19571             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 18159             {
 19572             {
 18160         
 19573         
 18161                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 19574                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 18162                 return return_type_symbol;
 19575                 return return_type_symbol;
 18163                 
 19576                 
 18179 
 19592 
 18180         {
 19593         {
 18181             symbol_c *IN_type_symbol = param_data_type;
 19594             symbol_c *IN_type_symbol = param_data_type;
 18182             last_type_symbol = param_data_type;
 19595             last_type_symbol = param_data_type;
 18183             
 19596             
 18184             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 19597             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 18185             {
 19598             {
 18186         
 19599         
 18187                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 19600                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 18188                 return return_type_symbol;
 19601                 return return_type_symbol;
 18189                 
 19602                 
 18205 
 19618 
 18206         {
 19619         {
 18207             symbol_c *IN_type_symbol = param_data_type;
 19620             symbol_c *IN_type_symbol = param_data_type;
 18208             last_type_symbol = param_data_type;
 19621             last_type_symbol = param_data_type;
 18209             
 19622             
 18210             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 19623             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 18211             {
 19624             {
 18212         
 19625         
 18213                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 19626                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 18214                 return return_type_symbol;
 19627                 return return_type_symbol;
 18215                 
 19628                 
 18231 
 19644 
 18232         {
 19645         {
 18233             symbol_c *IN_type_symbol = param_data_type;
 19646             symbol_c *IN_type_symbol = param_data_type;
 18234             last_type_symbol = param_data_type;
 19647             last_type_symbol = param_data_type;
 18235             
 19648             
 18236             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 19649             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 18237             {
 19650             {
 18238         
 19651         
 18239                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 19652                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 18240                 return return_type_symbol;
 19653                 return return_type_symbol;
 18241                 
 19654                 
 18257 
 19670 
 18258         {
 19671         {
 18259             symbol_c *IN_type_symbol = param_data_type;
 19672             symbol_c *IN_type_symbol = param_data_type;
 18260             last_type_symbol = param_data_type;
 19673             last_type_symbol = param_data_type;
 18261             
 19674             
 18262             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 19675             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 18263             {
 19676             {
 18264         
 19677         
 18265                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 19678                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 18266                 return return_type_symbol;
 19679                 return return_type_symbol;
 18267                 
 19680                 
 18283 
 19696 
 18284         {
 19697         {
 18285             symbol_c *IN_type_symbol = param_data_type;
 19698             symbol_c *IN_type_symbol = param_data_type;
 18286             last_type_symbol = param_data_type;
 19699             last_type_symbol = param_data_type;
 18287             
 19700             
 18288             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 19701             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 18289             {
 19702             {
 18290         
 19703         
 18291                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 19704                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 18292                 return return_type_symbol;
 19705                 return return_type_symbol;
 18293                 
 19706                 
 18309 
 19722 
 18310         {
 19723         {
 18311             symbol_c *IN_type_symbol = param_data_type;
 19724             symbol_c *IN_type_symbol = param_data_type;
 18312             last_type_symbol = param_data_type;
 19725             last_type_symbol = param_data_type;
 18313             
 19726             
 18314             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 19727             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 18315             {
 19728             {
 18316         
 19729         
 18317                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 19730                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 18318                 return return_type_symbol;
 19731                 return return_type_symbol;
 18319                 
 19732                 
 18335 
 19748 
 18336         {
 19749         {
 18337             symbol_c *IN_type_symbol = param_data_type;
 19750             symbol_c *IN_type_symbol = param_data_type;
 18338             last_type_symbol = param_data_type;
 19751             last_type_symbol = param_data_type;
 18339             
 19752             
 18340             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 19753             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 18341             {
 19754             {
 18342         
 19755         
 18343                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 19756                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 18344                 return return_type_symbol;
 19757                 return return_type_symbol;
 18345                 
 19758                 
 18361 
 19774 
 18362         {
 19775         {
 18363             symbol_c *IN_type_symbol = param_data_type;
 19776             symbol_c *IN_type_symbol = param_data_type;
 18364             last_type_symbol = param_data_type;
 19777             last_type_symbol = param_data_type;
 18365             
 19778             
 18366             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 19779             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 18367             {
 19780             {
 18368         
 19781         
 18369                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 19782                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 18370                 return return_type_symbol;
 19783                 return return_type_symbol;
 18371                 
 19784                 
 18387 
 19800 
 18388         {
 19801         {
 18389             symbol_c *IN_type_symbol = param_data_type;
 19802             symbol_c *IN_type_symbol = param_data_type;
 18390             last_type_symbol = param_data_type;
 19803             last_type_symbol = param_data_type;
 18391             
 19804             
 18392             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 19805             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 18393             {
 19806             {
 18394         
 19807         
 18395                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 19808                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 18396                 return return_type_symbol;
 19809                 return return_type_symbol;
 18397                 
 19810                 
 18413 
 19826 
 18414         {
 19827         {
 18415             symbol_c *IN_type_symbol = param_data_type;
 19828             symbol_c *IN_type_symbol = param_data_type;
 18416             last_type_symbol = param_data_type;
 19829             last_type_symbol = param_data_type;
 18417             
 19830             
 18418             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 19831             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 18419             {
 19832             {
 18420         
 19833         
 18421                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 19834                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 18422                 return return_type_symbol;
 19835                 return return_type_symbol;
 18423                 
 19836                 
 18439 
 19852 
 18440         {
 19853         {
 18441             symbol_c *IN_type_symbol = param_data_type;
 19854             symbol_c *IN_type_symbol = param_data_type;
 18442             last_type_symbol = param_data_type;
 19855             last_type_symbol = param_data_type;
 18443             
 19856             
 18444             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 19857             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 18445             {
 19858             {
 18446         
 19859         
 18447                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 19860                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 18448                 return return_type_symbol;
 19861                 return return_type_symbol;
 18449                 
 19862                 
 18465 
 19878 
 18466         {
 19879         {
 18467             symbol_c *IN_type_symbol = param_data_type;
 19880             symbol_c *IN_type_symbol = param_data_type;
 18468             last_type_symbol = param_data_type;
 19881             last_type_symbol = param_data_type;
 18469             
 19882             
 18470             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 19883             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 18471             {
 19884             {
 18472         
 19885         
 18473                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 19886                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 18474                 return return_type_symbol;
 19887                 return return_type_symbol;
 18475                 
 19888                 
 18491 
 19904 
 18492         {
 19905         {
 18493             symbol_c *IN_type_symbol = param_data_type;
 19906             symbol_c *IN_type_symbol = param_data_type;
 18494             last_type_symbol = param_data_type;
 19907             last_type_symbol = param_data_type;
 18495             
 19908             
 18496             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 19909             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 18497             {
 19910             {
 18498         
 19911         
 18499                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 19912                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 18500                 return return_type_symbol;
 19913                 return return_type_symbol;
 18501                 
 19914                 
 18517 
 19930 
 18518         {
 19931         {
 18519             symbol_c *IN_type_symbol = param_data_type;
 19932             symbol_c *IN_type_symbol = param_data_type;
 18520             last_type_symbol = param_data_type;
 19933             last_type_symbol = param_data_type;
 18521             
 19934             
 18522             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 19935             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 18523             {
 19936             {
 18524         
 19937         
 18525                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 19938                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 18526                 return return_type_symbol;
 19939                 return return_type_symbol;
 18527                 
 19940                 
 18543 
 19956 
 18544         {
 19957         {
 18545             symbol_c *IN_type_symbol = param_data_type;
 19958             symbol_c *IN_type_symbol = param_data_type;
 18546             last_type_symbol = param_data_type;
 19959             last_type_symbol = param_data_type;
 18547             
 19960             
 18548             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 19961             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 18549             {
 19962             {
 18550         
 19963         
 18551                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 19964                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 18552                 return return_type_symbol;
 19965                 return return_type_symbol;
 18553                 
 19966                 
 18569 
 19982 
 18570         {
 19983         {
 18571             symbol_c *IN_type_symbol = param_data_type;
 19984             symbol_c *IN_type_symbol = param_data_type;
 18572             last_type_symbol = param_data_type;
 19985             last_type_symbol = param_data_type;
 18573             
 19986             
 18574             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 19987             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 18575             {
 19988             {
 18576         
 19989         
 18577                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 19990                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 18578                 return return_type_symbol;
 19991                 return return_type_symbol;
 18579                 
 19992                 
 18595 
 20008 
 18596         {
 20009         {
 18597             symbol_c *IN_type_symbol = param_data_type;
 20010             symbol_c *IN_type_symbol = param_data_type;
 18598             last_type_symbol = param_data_type;
 20011             last_type_symbol = param_data_type;
 18599             
 20012             
 18600             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 20013             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 18601             {
 20014             {
 18602         
 20015         
 18603                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 20016                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 18604                 return return_type_symbol;
 20017                 return return_type_symbol;
 18605                 
 20018                 
 18621 
 20034 
 18622         {
 20035         {
 18623             symbol_c *IN_type_symbol = param_data_type;
 20036             symbol_c *IN_type_symbol = param_data_type;
 18624             last_type_symbol = param_data_type;
 20037             last_type_symbol = param_data_type;
 18625             
 20038             
 18626             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 20039             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 18627             {
 20040             {
 18628         
 20041         
 18629                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 20042                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 18630                 return return_type_symbol;
 20043                 return return_type_symbol;
 18631                 
 20044                 
 18647 
 20060 
 18648         {
 20061         {
 18649             symbol_c *IN_type_symbol = param_data_type;
 20062             symbol_c *IN_type_symbol = param_data_type;
 18650             last_type_symbol = param_data_type;
 20063             last_type_symbol = param_data_type;
 18651             
 20064             
 18652             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 20065             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 18653             {
 20066             {
 18654         
 20067         
 18655                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 20068                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 18656                 return return_type_symbol;
 20069                 return return_type_symbol;
 18657                 
 20070                 
 18673 
 20086 
 18674         {
 20087         {
 18675             symbol_c *IN_type_symbol = param_data_type;
 20088             symbol_c *IN_type_symbol = param_data_type;
 18676             last_type_symbol = param_data_type;
 20089             last_type_symbol = param_data_type;
 18677             
 20090             
 18678             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 20091             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 18679             {
 20092             {
 18680         
 20093         
 18681                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 20094                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 18682                 return return_type_symbol;
 20095                 return return_type_symbol;
 18683                 
 20096                 
 18699 
 20112 
 18700         {
 20113         {
 18701             symbol_c *IN_type_symbol = param_data_type;
 20114             symbol_c *IN_type_symbol = param_data_type;
 18702             last_type_symbol = param_data_type;
 20115             last_type_symbol = param_data_type;
 18703             
 20116             
 18704             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20117             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 18705             {
 20118             {
 18706         
 20119         
 18707                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 20120                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 18708                 return return_type_symbol;
 20121                 return return_type_symbol;
 18709                 
 20122                 
 18725 
 20138 
 18726         {
 20139         {
 18727             symbol_c *IN_type_symbol = param_data_type;
 20140             symbol_c *IN_type_symbol = param_data_type;
 18728             last_type_symbol = param_data_type;
 20141             last_type_symbol = param_data_type;
 18729             
 20142             
 18730             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20143             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 18731             {
 20144             {
 18732         
 20145         
 18733                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 20146                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 18734                 return return_type_symbol;
 20147                 return return_type_symbol;
 18735                 
 20148                 
 18751 
 20164 
 18752         {
 20165         {
 18753             symbol_c *IN_type_symbol = param_data_type;
 20166             symbol_c *IN_type_symbol = param_data_type;
 18754             last_type_symbol = param_data_type;
 20167             last_type_symbol = param_data_type;
 18755             
 20168             
 18756             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20169             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 18757             {
 20170             {
 18758         
 20171         
 18759                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 20172                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 18760                 return return_type_symbol;
 20173                 return return_type_symbol;
 18761                 
 20174                 
 18777 
 20190 
 18778         {
 20191         {
 18779             symbol_c *IN_type_symbol = param_data_type;
 20192             symbol_c *IN_type_symbol = param_data_type;
 18780             last_type_symbol = param_data_type;
 20193             last_type_symbol = param_data_type;
 18781             
 20194             
 18782             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20195             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 18783             {
 20196             {
 18784         
 20197         
 18785                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 20198                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 18786                 return return_type_symbol;
 20199                 return return_type_symbol;
 18787                 
 20200                 
 18803 
 20216 
 18804         {
 20217         {
 18805             symbol_c *IN_type_symbol = param_data_type;
 20218             symbol_c *IN_type_symbol = param_data_type;
 18806             last_type_symbol = param_data_type;
 20219             last_type_symbol = param_data_type;
 18807             
 20220             
 18808             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20221             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 18809             {
 20222             {
 18810         
 20223         
 18811                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 20224                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 18812                 return return_type_symbol;
 20225                 return return_type_symbol;
 18813                 
 20226                 
 18829 
 20242 
 18830         {
 20243         {
 18831             symbol_c *IN_type_symbol = param_data_type;
 20244             symbol_c *IN_type_symbol = param_data_type;
 18832             last_type_symbol = param_data_type;
 20245             last_type_symbol = param_data_type;
 18833             
 20246             
 18834             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20247             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 18835             {
 20248             {
 18836         
 20249         
 18837                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 20250                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 18838                 return return_type_symbol;
 20251                 return return_type_symbol;
 18839                 
 20252                 
 18855 
 20268 
 18856         {
 20269         {
 18857             symbol_c *IN_type_symbol = param_data_type;
 20270             symbol_c *IN_type_symbol = param_data_type;
 18858             last_type_symbol = param_data_type;
 20271             last_type_symbol = param_data_type;
 18859             
 20272             
 18860             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20273             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 18861             {
 20274             {
 18862         
 20275         
 18863                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 20276                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 18864                 return return_type_symbol;
 20277                 return return_type_symbol;
 18865                 
 20278                 
 18881 
 20294 
 18882         {
 20295         {
 18883             symbol_c *IN_type_symbol = param_data_type;
 20296             symbol_c *IN_type_symbol = param_data_type;
 18884             last_type_symbol = param_data_type;
 20297             last_type_symbol = param_data_type;
 18885             
 20298             
 18886             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20299             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 18887             {
 20300             {
 18888         
 20301         
 18889                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 20302                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 18890                 return return_type_symbol;
 20303                 return return_type_symbol;
 18891                 
 20304                 
 18907 
 20320 
 18908         {
 20321         {
 18909             symbol_c *IN_type_symbol = param_data_type;
 20322             symbol_c *IN_type_symbol = param_data_type;
 18910             last_type_symbol = param_data_type;
 20323             last_type_symbol = param_data_type;
 18911             
 20324             
 18912             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20325             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 18913             {
 20326             {
 18914         
 20327         
 18915                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 20328                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 18916                 return return_type_symbol;
 20329                 return return_type_symbol;
 18917                 
 20330                 
 18933 
 20346 
 18934         {
 20347         {
 18935             symbol_c *IN_type_symbol = param_data_type;
 20348             symbol_c *IN_type_symbol = param_data_type;
 18936             last_type_symbol = param_data_type;
 20349             last_type_symbol = param_data_type;
 18937             
 20350             
 18938             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20351             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 18939             {
 20352             {
 18940         
 20353         
 18941                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 20354                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 18942                 return return_type_symbol;
 20355                 return return_type_symbol;
 18943                 
 20356                 
 18959 
 20372 
 18960         {
 20373         {
 18961             symbol_c *IN_type_symbol = param_data_type;
 20374             symbol_c *IN_type_symbol = param_data_type;
 18962             last_type_symbol = param_data_type;
 20375             last_type_symbol = param_data_type;
 18963             
 20376             
 18964             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20377             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 18965             {
 20378             {
 18966         
 20379         
 18967                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 20380                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 18968                 return return_type_symbol;
 20381                 return return_type_symbol;
 18969                 
 20382                 
 18985 
 20398 
 18986         {
 20399         {
 18987             symbol_c *IN_type_symbol = param_data_type;
 20400             symbol_c *IN_type_symbol = param_data_type;
 18988             last_type_symbol = param_data_type;
 20401             last_type_symbol = param_data_type;
 18989             
 20402             
 18990             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20403             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 18991             {
 20404             {
 18992         
 20405         
 18993                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 20406                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 18994                 return return_type_symbol;
 20407                 return return_type_symbol;
 18995                 
 20408                 
 19011 
 20424 
 19012         {
 20425         {
 19013             symbol_c *IN_type_symbol = param_data_type;
 20426             symbol_c *IN_type_symbol = param_data_type;
 19014             last_type_symbol = param_data_type;
 20427             last_type_symbol = param_data_type;
 19015             
 20428             
 19016             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20429             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 19017             {
 20430             {
 19018         
 20431         
 19019                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 20432                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 19020                 return return_type_symbol;
 20433                 return return_type_symbol;
 19021                 
 20434                 
 19037 
 20450 
 19038         {
 20451         {
 19039             symbol_c *IN_type_symbol = param_data_type;
 20452             symbol_c *IN_type_symbol = param_data_type;
 19040             last_type_symbol = param_data_type;
 20453             last_type_symbol = param_data_type;
 19041             
 20454             
 19042             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20455             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 19043             {
 20456             {
 19044         
 20457         
 19045                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 20458                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 19046                 return return_type_symbol;
 20459                 return return_type_symbol;
 19047                 
 20460                 
 19063 
 20476 
 19064         {
 20477         {
 19065             symbol_c *IN_type_symbol = param_data_type;
 20478             symbol_c *IN_type_symbol = param_data_type;
 19066             last_type_symbol = param_data_type;
 20479             last_type_symbol = param_data_type;
 19067             
 20480             
 19068             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20481             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 19069             {
 20482             {
 19070         
 20483         
 19071                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 20484                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 19072                 return return_type_symbol;
 20485                 return return_type_symbol;
 19073                 
 20486                 
 19089 
 20502 
 19090         {
 20503         {
 19091             symbol_c *IN_type_symbol = param_data_type;
 20504             symbol_c *IN_type_symbol = param_data_type;
 19092             last_type_symbol = param_data_type;
 20505             last_type_symbol = param_data_type;
 19093             
 20506             
 19094             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20507             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 19095             {
 20508             {
 19096         
 20509         
 19097                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 20510                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 19098                 return return_type_symbol;
 20511                 return return_type_symbol;
 19099                 
 20512                 
 19115 
 20528 
 19116         {
 20529         {
 19117             symbol_c *IN_type_symbol = param_data_type;
 20530             symbol_c *IN_type_symbol = param_data_type;
 19118             last_type_symbol = param_data_type;
 20531             last_type_symbol = param_data_type;
 19119             
 20532             
 19120             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20533             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 19121             {
 20534             {
 19122         
 20535         
 19123                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 20536                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 19124                 return return_type_symbol;
 20537                 return return_type_symbol;
 19125                 
 20538                 
 19141 
 20554 
 19142         {
 20555         {
 19143             symbol_c *IN_type_symbol = param_data_type;
 20556             symbol_c *IN_type_symbol = param_data_type;
 19144             last_type_symbol = param_data_type;
 20557             last_type_symbol = param_data_type;
 19145             
 20558             
 19146             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20559             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 19147             {
 20560             {
 19148         
 20561         
 19149                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 20562                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 19150                 return return_type_symbol;
 20563                 return return_type_symbol;
 19151                 
 20564                 
 19167 
 20580 
 19168         {
 20581         {
 19169             symbol_c *IN_type_symbol = param_data_type;
 20582             symbol_c *IN_type_symbol = param_data_type;
 19170             last_type_symbol = param_data_type;
 20583             last_type_symbol = param_data_type;
 19171             
 20584             
 19172             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 20585             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 19173             {
 20586             {
 19174         
 20587         
 19175                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 20588                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 19176                 return return_type_symbol;
 20589                 return return_type_symbol;
 19177                 
 20590                 
 19193 
 20606 
 19194         {
 20607         {
 19195             symbol_c *IN_type_symbol = param_data_type;
 20608             symbol_c *IN_type_symbol = param_data_type;
 19196             last_type_symbol = param_data_type;
 20609             last_type_symbol = param_data_type;
 19197             
 20610             
 19198             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 20611             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19199             {
 20612             {
 19200         
 20613         
 19201                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 20614                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 19202                 return return_type_symbol;
 20615                 return return_type_symbol;
 19203                 
 20616                 
 19219 
 20632 
 19220         {
 20633         {
 19221             symbol_c *IN_type_symbol = param_data_type;
 20634             symbol_c *IN_type_symbol = param_data_type;
 19222             last_type_symbol = param_data_type;
 20635             last_type_symbol = param_data_type;
 19223             
 20636             
 19224             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 20637             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19225             {
 20638             {
 19226         
 20639         
 19227                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 20640                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 19228                 return return_type_symbol;
 20641                 return return_type_symbol;
 19229                 
 20642                 
 19245 
 20658 
 19246         {
 20659         {
 19247             symbol_c *IN_type_symbol = param_data_type;
 20660             symbol_c *IN_type_symbol = param_data_type;
 19248             last_type_symbol = param_data_type;
 20661             last_type_symbol = param_data_type;
 19249             
 20662             
 19250             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 20663             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19251             {
 20664             {
 19252         
 20665         
 19253                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 20666                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 19254                 return return_type_symbol;
 20667                 return return_type_symbol;
 19255                 
 20668                 
 19271 
 20684 
 19272         {
 20685         {
 19273             symbol_c *IN_type_symbol = param_data_type;
 20686             symbol_c *IN_type_symbol = param_data_type;
 19274             last_type_symbol = param_data_type;
 20687             last_type_symbol = param_data_type;
 19275             
 20688             
 19276             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 20689             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19277             {
 20690             {
 19278         
 20691         
 19279                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 20692                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 19280                 return return_type_symbol;
 20693                 return return_type_symbol;
 19281                 
 20694                 
 19297 
 20710 
 19298         {
 20711         {
 19299             symbol_c *IN_type_symbol = param_data_type;
 20712             symbol_c *IN_type_symbol = param_data_type;
 19300             last_type_symbol = param_data_type;
 20713             last_type_symbol = param_data_type;
 19301             
 20714             
 19302             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 20715             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19303             {
 20716             {
 19304         
 20717         
 19305                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 20718                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 19306                 return return_type_symbol;
 20719                 return return_type_symbol;
 19307                 
 20720                 
 19323 
 20736 
 19324         {
 20737         {
 19325             symbol_c *IN_type_symbol = param_data_type;
 20738             symbol_c *IN_type_symbol = param_data_type;
 19326             last_type_symbol = param_data_type;
 20739             last_type_symbol = param_data_type;
 19327             
 20740             
 19328             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 20741             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19329             {
 20742             {
 19330         
 20743         
 19331                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 20744                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 19332                 return return_type_symbol;
 20745                 return return_type_symbol;
 19333                 
 20746                 
 19349 
 20762 
 19350         {
 20763         {
 19351             symbol_c *IN_type_symbol = param_data_type;
 20764             symbol_c *IN_type_symbol = param_data_type;
 19352             last_type_symbol = param_data_type;
 20765             last_type_symbol = param_data_type;
 19353             
 20766             
 19354             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 20767             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19355             {
 20768             {
 19356         
 20769         
 19357                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 20770                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 19358                 return return_type_symbol;
 20771                 return return_type_symbol;
 19359                 
 20772                 
 19375 
 20788 
 19376         {
 20789         {
 19377             symbol_c *IN_type_symbol = param_data_type;
 20790             symbol_c *IN_type_symbol = param_data_type;
 19378             last_type_symbol = param_data_type;
 20791             last_type_symbol = param_data_type;
 19379             
 20792             
 19380             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 20793             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19381             {
 20794             {
 19382         
 20795         
 19383                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 20796                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 19384                 return return_type_symbol;
 20797                 return return_type_symbol;
 19385                 
 20798                 
 19401 
 20814 
 19402         {
 20815         {
 19403             symbol_c *IN_type_symbol = param_data_type;
 20816             symbol_c *IN_type_symbol = param_data_type;
 19404             last_type_symbol = param_data_type;
 20817             last_type_symbol = param_data_type;
 19405             
 20818             
 19406             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 20819             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19407             {
 20820             {
 19408         
 20821         
 19409                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 20822                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 19410                 return return_type_symbol;
 20823                 return return_type_symbol;
 19411                 
 20824                 
 19427 
 20840 
 19428         {
 20841         {
 19429             symbol_c *IN_type_symbol = param_data_type;
 20842             symbol_c *IN_type_symbol = param_data_type;
 19430             last_type_symbol = param_data_type;
 20843             last_type_symbol = param_data_type;
 19431             
 20844             
 19432             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 20845             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19433             {
 20846             {
 19434         
 20847         
 19435                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 20848                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 19436                 return return_type_symbol;
 20849                 return return_type_symbol;
 19437                 
 20850                 
 19453 
 20866 
 19454         {
 20867         {
 19455             symbol_c *IN_type_symbol = param_data_type;
 20868             symbol_c *IN_type_symbol = param_data_type;
 19456             last_type_symbol = param_data_type;
 20869             last_type_symbol = param_data_type;
 19457             
 20870             
 19458             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 20871             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19459             {
 20872             {
 19460         
 20873         
 19461                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 20874                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 19462                 return return_type_symbol;
 20875                 return return_type_symbol;
 19463                 
 20876                 
 19479 
 20892 
 19480         {
 20893         {
 19481             symbol_c *IN_type_symbol = param_data_type;
 20894             symbol_c *IN_type_symbol = param_data_type;
 19482             last_type_symbol = param_data_type;
 20895             last_type_symbol = param_data_type;
 19483             
 20896             
 19484             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 20897             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19485             {
 20898             {
 19486         
 20899         
 19487                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 20900                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 19488                 return return_type_symbol;
 20901                 return return_type_symbol;
 19489                 
 20902                 
 19505 
 20918 
 19506         {
 20919         {
 19507             symbol_c *IN_type_symbol = param_data_type;
 20920             symbol_c *IN_type_symbol = param_data_type;
 19508             last_type_symbol = param_data_type;
 20921             last_type_symbol = param_data_type;
 19509             
 20922             
 19510             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 20923             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19511             {
 20924             {
 19512         
 20925         
 19513                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 20926                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 19514                 return return_type_symbol;
 20927                 return return_type_symbol;
 19515                 
 20928                 
 19531 
 20944 
 19532         {
 20945         {
 19533             symbol_c *IN_type_symbol = param_data_type;
 20946             symbol_c *IN_type_symbol = param_data_type;
 19534             last_type_symbol = param_data_type;
 20947             last_type_symbol = param_data_type;
 19535             
 20948             
 19536             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 20949             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19537             {
 20950             {
 19538         
 20951         
 19539                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 20952                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 19540                 return return_type_symbol;
 20953                 return return_type_symbol;
 19541                 
 20954                 
 19557 
 20970 
 19558         {
 20971         {
 19559             symbol_c *IN_type_symbol = param_data_type;
 20972             symbol_c *IN_type_symbol = param_data_type;
 19560             last_type_symbol = param_data_type;
 20973             last_type_symbol = param_data_type;
 19561             
 20974             
 19562             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 20975             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19563             {
 20976             {
 19564         
 20977         
 19565                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 20978                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 19566                 return return_type_symbol;
 20979                 return return_type_symbol;
 19567                 
 20980                 
 19583 
 20996 
 19584         {
 20997         {
 19585             symbol_c *IN_type_symbol = param_data_type;
 20998             symbol_c *IN_type_symbol = param_data_type;
 19586             last_type_symbol = param_data_type;
 20999             last_type_symbol = param_data_type;
 19587             
 21000             
 19588             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 21001             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19589             {
 21002             {
 19590         
 21003         
 19591                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 21004                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 19592                 return return_type_symbol;
 21005                 return return_type_symbol;
 19593                 
 21006                 
 19609 
 21022 
 19610         {
 21023         {
 19611             symbol_c *IN_type_symbol = param_data_type;
 21024             symbol_c *IN_type_symbol = param_data_type;
 19612             last_type_symbol = param_data_type;
 21025             last_type_symbol = param_data_type;
 19613             
 21026             
 19614             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 21027             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19615             {
 21028             {
 19616         
 21029         
 19617                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 21030                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 19618                 return return_type_symbol;
 21031                 return return_type_symbol;
 19619                 
 21032                 
 19635 
 21048 
 19636         {
 21049         {
 19637             symbol_c *IN_type_symbol = param_data_type;
 21050             symbol_c *IN_type_symbol = param_data_type;
 19638             last_type_symbol = param_data_type;
 21051             last_type_symbol = param_data_type;
 19639             
 21052             
 19640             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 21053             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19641             {
 21054             {
 19642         
 21055         
 19643                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 21056                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 19644                 return return_type_symbol;
 21057                 return return_type_symbol;
 19645                 
 21058                 
 19661 
 21074 
 19662         {
 21075         {
 19663             symbol_c *IN_type_symbol = param_data_type;
 21076             symbol_c *IN_type_symbol = param_data_type;
 19664             last_type_symbol = param_data_type;
 21077             last_type_symbol = param_data_type;
 19665             
 21078             
 19666             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 21079             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 19667             {
 21080             {
 19668         
 21081         
 19669                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 21082                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 19670                 return return_type_symbol;
 21083                 return return_type_symbol;
 19671                 
 21084                 
 19687 
 21100 
 19688         {
 21101         {
 19689             symbol_c *IN_type_symbol = param_data_type;
 21102             symbol_c *IN_type_symbol = param_data_type;
 19690             last_type_symbol = param_data_type;
 21103             last_type_symbol = param_data_type;
 19691             
 21104             
 19692             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21105             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 19693             {
 21106             {
 19694         
 21107         
 19695                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 21108                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 19696                 return return_type_symbol;
 21109                 return return_type_symbol;
 19697                 
 21110                 
 19713 
 21126 
 19714         {
 21127         {
 19715             symbol_c *IN_type_symbol = param_data_type;
 21128             symbol_c *IN_type_symbol = param_data_type;
 19716             last_type_symbol = param_data_type;
 21129             last_type_symbol = param_data_type;
 19717             
 21130             
 19718             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21131             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 19719             {
 21132             {
 19720         
 21133         
 19721                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 21134                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 19722                 return return_type_symbol;
 21135                 return return_type_symbol;
 19723                 
 21136                 
 19739 
 21152 
 19740         {
 21153         {
 19741             symbol_c *IN_type_symbol = param_data_type;
 21154             symbol_c *IN_type_symbol = param_data_type;
 19742             last_type_symbol = param_data_type;
 21155             last_type_symbol = param_data_type;
 19743             
 21156             
 19744             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21157             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 19745             {
 21158             {
 19746         
 21159         
 19747                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 21160                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 19748                 return return_type_symbol;
 21161                 return return_type_symbol;
 19749                 
 21162                 
 19765 
 21178 
 19766         {
 21179         {
 19767             symbol_c *IN_type_symbol = param_data_type;
 21180             symbol_c *IN_type_symbol = param_data_type;
 19768             last_type_symbol = param_data_type;
 21181             last_type_symbol = param_data_type;
 19769             
 21182             
 19770             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21183             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 19771             {
 21184             {
 19772         
 21185         
 19773                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 21186                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 19774                 return return_type_symbol;
 21187                 return return_type_symbol;
 19775                 
 21188                 
 19791 
 21204 
 19792         {
 21205         {
 19793             symbol_c *IN_type_symbol = param_data_type;
 21206             symbol_c *IN_type_symbol = param_data_type;
 19794             last_type_symbol = param_data_type;
 21207             last_type_symbol = param_data_type;
 19795             
 21208             
 19796             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21209             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 19797             {
 21210             {
 19798         
 21211         
 19799                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 21212                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 19800                 return return_type_symbol;
 21213                 return return_type_symbol;
 19801                 
 21214                 
 19817 
 21230 
 19818         {
 21231         {
 19819             symbol_c *IN_type_symbol = param_data_type;
 21232             symbol_c *IN_type_symbol = param_data_type;
 19820             last_type_symbol = param_data_type;
 21233             last_type_symbol = param_data_type;
 19821             
 21234             
 19822             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21235             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 19823             {
 21236             {
 19824         
 21237         
 19825                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 21238                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 19826                 return return_type_symbol;
 21239                 return return_type_symbol;
 19827                 
 21240                 
 19843 
 21256 
 19844         {
 21257         {
 19845             symbol_c *IN_type_symbol = param_data_type;
 21258             symbol_c *IN_type_symbol = param_data_type;
 19846             last_type_symbol = param_data_type;
 21259             last_type_symbol = param_data_type;
 19847             
 21260             
 19848             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21261             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 19849             {
 21262             {
 19850         
 21263         
 19851                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 21264                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 19852                 return return_type_symbol;
 21265                 return return_type_symbol;
 19853                 
 21266                 
 19869 
 21282 
 19870         {
 21283         {
 19871             symbol_c *IN_type_symbol = param_data_type;
 21284             symbol_c *IN_type_symbol = param_data_type;
 19872             last_type_symbol = param_data_type;
 21285             last_type_symbol = param_data_type;
 19873             
 21286             
 19874             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21287             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 19875             {
 21288             {
 19876         
 21289         
 19877                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 21290                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 19878                 return return_type_symbol;
 21291                 return return_type_symbol;
 19879                 
 21292                 
 19895 
 21308 
 19896         {
 21309         {
 19897             symbol_c *IN_type_symbol = param_data_type;
 21310             symbol_c *IN_type_symbol = param_data_type;
 19898             last_type_symbol = param_data_type;
 21311             last_type_symbol = param_data_type;
 19899             
 21312             
 19900             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21313             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 19901             {
 21314             {
 19902         
 21315         
 19903                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 21316                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 19904                 return return_type_symbol;
 21317                 return return_type_symbol;
 19905                 
 21318                 
 19921 
 21334 
 19922         {
 21335         {
 19923             symbol_c *IN_type_symbol = param_data_type;
 21336             symbol_c *IN_type_symbol = param_data_type;
 19924             last_type_symbol = param_data_type;
 21337             last_type_symbol = param_data_type;
 19925             
 21338             
 19926             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21339             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 19927             {
 21340             {
 19928         
 21341         
 19929                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 21342                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 19930                 return return_type_symbol;
 21343                 return return_type_symbol;
 19931                 
 21344                 
 19947 
 21360 
 19948         {
 21361         {
 19949             symbol_c *IN_type_symbol = param_data_type;
 21362             symbol_c *IN_type_symbol = param_data_type;
 19950             last_type_symbol = param_data_type;
 21363             last_type_symbol = param_data_type;
 19951             
 21364             
 19952             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21365             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 19953             {
 21366             {
 19954         
 21367         
 19955                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 21368                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 19956                 return return_type_symbol;
 21369                 return return_type_symbol;
 19957                 
 21370                 
 19973 
 21386 
 19974         {
 21387         {
 19975             symbol_c *IN_type_symbol = param_data_type;
 21388             symbol_c *IN_type_symbol = param_data_type;
 19976             last_type_symbol = param_data_type;
 21389             last_type_symbol = param_data_type;
 19977             
 21390             
 19978             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21391             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 19979             {
 21392             {
 19980         
 21393         
 19981                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 21394                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 19982                 return return_type_symbol;
 21395                 return return_type_symbol;
 19983                 
 21396                 
 19999 
 21412 
 20000         {
 21413         {
 20001             symbol_c *IN_type_symbol = param_data_type;
 21414             symbol_c *IN_type_symbol = param_data_type;
 20002             last_type_symbol = param_data_type;
 21415             last_type_symbol = param_data_type;
 20003             
 21416             
 20004             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21417             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 20005             {
 21418             {
 20006         
 21419         
 20007                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 21420                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 20008                 return return_type_symbol;
 21421                 return return_type_symbol;
 20009                 
 21422                 
 20025 
 21438 
 20026         {
 21439         {
 20027             symbol_c *IN_type_symbol = param_data_type;
 21440             symbol_c *IN_type_symbol = param_data_type;
 20028             last_type_symbol = param_data_type;
 21441             last_type_symbol = param_data_type;
 20029             
 21442             
 20030             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21443             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 20031             {
 21444             {
 20032         
 21445         
 20033                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 21446                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 20034                 return return_type_symbol;
 21447                 return return_type_symbol;
 20035                 
 21448                 
 20051 
 21464 
 20052         {
 21465         {
 20053             symbol_c *IN_type_symbol = param_data_type;
 21466             symbol_c *IN_type_symbol = param_data_type;
 20054             last_type_symbol = param_data_type;
 21467             last_type_symbol = param_data_type;
 20055             
 21468             
 20056             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21469             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 20057             {
 21470             {
 20058         
 21471         
 20059                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 21472                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 20060                 return return_type_symbol;
 21473                 return return_type_symbol;
 20061                 
 21474                 
 20077 
 21490 
 20078         {
 21491         {
 20079             symbol_c *IN_type_symbol = param_data_type;
 21492             symbol_c *IN_type_symbol = param_data_type;
 20080             last_type_symbol = param_data_type;
 21493             last_type_symbol = param_data_type;
 20081             
 21494             
 20082             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21495             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 20083             {
 21496             {
 20084         
 21497         
 20085                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 21498                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 20086                 return return_type_symbol;
 21499                 return return_type_symbol;
 20087                 
 21500                 
 20103 
 21516 
 20104         {
 21517         {
 20105             symbol_c *IN_type_symbol = param_data_type;
 21518             symbol_c *IN_type_symbol = param_data_type;
 20106             last_type_symbol = param_data_type;
 21519             last_type_symbol = param_data_type;
 20107             
 21520             
 20108             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21521             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 20109             {
 21522             {
 20110         
 21523         
 20111                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 21524                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 20112                 return return_type_symbol;
 21525                 return return_type_symbol;
 20113                 
 21526                 
 20129 
 21542 
 20130         {
 21543         {
 20131             symbol_c *IN_type_symbol = param_data_type;
 21544             symbol_c *IN_type_symbol = param_data_type;
 20132             last_type_symbol = param_data_type;
 21545             last_type_symbol = param_data_type;
 20133             
 21546             
 20134             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21547             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 20135             {
 21548             {
 20136         
 21549         
 20137                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 21550                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 20138                 return return_type_symbol;
 21551                 return return_type_symbol;
 20139                 
 21552                 
 20155 
 21568 
 20156         {
 21569         {
 20157             symbol_c *IN_type_symbol = param_data_type;
 21570             symbol_c *IN_type_symbol = param_data_type;
 20158             last_type_symbol = param_data_type;
 21571             last_type_symbol = param_data_type;
 20159             
 21572             
 20160             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 21573             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 20161             {
 21574             {
 20162         
 21575         
 20163                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 21576                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 20164                 return return_type_symbol;
 21577                 return return_type_symbol;
 20165                 
 21578                 
 20181 
 21594 
 20182         {
 21595         {
 20183             symbol_c *IN_type_symbol = param_data_type;
 21596             symbol_c *IN_type_symbol = param_data_type;
 20184             last_type_symbol = param_data_type;
 21597             last_type_symbol = param_data_type;
 20185             
 21598             
 20186             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21599             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20187             {
 21600             {
 20188         
 21601         
 20189                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 21602                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 20190                 return return_type_symbol;
 21603                 return return_type_symbol;
 20191                 
 21604                 
 20207 
 21620 
 20208         {
 21621         {
 20209             symbol_c *IN_type_symbol = param_data_type;
 21622             symbol_c *IN_type_symbol = param_data_type;
 20210             last_type_symbol = param_data_type;
 21623             last_type_symbol = param_data_type;
 20211             
 21624             
 20212             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21625             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20213             {
 21626             {
 20214         
 21627         
 20215                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 21628                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 20216                 return return_type_symbol;
 21629                 return return_type_symbol;
 20217                 
 21630                 
 20233 
 21646 
 20234         {
 21647         {
 20235             symbol_c *IN_type_symbol = param_data_type;
 21648             symbol_c *IN_type_symbol = param_data_type;
 20236             last_type_symbol = param_data_type;
 21649             last_type_symbol = param_data_type;
 20237             
 21650             
 20238             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21651             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20239             {
 21652             {
 20240         
 21653         
 20241                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 21654                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 20242                 return return_type_symbol;
 21655                 return return_type_symbol;
 20243                 
 21656                 
 20259 
 21672 
 20260         {
 21673         {
 20261             symbol_c *IN_type_symbol = param_data_type;
 21674             symbol_c *IN_type_symbol = param_data_type;
 20262             last_type_symbol = param_data_type;
 21675             last_type_symbol = param_data_type;
 20263             
 21676             
 20264             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21677             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20265             {
 21678             {
 20266         
 21679         
 20267                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 21680                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 20268                 return return_type_symbol;
 21681                 return return_type_symbol;
 20269                 
 21682                 
 20285 
 21698 
 20286         {
 21699         {
 20287             symbol_c *IN_type_symbol = param_data_type;
 21700             symbol_c *IN_type_symbol = param_data_type;
 20288             last_type_symbol = param_data_type;
 21701             last_type_symbol = param_data_type;
 20289             
 21702             
 20290             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21703             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20291             {
 21704             {
 20292         
 21705         
 20293                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 21706                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 20294                 return return_type_symbol;
 21707                 return return_type_symbol;
 20295                 
 21708                 
 20311 
 21724 
 20312         {
 21725         {
 20313             symbol_c *IN_type_symbol = param_data_type;
 21726             symbol_c *IN_type_symbol = param_data_type;
 20314             last_type_symbol = param_data_type;
 21727             last_type_symbol = param_data_type;
 20315             
 21728             
 20316             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21729             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20317             {
 21730             {
 20318         
 21731         
 20319                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 21732                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 20320                 return return_type_symbol;
 21733                 return return_type_symbol;
 20321                 
 21734                 
 20337 
 21750 
 20338         {
 21751         {
 20339             symbol_c *IN_type_symbol = param_data_type;
 21752             symbol_c *IN_type_symbol = param_data_type;
 20340             last_type_symbol = param_data_type;
 21753             last_type_symbol = param_data_type;
 20341             
 21754             
 20342             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21755             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20343             {
 21756             {
 20344         
 21757         
 20345                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 21758                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 20346                 return return_type_symbol;
 21759                 return return_type_symbol;
 20347                 
 21760                 
 20363 
 21776 
 20364         {
 21777         {
 20365             symbol_c *IN_type_symbol = param_data_type;
 21778             symbol_c *IN_type_symbol = param_data_type;
 20366             last_type_symbol = param_data_type;
 21779             last_type_symbol = param_data_type;
 20367             
 21780             
 20368             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21781             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20369             {
 21782             {
 20370         
 21783         
 20371                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 21784                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 20372                 return return_type_symbol;
 21785                 return return_type_symbol;
 20373                 
 21786                 
 20389 
 21802 
 20390         {
 21803         {
 20391             symbol_c *IN_type_symbol = param_data_type;
 21804             symbol_c *IN_type_symbol = param_data_type;
 20392             last_type_symbol = param_data_type;
 21805             last_type_symbol = param_data_type;
 20393             
 21806             
 20394             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21807             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20395             {
 21808             {
 20396         
 21809         
 20397                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 21810                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 20398                 return return_type_symbol;
 21811                 return return_type_symbol;
 20399                 
 21812                 
 20415 
 21828 
 20416         {
 21829         {
 20417             symbol_c *IN_type_symbol = param_data_type;
 21830             symbol_c *IN_type_symbol = param_data_type;
 20418             last_type_symbol = param_data_type;
 21831             last_type_symbol = param_data_type;
 20419             
 21832             
 20420             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21833             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20421             {
 21834             {
 20422         
 21835         
 20423                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 21836                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 20424                 return return_type_symbol;
 21837                 return return_type_symbol;
 20425                 
 21838                 
 20441 
 21854 
 20442         {
 21855         {
 20443             symbol_c *IN_type_symbol = param_data_type;
 21856             symbol_c *IN_type_symbol = param_data_type;
 20444             last_type_symbol = param_data_type;
 21857             last_type_symbol = param_data_type;
 20445             
 21858             
 20446             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21859             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20447             {
 21860             {
 20448         
 21861         
 20449                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 21862                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 20450                 return return_type_symbol;
 21863                 return return_type_symbol;
 20451                 
 21864                 
 20467 
 21880 
 20468         {
 21881         {
 20469             symbol_c *IN_type_symbol = param_data_type;
 21882             symbol_c *IN_type_symbol = param_data_type;
 20470             last_type_symbol = param_data_type;
 21883             last_type_symbol = param_data_type;
 20471             
 21884             
 20472             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21885             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20473             {
 21886             {
 20474         
 21887         
 20475                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 21888                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 20476                 return return_type_symbol;
 21889                 return return_type_symbol;
 20477                 
 21890                 
 20493 
 21906 
 20494         {
 21907         {
 20495             symbol_c *IN_type_symbol = param_data_type;
 21908             symbol_c *IN_type_symbol = param_data_type;
 20496             last_type_symbol = param_data_type;
 21909             last_type_symbol = param_data_type;
 20497             
 21910             
 20498             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21911             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20499             {
 21912             {
 20500         
 21913         
 20501                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 21914                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 20502                 return return_type_symbol;
 21915                 return return_type_symbol;
 20503                 
 21916                 
 20519 
 21932 
 20520         {
 21933         {
 20521             symbol_c *IN_type_symbol = param_data_type;
 21934             symbol_c *IN_type_symbol = param_data_type;
 20522             last_type_symbol = param_data_type;
 21935             last_type_symbol = param_data_type;
 20523             
 21936             
 20524             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21937             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20525             {
 21938             {
 20526         
 21939         
 20527                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 21940                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 20528                 return return_type_symbol;
 21941                 return return_type_symbol;
 20529                 
 21942                 
 20545 
 21958 
 20546         {
 21959         {
 20547             symbol_c *IN_type_symbol = param_data_type;
 21960             symbol_c *IN_type_symbol = param_data_type;
 20548             last_type_symbol = param_data_type;
 21961             last_type_symbol = param_data_type;
 20549             
 21962             
 20550             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21963             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20551             {
 21964             {
 20552         
 21965         
 20553                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 21966                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 20554                 return return_type_symbol;
 21967                 return return_type_symbol;
 20555                 
 21968                 
 20571 
 21984 
 20572         {
 21985         {
 20573             symbol_c *IN_type_symbol = param_data_type;
 21986             symbol_c *IN_type_symbol = param_data_type;
 20574             last_type_symbol = param_data_type;
 21987             last_type_symbol = param_data_type;
 20575             
 21988             
 20576             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 21989             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20577             {
 21990             {
 20578         
 21991         
 20579                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 21992                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 20580                 return return_type_symbol;
 21993                 return return_type_symbol;
 20581                 
 21994                 
 20597 
 22010 
 20598         {
 22011         {
 20599             symbol_c *IN_type_symbol = param_data_type;
 22012             symbol_c *IN_type_symbol = param_data_type;
 20600             last_type_symbol = param_data_type;
 22013             last_type_symbol = param_data_type;
 20601             
 22014             
 20602             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 22015             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20603             {
 22016             {
 20604         
 22017         
 20605                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 22018                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 20606                 return return_type_symbol;
 22019                 return return_type_symbol;
 20607                 
 22020                 
 20623 
 22036 
 20624         {
 22037         {
 20625             symbol_c *IN_type_symbol = param_data_type;
 22038             symbol_c *IN_type_symbol = param_data_type;
 20626             last_type_symbol = param_data_type;
 22039             last_type_symbol = param_data_type;
 20627             
 22040             
 20628             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 22041             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20629             {
 22042             {
 20630         
 22043         
 20631                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 22044                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 20632                 return return_type_symbol;
 22045                 return return_type_symbol;
 20633                 
 22046                 
 20649 
 22062 
 20650         {
 22063         {
 20651             symbol_c *IN_type_symbol = param_data_type;
 22064             symbol_c *IN_type_symbol = param_data_type;
 20652             last_type_symbol = param_data_type;
 22065             last_type_symbol = param_data_type;
 20653             
 22066             
 20654             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 22067             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 20655             {
 22068             {
 20656         
 22069         
 20657                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 22070                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 20658                 return return_type_symbol;
 22071                 return return_type_symbol;
 20659                 
 22072                 
 20675 
 22088 
 20676         {
 22089         {
 20677             symbol_c *IN_type_symbol = param_data_type;
 22090             symbol_c *IN_type_symbol = param_data_type;
 20678             last_type_symbol = param_data_type;
 22091             last_type_symbol = param_data_type;
 20679             
 22092             
 20680             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22093             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 20681             {
 22094             {
 20682         
 22095         
 20683                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 22096                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 20684                 return return_type_symbol;
 22097                 return return_type_symbol;
 20685                 
 22098                 
 20701 
 22114 
 20702         {
 22115         {
 20703             symbol_c *IN_type_symbol = param_data_type;
 22116             symbol_c *IN_type_symbol = param_data_type;
 20704             last_type_symbol = param_data_type;
 22117             last_type_symbol = param_data_type;
 20705             
 22118             
 20706             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22119             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 20707             {
 22120             {
 20708         
 22121         
 20709                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 22122                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 20710                 return return_type_symbol;
 22123                 return return_type_symbol;
 20711                 
 22124                 
 20727 
 22140 
 20728         {
 22141         {
 20729             symbol_c *IN_type_symbol = param_data_type;
 22142             symbol_c *IN_type_symbol = param_data_type;
 20730             last_type_symbol = param_data_type;
 22143             last_type_symbol = param_data_type;
 20731             
 22144             
 20732             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22145             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 20733             {
 22146             {
 20734         
 22147         
 20735                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 22148                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 20736                 return return_type_symbol;
 22149                 return return_type_symbol;
 20737                 
 22150                 
 20753 
 22166 
 20754         {
 22167         {
 20755             symbol_c *IN_type_symbol = param_data_type;
 22168             symbol_c *IN_type_symbol = param_data_type;
 20756             last_type_symbol = param_data_type;
 22169             last_type_symbol = param_data_type;
 20757             
 22170             
 20758             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22171             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 20759             {
 22172             {
 20760         
 22173         
 20761                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 22174                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 20762                 return return_type_symbol;
 22175                 return return_type_symbol;
 20763                 
 22176                 
 20779 
 22192 
 20780         {
 22193         {
 20781             symbol_c *IN_type_symbol = param_data_type;
 22194             symbol_c *IN_type_symbol = param_data_type;
 20782             last_type_symbol = param_data_type;
 22195             last_type_symbol = param_data_type;
 20783             
 22196             
 20784             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22197             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 20785             {
 22198             {
 20786         
 22199         
 20787                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 22200                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 20788                 return return_type_symbol;
 22201                 return return_type_symbol;
 20789                 
 22202                 
 20805 
 22218 
 20806         {
 22219         {
 20807             symbol_c *IN_type_symbol = param_data_type;
 22220             symbol_c *IN_type_symbol = param_data_type;
 20808             last_type_symbol = param_data_type;
 22221             last_type_symbol = param_data_type;
 20809             
 22222             
 20810             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22223             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 20811             {
 22224             {
 20812         
 22225         
 20813                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 22226                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 20814                 return return_type_symbol;
 22227                 return return_type_symbol;
 20815                 
 22228                 
 20831 
 22244 
 20832         {
 22245         {
 20833             symbol_c *IN_type_symbol = param_data_type;
 22246             symbol_c *IN_type_symbol = param_data_type;
 20834             last_type_symbol = param_data_type;
 22247             last_type_symbol = param_data_type;
 20835             
 22248             
 20836             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22249             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 20837             {
 22250             {
 20838         
 22251         
 20839                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 22252                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 20840                 return return_type_symbol;
 22253                 return return_type_symbol;
 20841                 
 22254                 
 20857 
 22270 
 20858         {
 22271         {
 20859             symbol_c *IN_type_symbol = param_data_type;
 22272             symbol_c *IN_type_symbol = param_data_type;
 20860             last_type_symbol = param_data_type;
 22273             last_type_symbol = param_data_type;
 20861             
 22274             
 20862             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22275             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 20863             {
 22276             {
 20864         
 22277         
 20865                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 22278                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 20866                 return return_type_symbol;
 22279                 return return_type_symbol;
 20867                 
 22280                 
 20883 
 22296 
 20884         {
 22297         {
 20885             symbol_c *IN_type_symbol = param_data_type;
 22298             symbol_c *IN_type_symbol = param_data_type;
 20886             last_type_symbol = param_data_type;
 22299             last_type_symbol = param_data_type;
 20887             
 22300             
 20888             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22301             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 20889             {
 22302             {
 20890         
 22303         
 20891                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 22304                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 20892                 return return_type_symbol;
 22305                 return return_type_symbol;
 20893                 
 22306                 
 20909 
 22322 
 20910         {
 22323         {
 20911             symbol_c *IN_type_symbol = param_data_type;
 22324             symbol_c *IN_type_symbol = param_data_type;
 20912             last_type_symbol = param_data_type;
 22325             last_type_symbol = param_data_type;
 20913             
 22326             
 20914             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22327             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 20915             {
 22328             {
 20916         
 22329         
 20917                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 22330                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 20918                 return return_type_symbol;
 22331                 return return_type_symbol;
 20919                 
 22332                 
 20935 
 22348 
 20936         {
 22349         {
 20937             symbol_c *IN_type_symbol = param_data_type;
 22350             symbol_c *IN_type_symbol = param_data_type;
 20938             last_type_symbol = param_data_type;
 22351             last_type_symbol = param_data_type;
 20939             
 22352             
 20940             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22353             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 20941             {
 22354             {
 20942         
 22355         
 20943                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 22356                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 20944                 return return_type_symbol;
 22357                 return return_type_symbol;
 20945                 
 22358                 
 20961 
 22374 
 20962         {
 22375         {
 20963             symbol_c *IN_type_symbol = param_data_type;
 22376             symbol_c *IN_type_symbol = param_data_type;
 20964             last_type_symbol = param_data_type;
 22377             last_type_symbol = param_data_type;
 20965             
 22378             
 20966             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22379             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 20967             {
 22380             {
 20968         
 22381         
 20969                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 22382                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 20970                 return return_type_symbol;
 22383                 return return_type_symbol;
 20971                 
 22384                 
 20987 
 22400 
 20988         {
 22401         {
 20989             symbol_c *IN_type_symbol = param_data_type;
 22402             symbol_c *IN_type_symbol = param_data_type;
 20990             last_type_symbol = param_data_type;
 22403             last_type_symbol = param_data_type;
 20991             
 22404             
 20992             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22405             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 20993             {
 22406             {
 20994         
 22407         
 20995                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 22408                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 20996                 return return_type_symbol;
 22409                 return return_type_symbol;
 20997                 
 22410                 
 21013 
 22426 
 21014         {
 22427         {
 21015             symbol_c *IN_type_symbol = param_data_type;
 22428             symbol_c *IN_type_symbol = param_data_type;
 21016             last_type_symbol = param_data_type;
 22429             last_type_symbol = param_data_type;
 21017             
 22430             
 21018             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22431             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 21019             {
 22432             {
 21020         
 22433         
 21021                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 22434                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 21022                 return return_type_symbol;
 22435                 return return_type_symbol;
 21023                 
 22436                 
 21039 
 22452 
 21040         {
 22453         {
 21041             symbol_c *IN_type_symbol = param_data_type;
 22454             symbol_c *IN_type_symbol = param_data_type;
 21042             last_type_symbol = param_data_type;
 22455             last_type_symbol = param_data_type;
 21043             
 22456             
 21044             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22457             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 21045             {
 22458             {
 21046         
 22459         
 21047                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 22460                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 21048                 return return_type_symbol;
 22461                 return return_type_symbol;
 21049                 
 22462                 
 21065 
 22478 
 21066         {
 22479         {
 21067             symbol_c *IN_type_symbol = param_data_type;
 22480             symbol_c *IN_type_symbol = param_data_type;
 21068             last_type_symbol = param_data_type;
 22481             last_type_symbol = param_data_type;
 21069             
 22482             
 21070             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22483             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 21071             {
 22484             {
 21072         
 22485         
 21073                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 22486                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 21074                 return return_type_symbol;
 22487                 return return_type_symbol;
 21075                 
 22488                 
 21091 
 22504 
 21092         {
 22505         {
 21093             symbol_c *IN_type_symbol = param_data_type;
 22506             symbol_c *IN_type_symbol = param_data_type;
 21094             last_type_symbol = param_data_type;
 22507             last_type_symbol = param_data_type;
 21095             
 22508             
 21096             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22509             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 21097             {
 22510             {
 21098         
 22511         
 21099                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 22512                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 21100                 return return_type_symbol;
 22513                 return return_type_symbol;
 21101                 
 22514                 
 21117 
 22530 
 21118         {
 22531         {
 21119             symbol_c *IN_type_symbol = param_data_type;
 22532             symbol_c *IN_type_symbol = param_data_type;
 21120             last_type_symbol = param_data_type;
 22533             last_type_symbol = param_data_type;
 21121             
 22534             
 21122             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22535             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 21123             {
 22536             {
 21124         
 22537         
 21125                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 22538                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 21126                 return return_type_symbol;
 22539                 return return_type_symbol;
 21127                 
 22540                 
 21143 
 22556 
 21144         {
 22557         {
 21145             symbol_c *IN_type_symbol = param_data_type;
 22558             symbol_c *IN_type_symbol = param_data_type;
 21146             last_type_symbol = param_data_type;
 22559             last_type_symbol = param_data_type;
 21147             
 22560             
 21148             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 22561             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 21149             {
 22562             {
 21150         
 22563         
 21151                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 22564                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 21152                 return return_type_symbol;
 22565                 return return_type_symbol;
 21153                 
 22566                 
 21169 
 22582 
 21170         {
 22583         {
 21171             symbol_c *IN_type_symbol = param_data_type;
 22584             symbol_c *IN_type_symbol = param_data_type;
 21172             last_type_symbol = param_data_type;
 22585             last_type_symbol = param_data_type;
 21173             
 22586             
 21174             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22587             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21175             {
 22588             {
 21176         
 22589         
 21177                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 22590                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 21178                 return return_type_symbol;
 22591                 return return_type_symbol;
 21179                 
 22592                 
 21195 
 22608 
 21196         {
 22609         {
 21197             symbol_c *IN_type_symbol = param_data_type;
 22610             symbol_c *IN_type_symbol = param_data_type;
 21198             last_type_symbol = param_data_type;
 22611             last_type_symbol = param_data_type;
 21199             
 22612             
 21200             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22613             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21201             {
 22614             {
 21202         
 22615         
 21203                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 22616                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 21204                 return return_type_symbol;
 22617                 return return_type_symbol;
 21205                 
 22618                 
 21221 
 22634 
 21222         {
 22635         {
 21223             symbol_c *IN_type_symbol = param_data_type;
 22636             symbol_c *IN_type_symbol = param_data_type;
 21224             last_type_symbol = param_data_type;
 22637             last_type_symbol = param_data_type;
 21225             
 22638             
 21226             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22639             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21227             {
 22640             {
 21228         
 22641         
 21229                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 22642                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 21230                 return return_type_symbol;
 22643                 return return_type_symbol;
 21231                 
 22644                 
 21247 
 22660 
 21248         {
 22661         {
 21249             symbol_c *IN_type_symbol = param_data_type;
 22662             symbol_c *IN_type_symbol = param_data_type;
 21250             last_type_symbol = param_data_type;
 22663             last_type_symbol = param_data_type;
 21251             
 22664             
 21252             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22665             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21253             {
 22666             {
 21254         
 22667         
 21255                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 22668                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 21256                 return return_type_symbol;
 22669                 return return_type_symbol;
 21257                 
 22670                 
 21273 
 22686 
 21274         {
 22687         {
 21275             symbol_c *IN_type_symbol = param_data_type;
 22688             symbol_c *IN_type_symbol = param_data_type;
 21276             last_type_symbol = param_data_type;
 22689             last_type_symbol = param_data_type;
 21277             
 22690             
 21278             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22691             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21279             {
 22692             {
 21280         
 22693         
 21281                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 22694                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 21282                 return return_type_symbol;
 22695                 return return_type_symbol;
 21283                 
 22696                 
 21299 
 22712 
 21300         {
 22713         {
 21301             symbol_c *IN_type_symbol = param_data_type;
 22714             symbol_c *IN_type_symbol = param_data_type;
 21302             last_type_symbol = param_data_type;
 22715             last_type_symbol = param_data_type;
 21303             
 22716             
 21304             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22717             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21305             {
 22718             {
 21306         
 22719         
 21307                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 22720                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 21308                 return return_type_symbol;
 22721                 return return_type_symbol;
 21309                 
 22722                 
 21325 
 22738 
 21326         {
 22739         {
 21327             symbol_c *IN_type_symbol = param_data_type;
 22740             symbol_c *IN_type_symbol = param_data_type;
 21328             last_type_symbol = param_data_type;
 22741             last_type_symbol = param_data_type;
 21329             
 22742             
 21330             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22743             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21331             {
 22744             {
 21332         
 22745         
 21333                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 22746                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 21334                 return return_type_symbol;
 22747                 return return_type_symbol;
 21335                 
 22748                 
 21351 
 22764 
 21352         {
 22765         {
 21353             symbol_c *IN_type_symbol = param_data_type;
 22766             symbol_c *IN_type_symbol = param_data_type;
 21354             last_type_symbol = param_data_type;
 22767             last_type_symbol = param_data_type;
 21355             
 22768             
 21356             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22769             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21357             {
 22770             {
 21358         
 22771         
 21359                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 22772                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 21360                 return return_type_symbol;
 22773                 return return_type_symbol;
 21361                 
 22774                 
 21377 
 22790 
 21378         {
 22791         {
 21379             symbol_c *IN_type_symbol = param_data_type;
 22792             symbol_c *IN_type_symbol = param_data_type;
 21380             last_type_symbol = param_data_type;
 22793             last_type_symbol = param_data_type;
 21381             
 22794             
 21382             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22795             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21383             {
 22796             {
 21384         
 22797         
 21385                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 22798                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 21386                 return return_type_symbol;
 22799                 return return_type_symbol;
 21387                 
 22800                 
 21403 
 22816 
 21404         {
 22817         {
 21405             symbol_c *IN_type_symbol = param_data_type;
 22818             symbol_c *IN_type_symbol = param_data_type;
 21406             last_type_symbol = param_data_type;
 22819             last_type_symbol = param_data_type;
 21407             
 22820             
 21408             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22821             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21409             {
 22822             {
 21410         
 22823         
 21411                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 22824                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 21412                 return return_type_symbol;
 22825                 return return_type_symbol;
 21413                 
 22826                 
 21429 
 22842 
 21430         {
 22843         {
 21431             symbol_c *IN_type_symbol = param_data_type;
 22844             symbol_c *IN_type_symbol = param_data_type;
 21432             last_type_symbol = param_data_type;
 22845             last_type_symbol = param_data_type;
 21433             
 22846             
 21434             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22847             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21435             {
 22848             {
 21436         
 22849         
 21437                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 22850                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 21438                 return return_type_symbol;
 22851                 return return_type_symbol;
 21439                 
 22852                 
 21455 
 22868 
 21456         {
 22869         {
 21457             symbol_c *IN_type_symbol = param_data_type;
 22870             symbol_c *IN_type_symbol = param_data_type;
 21458             last_type_symbol = param_data_type;
 22871             last_type_symbol = param_data_type;
 21459             
 22872             
 21460             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22873             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21461             {
 22874             {
 21462         
 22875         
 21463                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 22876                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 21464                 return return_type_symbol;
 22877                 return return_type_symbol;
 21465                 
 22878                 
 21481 
 22894 
 21482         {
 22895         {
 21483             symbol_c *IN_type_symbol = param_data_type;
 22896             symbol_c *IN_type_symbol = param_data_type;
 21484             last_type_symbol = param_data_type;
 22897             last_type_symbol = param_data_type;
 21485             
 22898             
 21486             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22899             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21487             {
 22900             {
 21488         
 22901         
 21489                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 22902                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 21490                 return return_type_symbol;
 22903                 return return_type_symbol;
 21491                 
 22904                 
 21507 
 22920 
 21508         {
 22921         {
 21509             symbol_c *IN_type_symbol = param_data_type;
 22922             symbol_c *IN_type_symbol = param_data_type;
 21510             last_type_symbol = param_data_type;
 22923             last_type_symbol = param_data_type;
 21511             
 22924             
 21512             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22925             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21513             {
 22926             {
 21514         
 22927         
 21515                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 22928                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 21516                 return return_type_symbol;
 22929                 return return_type_symbol;
 21517                 
 22930                 
 21533 
 22946 
 21534         {
 22947         {
 21535             symbol_c *IN_type_symbol = param_data_type;
 22948             symbol_c *IN_type_symbol = param_data_type;
 21536             last_type_symbol = param_data_type;
 22949             last_type_symbol = param_data_type;
 21537             
 22950             
 21538             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22951             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21539             {
 22952             {
 21540         
 22953         
 21541                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 22954                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 21542                 return return_type_symbol;
 22955                 return return_type_symbol;
 21543                 
 22956                 
 21559 
 22972 
 21560         {
 22973         {
 21561             symbol_c *IN_type_symbol = param_data_type;
 22974             symbol_c *IN_type_symbol = param_data_type;
 21562             last_type_symbol = param_data_type;
 22975             last_type_symbol = param_data_type;
 21563             
 22976             
 21564             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 22977             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21565             {
 22978             {
 21566         
 22979         
 21567                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 22980                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 21568                 return return_type_symbol;
 22981                 return return_type_symbol;
 21569                 
 22982                 
 21585 
 22998 
 21586         {
 22999         {
 21587             symbol_c *IN_type_symbol = param_data_type;
 23000             symbol_c *IN_type_symbol = param_data_type;
 21588             last_type_symbol = param_data_type;
 23001             last_type_symbol = param_data_type;
 21589             
 23002             
 21590             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 23003             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21591             {
 23004             {
 21592         
 23005         
 21593                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 23006                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 21594                 return return_type_symbol;
 23007                 return return_type_symbol;
 21595                 
 23008                 
 21611 
 23024 
 21612         {
 23025         {
 21613             symbol_c *IN_type_symbol = param_data_type;
 23026             symbol_c *IN_type_symbol = param_data_type;
 21614             last_type_symbol = param_data_type;
 23027             last_type_symbol = param_data_type;
 21615             
 23028             
 21616             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 23029             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21617             {
 23030             {
 21618         
 23031         
 21619                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 23032                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 21620                 return return_type_symbol;
 23033                 return return_type_symbol;
 21621                 
 23034                 
 21637 
 23050 
 21638         {
 23051         {
 21639             symbol_c *IN_type_symbol = param_data_type;
 23052             symbol_c *IN_type_symbol = param_data_type;
 21640             last_type_symbol = param_data_type;
 23053             last_type_symbol = param_data_type;
 21641             
 23054             
 21642             if(search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 23055             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol))
 21643             {
 23056             {
 21644         
 23057         
 21645                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 23058                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 21646                 return return_type_symbol;
 23059                 return return_type_symbol;
 21647                 
 23060                 
 21663 
 23076 
 21664         {
 23077         {
 21665             symbol_c *IN_type_symbol = param_data_type;
 23078             symbol_c *IN_type_symbol = param_data_type;
 21666             last_type_symbol = param_data_type;
 23079             last_type_symbol = param_data_type;
 21667             
 23080             
 21668             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23081             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 21669             {
 23082             {
 21670         
 23083         
 21671                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 23084                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 21672                 return return_type_symbol;
 23085                 return return_type_symbol;
 21673                 
 23086                 
 21689 
 23102 
 21690         {
 23103         {
 21691             symbol_c *IN_type_symbol = param_data_type;
 23104             symbol_c *IN_type_symbol = param_data_type;
 21692             last_type_symbol = param_data_type;
 23105             last_type_symbol = param_data_type;
 21693             
 23106             
 21694             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23107             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 21695             {
 23108             {
 21696         
 23109         
 21697                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 23110                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 21698                 return return_type_symbol;
 23111                 return return_type_symbol;
 21699                 
 23112                 
 21715 
 23128 
 21716         {
 23129         {
 21717             symbol_c *IN_type_symbol = param_data_type;
 23130             symbol_c *IN_type_symbol = param_data_type;
 21718             last_type_symbol = param_data_type;
 23131             last_type_symbol = param_data_type;
 21719             
 23132             
 21720             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23133             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 21721             {
 23134             {
 21722         
 23135         
 21723                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 23136                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 21724                 return return_type_symbol;
 23137                 return return_type_symbol;
 21725                 
 23138                 
 21741 
 23154 
 21742         {
 23155         {
 21743             symbol_c *IN_type_symbol = param_data_type;
 23156             symbol_c *IN_type_symbol = param_data_type;
 21744             last_type_symbol = param_data_type;
 23157             last_type_symbol = param_data_type;
 21745             
 23158             
 21746             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23159             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 21747             {
 23160             {
 21748         
 23161         
 21749                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 23162                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 21750                 return return_type_symbol;
 23163                 return return_type_symbol;
 21751                 
 23164                 
 21767 
 23180 
 21768         {
 23181         {
 21769             symbol_c *IN_type_symbol = param_data_type;
 23182             symbol_c *IN_type_symbol = param_data_type;
 21770             last_type_symbol = param_data_type;
 23183             last_type_symbol = param_data_type;
 21771             
 23184             
 21772             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23185             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 21773             {
 23186             {
 21774         
 23187         
 21775                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 23188                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 21776                 return return_type_symbol;
 23189                 return return_type_symbol;
 21777                 
 23190                 
 21793 
 23206 
 21794         {
 23207         {
 21795             symbol_c *IN_type_symbol = param_data_type;
 23208             symbol_c *IN_type_symbol = param_data_type;
 21796             last_type_symbol = param_data_type;
 23209             last_type_symbol = param_data_type;
 21797             
 23210             
 21798             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23211             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 21799             {
 23212             {
 21800         
 23213         
 21801                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 23214                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 21802                 return return_type_symbol;
 23215                 return return_type_symbol;
 21803                 
 23216                 
 21819 
 23232 
 21820         {
 23233         {
 21821             symbol_c *IN_type_symbol = param_data_type;
 23234             symbol_c *IN_type_symbol = param_data_type;
 21822             last_type_symbol = param_data_type;
 23235             last_type_symbol = param_data_type;
 21823             
 23236             
 21824             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23237             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 21825             {
 23238             {
 21826         
 23239         
 21827                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 23240                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 21828                 return return_type_symbol;
 23241                 return return_type_symbol;
 21829                 
 23242                 
 21845 
 23258 
 21846         {
 23259         {
 21847             symbol_c *IN_type_symbol = param_data_type;
 23260             symbol_c *IN_type_symbol = param_data_type;
 21848             last_type_symbol = param_data_type;
 23261             last_type_symbol = param_data_type;
 21849             
 23262             
 21850             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23263             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 21851             {
 23264             {
 21852         
 23265         
 21853                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 23266                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 21854                 return return_type_symbol;
 23267                 return return_type_symbol;
 21855                 
 23268                 
 21871 
 23284 
 21872         {
 23285         {
 21873             symbol_c *IN_type_symbol = param_data_type;
 23286             symbol_c *IN_type_symbol = param_data_type;
 21874             last_type_symbol = param_data_type;
 23287             last_type_symbol = param_data_type;
 21875             
 23288             
 21876             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23289             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 21877             {
 23290             {
 21878         
 23291         
 21879                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 23292                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 21880                 return return_type_symbol;
 23293                 return return_type_symbol;
 21881                 
 23294                 
 21897 
 23310 
 21898         {
 23311         {
 21899             symbol_c *IN_type_symbol = param_data_type;
 23312             symbol_c *IN_type_symbol = param_data_type;
 21900             last_type_symbol = param_data_type;
 23313             last_type_symbol = param_data_type;
 21901             
 23314             
 21902             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23315             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 21903             {
 23316             {
 21904         
 23317         
 21905                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 23318                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 21906                 return return_type_symbol;
 23319                 return return_type_symbol;
 21907                 
 23320                 
 21923 
 23336 
 21924         {
 23337         {
 21925             symbol_c *IN_type_symbol = param_data_type;
 23338             symbol_c *IN_type_symbol = param_data_type;
 21926             last_type_symbol = param_data_type;
 23339             last_type_symbol = param_data_type;
 21927             
 23340             
 21928             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23341             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 21929             {
 23342             {
 21930         
 23343         
 21931                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 23344                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 21932                 return return_type_symbol;
 23345                 return return_type_symbol;
 21933                 
 23346                 
 21949 
 23362 
 21950         {
 23363         {
 21951             symbol_c *IN_type_symbol = param_data_type;
 23364             symbol_c *IN_type_symbol = param_data_type;
 21952             last_type_symbol = param_data_type;
 23365             last_type_symbol = param_data_type;
 21953             
 23366             
 21954             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23367             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 21955             {
 23368             {
 21956         
 23369         
 21957                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 23370                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 21958                 return return_type_symbol;
 23371                 return return_type_symbol;
 21959                 
 23372                 
 21975 
 23388 
 21976         {
 23389         {
 21977             symbol_c *IN_type_symbol = param_data_type;
 23390             symbol_c *IN_type_symbol = param_data_type;
 21978             last_type_symbol = param_data_type;
 23391             last_type_symbol = param_data_type;
 21979             
 23392             
 21980             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23393             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 21981             {
 23394             {
 21982         
 23395         
 21983                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 23396                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 21984                 return return_type_symbol;
 23397                 return return_type_symbol;
 21985                 
 23398                 
 22001 
 23414 
 22002         {
 23415         {
 22003             symbol_c *IN_type_symbol = param_data_type;
 23416             symbol_c *IN_type_symbol = param_data_type;
 22004             last_type_symbol = param_data_type;
 23417             last_type_symbol = param_data_type;
 22005             
 23418             
 22006             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23419             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 22007             {
 23420             {
 22008         
 23421         
 22009                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 23422                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 22010                 return return_type_symbol;
 23423                 return return_type_symbol;
 22011                 
 23424                 
 22027 
 23440 
 22028         {
 23441         {
 22029             symbol_c *IN_type_symbol = param_data_type;
 23442             symbol_c *IN_type_symbol = param_data_type;
 22030             last_type_symbol = param_data_type;
 23443             last_type_symbol = param_data_type;
 22031             
 23444             
 22032             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23445             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 22033             {
 23446             {
 22034         
 23447         
 22035                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 23448                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 22036                 return return_type_symbol;
 23449                 return return_type_symbol;
 22037                 
 23450                 
 22053 
 23466 
 22054         {
 23467         {
 22055             symbol_c *IN_type_symbol = param_data_type;
 23468             symbol_c *IN_type_symbol = param_data_type;
 22056             last_type_symbol = param_data_type;
 23469             last_type_symbol = param_data_type;
 22057             
 23470             
 22058             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23471             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 22059             {
 23472             {
 22060         
 23473         
 22061                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 23474                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 22062                 return return_type_symbol;
 23475                 return return_type_symbol;
 22063                 
 23476                 
 22079 
 23492 
 22080         {
 23493         {
 22081             symbol_c *IN_type_symbol = param_data_type;
 23494             symbol_c *IN_type_symbol = param_data_type;
 22082             last_type_symbol = param_data_type;
 23495             last_type_symbol = param_data_type;
 22083             
 23496             
 22084             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23497             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 22085             {
 23498             {
 22086         
 23499         
 22087                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 23500                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 22088                 return return_type_symbol;
 23501                 return return_type_symbol;
 22089                 
 23502                 
 22105 
 23518 
 22106         {
 23519         {
 22107             symbol_c *IN_type_symbol = param_data_type;
 23520             symbol_c *IN_type_symbol = param_data_type;
 22108             last_type_symbol = param_data_type;
 23521             last_type_symbol = param_data_type;
 22109             
 23522             
 22110             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23523             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 22111             {
 23524             {
 22112         
 23525         
 22113                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 23526                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 22114                 return return_type_symbol;
 23527                 return return_type_symbol;
 22115                 
 23528                 
 22131 
 23544 
 22132         {
 23545         {
 22133             symbol_c *IN_type_symbol = param_data_type;
 23546             symbol_c *IN_type_symbol = param_data_type;
 22134             last_type_symbol = param_data_type;
 23547             last_type_symbol = param_data_type;
 22135             
 23548             
 22136             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 23549             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 22137             {
 23550             {
 22138         
 23551         
 22139                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 23552                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 22140                 return return_type_symbol;
 23553                 return return_type_symbol;
 22141                 
 23554                 
 22157 
 23570 
 22158         {
 23571         {
 22159             symbol_c *IN_type_symbol = param_data_type;
 23572             symbol_c *IN_type_symbol = param_data_type;
 22160             last_type_symbol = param_data_type;
 23573             last_type_symbol = param_data_type;
 22161             
 23574             
 22162             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23575             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22163             {
 23576             {
 22164         
 23577         
 22165                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 23578                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 22166                 return return_type_symbol;
 23579                 return return_type_symbol;
 22167                 
 23580                 
 22183 
 23596 
 22184         {
 23597         {
 22185             symbol_c *IN_type_symbol = param_data_type;
 23598             symbol_c *IN_type_symbol = param_data_type;
 22186             last_type_symbol = param_data_type;
 23599             last_type_symbol = param_data_type;
 22187             
 23600             
 22188             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23601             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22189             {
 23602             {
 22190         
 23603         
 22191                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 23604                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 22192                 return return_type_symbol;
 23605                 return return_type_symbol;
 22193                 
 23606                 
 22209 
 23622 
 22210         {
 23623         {
 22211             symbol_c *IN_type_symbol = param_data_type;
 23624             symbol_c *IN_type_symbol = param_data_type;
 22212             last_type_symbol = param_data_type;
 23625             last_type_symbol = param_data_type;
 22213             
 23626             
 22214             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23627             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22215             {
 23628             {
 22216         
 23629         
 22217                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 23630                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 22218                 return return_type_symbol;
 23631                 return return_type_symbol;
 22219                 
 23632                 
 22235 
 23648 
 22236         {
 23649         {
 22237             symbol_c *IN_type_symbol = param_data_type;
 23650             symbol_c *IN_type_symbol = param_data_type;
 22238             last_type_symbol = param_data_type;
 23651             last_type_symbol = param_data_type;
 22239             
 23652             
 22240             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23653             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22241             {
 23654             {
 22242         
 23655         
 22243                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 23656                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 22244                 return return_type_symbol;
 23657                 return return_type_symbol;
 22245                 
 23658                 
 22261 
 23674 
 22262         {
 23675         {
 22263             symbol_c *IN_type_symbol = param_data_type;
 23676             symbol_c *IN_type_symbol = param_data_type;
 22264             last_type_symbol = param_data_type;
 23677             last_type_symbol = param_data_type;
 22265             
 23678             
 22266             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23679             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22267             {
 23680             {
 22268         
 23681         
 22269                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 23682                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 22270                 return return_type_symbol;
 23683                 return return_type_symbol;
 22271                 
 23684                 
 22287 
 23700 
 22288         {
 23701         {
 22289             symbol_c *IN_type_symbol = param_data_type;
 23702             symbol_c *IN_type_symbol = param_data_type;
 22290             last_type_symbol = param_data_type;
 23703             last_type_symbol = param_data_type;
 22291             
 23704             
 22292             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23705             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22293             {
 23706             {
 22294         
 23707         
 22295                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 23708                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 22296                 return return_type_symbol;
 23709                 return return_type_symbol;
 22297                 
 23710                 
 22313 
 23726 
 22314         {
 23727         {
 22315             symbol_c *IN_type_symbol = param_data_type;
 23728             symbol_c *IN_type_symbol = param_data_type;
 22316             last_type_symbol = param_data_type;
 23729             last_type_symbol = param_data_type;
 22317             
 23730             
 22318             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23731             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22319             {
 23732             {
 22320         
 23733         
 22321                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 23734                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 22322                 return return_type_symbol;
 23735                 return return_type_symbol;
 22323                 
 23736                 
 22339 
 23752 
 22340         {
 23753         {
 22341             symbol_c *IN_type_symbol = param_data_type;
 23754             symbol_c *IN_type_symbol = param_data_type;
 22342             last_type_symbol = param_data_type;
 23755             last_type_symbol = param_data_type;
 22343             
 23756             
 22344             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23757             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22345             {
 23758             {
 22346         
 23759         
 22347                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 23760                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 22348                 return return_type_symbol;
 23761                 return return_type_symbol;
 22349                 
 23762                 
 22365 
 23778 
 22366         {
 23779         {
 22367             symbol_c *IN_type_symbol = param_data_type;
 23780             symbol_c *IN_type_symbol = param_data_type;
 22368             last_type_symbol = param_data_type;
 23781             last_type_symbol = param_data_type;
 22369             
 23782             
 22370             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23783             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22371             {
 23784             {
 22372         
 23785         
 22373                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 23786                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 22374                 return return_type_symbol;
 23787                 return return_type_symbol;
 22375                 
 23788                 
 22391 
 23804 
 22392         {
 23805         {
 22393             symbol_c *IN_type_symbol = param_data_type;
 23806             symbol_c *IN_type_symbol = param_data_type;
 22394             last_type_symbol = param_data_type;
 23807             last_type_symbol = param_data_type;
 22395             
 23808             
 22396             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23809             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22397             {
 23810             {
 22398         
 23811         
 22399                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 23812                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 22400                 return return_type_symbol;
 23813                 return return_type_symbol;
 22401                 
 23814                 
 22417 
 23830 
 22418         {
 23831         {
 22419             symbol_c *IN_type_symbol = param_data_type;
 23832             symbol_c *IN_type_symbol = param_data_type;
 22420             last_type_symbol = param_data_type;
 23833             last_type_symbol = param_data_type;
 22421             
 23834             
 22422             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23835             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22423             {
 23836             {
 22424         
 23837         
 22425                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 23838                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 22426                 return return_type_symbol;
 23839                 return return_type_symbol;
 22427                 
 23840                 
 22443 
 23856 
 22444         {
 23857         {
 22445             symbol_c *IN_type_symbol = param_data_type;
 23858             symbol_c *IN_type_symbol = param_data_type;
 22446             last_type_symbol = param_data_type;
 23859             last_type_symbol = param_data_type;
 22447             
 23860             
 22448             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23861             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22449             {
 23862             {
 22450         
 23863         
 22451                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 23864                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 22452                 return return_type_symbol;
 23865                 return return_type_symbol;
 22453                 
 23866                 
 22469 
 23882 
 22470         {
 23883         {
 22471             symbol_c *IN_type_symbol = param_data_type;
 23884             symbol_c *IN_type_symbol = param_data_type;
 22472             last_type_symbol = param_data_type;
 23885             last_type_symbol = param_data_type;
 22473             
 23886             
 22474             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23887             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22475             {
 23888             {
 22476         
 23889         
 22477                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 23890                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 22478                 return return_type_symbol;
 23891                 return return_type_symbol;
 22479                 
 23892                 
 22495 
 23908 
 22496         {
 23909         {
 22497             symbol_c *IN_type_symbol = param_data_type;
 23910             symbol_c *IN_type_symbol = param_data_type;
 22498             last_type_symbol = param_data_type;
 23911             last_type_symbol = param_data_type;
 22499             
 23912             
 22500             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23913             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22501             {
 23914             {
 22502         
 23915         
 22503                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 23916                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 22504                 return return_type_symbol;
 23917                 return return_type_symbol;
 22505                 
 23918                 
 22521 
 23934 
 22522         {
 23935         {
 22523             symbol_c *IN_type_symbol = param_data_type;
 23936             symbol_c *IN_type_symbol = param_data_type;
 22524             last_type_symbol = param_data_type;
 23937             last_type_symbol = param_data_type;
 22525             
 23938             
 22526             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23939             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22527             {
 23940             {
 22528         
 23941         
 22529                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 23942                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 22530                 return return_type_symbol;
 23943                 return return_type_symbol;
 22531                 
 23944                 
 22547 
 23960 
 22548         {
 23961         {
 22549             symbol_c *IN_type_symbol = param_data_type;
 23962             symbol_c *IN_type_symbol = param_data_type;
 22550             last_type_symbol = param_data_type;
 23963             last_type_symbol = param_data_type;
 22551             
 23964             
 22552             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23965             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22553             {
 23966             {
 22554         
 23967         
 22555                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 23968                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 22556                 return return_type_symbol;
 23969                 return return_type_symbol;
 22557                 
 23970                 
 22573 
 23986 
 22574         {
 23987         {
 22575             symbol_c *IN_type_symbol = param_data_type;
 23988             symbol_c *IN_type_symbol = param_data_type;
 22576             last_type_symbol = param_data_type;
 23989             last_type_symbol = param_data_type;
 22577             
 23990             
 22578             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 23991             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22579             {
 23992             {
 22580         
 23993         
 22581                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 23994                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 22582                 return return_type_symbol;
 23995                 return return_type_symbol;
 22583                 
 23996                 
 22599 
 24012 
 22600         {
 24013         {
 22601             symbol_c *IN_type_symbol = param_data_type;
 24014             symbol_c *IN_type_symbol = param_data_type;
 22602             last_type_symbol = param_data_type;
 24015             last_type_symbol = param_data_type;
 22603             
 24016             
 22604             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 24017             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22605             {
 24018             {
 22606         
 24019         
 22607                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 24020                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 22608                 return return_type_symbol;
 24021                 return return_type_symbol;
 22609                 
 24022                 
 22625 
 24038 
 22626         {
 24039         {
 22627             symbol_c *IN_type_symbol = param_data_type;
 24040             symbol_c *IN_type_symbol = param_data_type;
 22628             last_type_symbol = param_data_type;
 24041             last_type_symbol = param_data_type;
 22629             
 24042             
 22630             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 24043             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 22631             {
 24044             {
 22632         
 24045         
 22633                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 24046                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 22634                 return return_type_symbol;
 24047                 return return_type_symbol;
 22635                 
 24048                 
 22651 
 24064 
 22652         {
 24065         {
 22653             symbol_c *IN_type_symbol = param_data_type;
 24066             symbol_c *IN_type_symbol = param_data_type;
 22654             last_type_symbol = param_data_type;
 24067             last_type_symbol = param_data_type;
 22655             
 24068             
 22656             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24069             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 22657             {
 24070             {
 22658         
 24071         
 22659                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 24072                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 22660                 return return_type_symbol;
 24073                 return return_type_symbol;
 22661                 
 24074                 
 22677 
 24090 
 22678         {
 24091         {
 22679             symbol_c *IN_type_symbol = param_data_type;
 24092             symbol_c *IN_type_symbol = param_data_type;
 22680             last_type_symbol = param_data_type;
 24093             last_type_symbol = param_data_type;
 22681             
 24094             
 22682             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24095             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 22683             {
 24096             {
 22684         
 24097         
 22685                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 24098                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 22686                 return return_type_symbol;
 24099                 return return_type_symbol;
 22687                 
 24100                 
 22703 
 24116 
 22704         {
 24117         {
 22705             symbol_c *IN_type_symbol = param_data_type;
 24118             symbol_c *IN_type_symbol = param_data_type;
 22706             last_type_symbol = param_data_type;
 24119             last_type_symbol = param_data_type;
 22707             
 24120             
 22708             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24121             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 22709             {
 24122             {
 22710         
 24123         
 22711                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 24124                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 22712                 return return_type_symbol;
 24125                 return return_type_symbol;
 22713                 
 24126                 
 22729 
 24142 
 22730         {
 24143         {
 22731             symbol_c *IN_type_symbol = param_data_type;
 24144             symbol_c *IN_type_symbol = param_data_type;
 22732             last_type_symbol = param_data_type;
 24145             last_type_symbol = param_data_type;
 22733             
 24146             
 22734             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24147             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 22735             {
 24148             {
 22736         
 24149         
 22737                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 24150                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 22738                 return return_type_symbol;
 24151                 return return_type_symbol;
 22739                 
 24152                 
 22755 
 24168 
 22756         {
 24169         {
 22757             symbol_c *IN_type_symbol = param_data_type;
 24170             symbol_c *IN_type_symbol = param_data_type;
 22758             last_type_symbol = param_data_type;
 24171             last_type_symbol = param_data_type;
 22759             
 24172             
 22760             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24173             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 22761             {
 24174             {
 22762         
 24175         
 22763                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 24176                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 22764                 return return_type_symbol;
 24177                 return return_type_symbol;
 22765                 
 24178                 
 22781 
 24194 
 22782         {
 24195         {
 22783             symbol_c *IN_type_symbol = param_data_type;
 24196             symbol_c *IN_type_symbol = param_data_type;
 22784             last_type_symbol = param_data_type;
 24197             last_type_symbol = param_data_type;
 22785             
 24198             
 22786             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24199             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 22787             {
 24200             {
 22788         
 24201         
 22789                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 24202                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 22790                 return return_type_symbol;
 24203                 return return_type_symbol;
 22791                 
 24204                 
 22807 
 24220 
 22808         {
 24221         {
 22809             symbol_c *IN_type_symbol = param_data_type;
 24222             symbol_c *IN_type_symbol = param_data_type;
 22810             last_type_symbol = param_data_type;
 24223             last_type_symbol = param_data_type;
 22811             
 24224             
 22812             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24225             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 22813             {
 24226             {
 22814         
 24227         
 22815                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 24228                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 22816                 return return_type_symbol;
 24229                 return return_type_symbol;
 22817                 
 24230                 
 22833 
 24246 
 22834         {
 24247         {
 22835             symbol_c *IN_type_symbol = param_data_type;
 24248             symbol_c *IN_type_symbol = param_data_type;
 22836             last_type_symbol = param_data_type;
 24249             last_type_symbol = param_data_type;
 22837             
 24250             
 22838             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24251             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 22839             {
 24252             {
 22840         
 24253         
 22841                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 24254                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 22842                 return return_type_symbol;
 24255                 return return_type_symbol;
 22843                 
 24256                 
 22859 
 24272 
 22860         {
 24273         {
 22861             symbol_c *IN_type_symbol = param_data_type;
 24274             symbol_c *IN_type_symbol = param_data_type;
 22862             last_type_symbol = param_data_type;
 24275             last_type_symbol = param_data_type;
 22863             
 24276             
 22864             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24277             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 22865             {
 24278             {
 22866         
 24279         
 22867                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 24280                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 22868                 return return_type_symbol;
 24281                 return return_type_symbol;
 22869                 
 24282                 
 22885 
 24298 
 22886         {
 24299         {
 22887             symbol_c *IN_type_symbol = param_data_type;
 24300             symbol_c *IN_type_symbol = param_data_type;
 22888             last_type_symbol = param_data_type;
 24301             last_type_symbol = param_data_type;
 22889             
 24302             
 22890             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24303             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 22891             {
 24304             {
 22892         
 24305         
 22893                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 24306                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 22894                 return return_type_symbol;
 24307                 return return_type_symbol;
 22895                 
 24308                 
 22911 
 24324 
 22912         {
 24325         {
 22913             symbol_c *IN_type_symbol = param_data_type;
 24326             symbol_c *IN_type_symbol = param_data_type;
 22914             last_type_symbol = param_data_type;
 24327             last_type_symbol = param_data_type;
 22915             
 24328             
 22916             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24329             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 22917             {
 24330             {
 22918         
 24331         
 22919                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 24332                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 22920                 return return_type_symbol;
 24333                 return return_type_symbol;
 22921                 
 24334                 
 22937 
 24350 
 22938         {
 24351         {
 22939             symbol_c *IN_type_symbol = param_data_type;
 24352             symbol_c *IN_type_symbol = param_data_type;
 22940             last_type_symbol = param_data_type;
 24353             last_type_symbol = param_data_type;
 22941             
 24354             
 22942             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24355             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 22943             {
 24356             {
 22944         
 24357         
 22945                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 24358                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 22946                 return return_type_symbol;
 24359                 return return_type_symbol;
 22947                 
 24360                 
 22963 
 24376 
 22964         {
 24377         {
 22965             symbol_c *IN_type_symbol = param_data_type;
 24378             symbol_c *IN_type_symbol = param_data_type;
 22966             last_type_symbol = param_data_type;
 24379             last_type_symbol = param_data_type;
 22967             
 24380             
 22968             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24381             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 22969             {
 24382             {
 22970         
 24383         
 22971                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 24384                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 22972                 return return_type_symbol;
 24385                 return return_type_symbol;
 22973                 
 24386                 
 22989 
 24402 
 22990         {
 24403         {
 22991             symbol_c *IN_type_symbol = param_data_type;
 24404             symbol_c *IN_type_symbol = param_data_type;
 22992             last_type_symbol = param_data_type;
 24405             last_type_symbol = param_data_type;
 22993             
 24406             
 22994             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24407             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 22995             {
 24408             {
 22996         
 24409         
 22997                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 24410                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 22998                 return return_type_symbol;
 24411                 return return_type_symbol;
 22999                 
 24412                 
 23015 
 24428 
 23016         {
 24429         {
 23017             symbol_c *IN_type_symbol = param_data_type;
 24430             symbol_c *IN_type_symbol = param_data_type;
 23018             last_type_symbol = param_data_type;
 24431             last_type_symbol = param_data_type;
 23019             
 24432             
 23020             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24433             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 23021             {
 24434             {
 23022         
 24435         
 23023                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 24436                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 23024                 return return_type_symbol;
 24437                 return return_type_symbol;
 23025                 
 24438                 
 23041 
 24454 
 23042         {
 24455         {
 23043             symbol_c *IN_type_symbol = param_data_type;
 24456             symbol_c *IN_type_symbol = param_data_type;
 23044             last_type_symbol = param_data_type;
 24457             last_type_symbol = param_data_type;
 23045             
 24458             
 23046             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24459             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 23047             {
 24460             {
 23048         
 24461         
 23049                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 24462                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 23050                 return return_type_symbol;
 24463                 return return_type_symbol;
 23051                 
 24464                 
 23067 
 24480 
 23068         {
 24481         {
 23069             symbol_c *IN_type_symbol = param_data_type;
 24482             symbol_c *IN_type_symbol = param_data_type;
 23070             last_type_symbol = param_data_type;
 24483             last_type_symbol = param_data_type;
 23071             
 24484             
 23072             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24485             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 23073             {
 24486             {
 23074         
 24487         
 23075                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 24488                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 23076                 return return_type_symbol;
 24489                 return return_type_symbol;
 23077                 
 24490                 
 23093 
 24506 
 23094         {
 24507         {
 23095             symbol_c *IN_type_symbol = param_data_type;
 24508             symbol_c *IN_type_symbol = param_data_type;
 23096             last_type_symbol = param_data_type;
 24509             last_type_symbol = param_data_type;
 23097             
 24510             
 23098             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24511             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 23099             {
 24512             {
 23100         
 24513         
 23101                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 24514                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 23102                 return return_type_symbol;
 24515                 return return_type_symbol;
 23103                 
 24516                 
 23119 
 24532 
 23120         {
 24533         {
 23121             symbol_c *IN_type_symbol = param_data_type;
 24534             symbol_c *IN_type_symbol = param_data_type;
 23122             last_type_symbol = param_data_type;
 24535             last_type_symbol = param_data_type;
 23123             
 24536             
 23124             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24537             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 23125             {
 24538             {
 23126         
 24539         
 23127                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 24540                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 23128                 return return_type_symbol;
 24541                 return return_type_symbol;
 23129                 
 24542                 
 23145 
 24558 
 23146         {
 24559         {
 23147             symbol_c *IN_type_symbol = param_data_type;
 24560             symbol_c *IN_type_symbol = param_data_type;
 23148             last_type_symbol = param_data_type;
 24561             last_type_symbol = param_data_type;
 23149             
 24562             
 23150             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24563             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23151             {
 24564             {
 23152         
 24565         
 23153                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 24566                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 23154                 return return_type_symbol;
 24567                 return return_type_symbol;
 23155                 
 24568                 
 23171 
 24584 
 23172         {
 24585         {
 23173             symbol_c *IN_type_symbol = param_data_type;
 24586             symbol_c *IN_type_symbol = param_data_type;
 23174             last_type_symbol = param_data_type;
 24587             last_type_symbol = param_data_type;
 23175             
 24588             
 23176             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24589             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23177             {
 24590             {
 23178         
 24591         
 23179                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 24592                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 23180                 return return_type_symbol;
 24593                 return return_type_symbol;
 23181                 
 24594                 
 23197 
 24610 
 23198         {
 24611         {
 23199             symbol_c *IN_type_symbol = param_data_type;
 24612             symbol_c *IN_type_symbol = param_data_type;
 23200             last_type_symbol = param_data_type;
 24613             last_type_symbol = param_data_type;
 23201             
 24614             
 23202             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24615             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23203             {
 24616             {
 23204         
 24617         
 23205                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 24618                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 23206                 return return_type_symbol;
 24619                 return return_type_symbol;
 23207                 
 24620                 
 23223 
 24636 
 23224         {
 24637         {
 23225             symbol_c *IN_type_symbol = param_data_type;
 24638             symbol_c *IN_type_symbol = param_data_type;
 23226             last_type_symbol = param_data_type;
 24639             last_type_symbol = param_data_type;
 23227             
 24640             
 23228             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24641             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23229             {
 24642             {
 23230         
 24643         
 23231                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 24644                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 23232                 return return_type_symbol;
 24645                 return return_type_symbol;
 23233                 
 24646                 
 23249 
 24662 
 23250         {
 24663         {
 23251             symbol_c *IN_type_symbol = param_data_type;
 24664             symbol_c *IN_type_symbol = param_data_type;
 23252             last_type_symbol = param_data_type;
 24665             last_type_symbol = param_data_type;
 23253             
 24666             
 23254             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24667             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23255             {
 24668             {
 23256         
 24669         
 23257                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 24670                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 23258                 return return_type_symbol;
 24671                 return return_type_symbol;
 23259                 
 24672                 
 23275 
 24688 
 23276         {
 24689         {
 23277             symbol_c *IN_type_symbol = param_data_type;
 24690             symbol_c *IN_type_symbol = param_data_type;
 23278             last_type_symbol = param_data_type;
 24691             last_type_symbol = param_data_type;
 23279             
 24692             
 23280             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24693             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23281             {
 24694             {
 23282         
 24695         
 23283                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 24696                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 23284                 return return_type_symbol;
 24697                 return return_type_symbol;
 23285                 
 24698                 
 23301 
 24714 
 23302         {
 24715         {
 23303             symbol_c *IN_type_symbol = param_data_type;
 24716             symbol_c *IN_type_symbol = param_data_type;
 23304             last_type_symbol = param_data_type;
 24717             last_type_symbol = param_data_type;
 23305             
 24718             
 23306             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24719             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23307             {
 24720             {
 23308         
 24721         
 23309                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 24722                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 23310                 return return_type_symbol;
 24723                 return return_type_symbol;
 23311                 
 24724                 
 23327 
 24740 
 23328         {
 24741         {
 23329             symbol_c *IN_type_symbol = param_data_type;
 24742             symbol_c *IN_type_symbol = param_data_type;
 23330             last_type_symbol = param_data_type;
 24743             last_type_symbol = param_data_type;
 23331             
 24744             
 23332             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24745             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23333             {
 24746             {
 23334         
 24747         
 23335                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 24748                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 23336                 return return_type_symbol;
 24749                 return return_type_symbol;
 23337                 
 24750                 
 23353 
 24766 
 23354         {
 24767         {
 23355             symbol_c *IN_type_symbol = param_data_type;
 24768             symbol_c *IN_type_symbol = param_data_type;
 23356             last_type_symbol = param_data_type;
 24769             last_type_symbol = param_data_type;
 23357             
 24770             
 23358             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24771             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23359             {
 24772             {
 23360         
 24773         
 23361                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 24774                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 23362                 return return_type_symbol;
 24775                 return return_type_symbol;
 23363                 
 24776                 
 23379 
 24792 
 23380         {
 24793         {
 23381             symbol_c *IN_type_symbol = param_data_type;
 24794             symbol_c *IN_type_symbol = param_data_type;
 23382             last_type_symbol = param_data_type;
 24795             last_type_symbol = param_data_type;
 23383             
 24796             
 23384             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24797             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23385             {
 24798             {
 23386         
 24799         
 23387                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 24800                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 23388                 return return_type_symbol;
 24801                 return return_type_symbol;
 23389                 
 24802                 
 23405 
 24818 
 23406         {
 24819         {
 23407             symbol_c *IN_type_symbol = param_data_type;
 24820             symbol_c *IN_type_symbol = param_data_type;
 23408             last_type_symbol = param_data_type;
 24821             last_type_symbol = param_data_type;
 23409             
 24822             
 23410             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24823             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23411             {
 24824             {
 23412         
 24825         
 23413                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 24826                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 23414                 return return_type_symbol;
 24827                 return return_type_symbol;
 23415                 
 24828                 
 23431 
 24844 
 23432         {
 24845         {
 23433             symbol_c *IN_type_symbol = param_data_type;
 24846             symbol_c *IN_type_symbol = param_data_type;
 23434             last_type_symbol = param_data_type;
 24847             last_type_symbol = param_data_type;
 23435             
 24848             
 23436             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24849             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23437             {
 24850             {
 23438         
 24851         
 23439                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 24852                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 23440                 return return_type_symbol;
 24853                 return return_type_symbol;
 23441                 
 24854                 
 23457 
 24870 
 23458         {
 24871         {
 23459             symbol_c *IN_type_symbol = param_data_type;
 24872             symbol_c *IN_type_symbol = param_data_type;
 23460             last_type_symbol = param_data_type;
 24873             last_type_symbol = param_data_type;
 23461             
 24874             
 23462             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24875             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23463             {
 24876             {
 23464         
 24877         
 23465                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 24878                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 23466                 return return_type_symbol;
 24879                 return return_type_symbol;
 23467                 
 24880                 
 23483 
 24896 
 23484         {
 24897         {
 23485             symbol_c *IN_type_symbol = param_data_type;
 24898             symbol_c *IN_type_symbol = param_data_type;
 23486             last_type_symbol = param_data_type;
 24899             last_type_symbol = param_data_type;
 23487             
 24900             
 23488             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24901             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23489             {
 24902             {
 23490         
 24903         
 23491                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 24904                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 23492                 return return_type_symbol;
 24905                 return return_type_symbol;
 23493                 
 24906                 
 23509 
 24922 
 23510         {
 24923         {
 23511             symbol_c *IN_type_symbol = param_data_type;
 24924             symbol_c *IN_type_symbol = param_data_type;
 23512             last_type_symbol = param_data_type;
 24925             last_type_symbol = param_data_type;
 23513             
 24926             
 23514             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24927             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23515             {
 24928             {
 23516         
 24929         
 23517                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 24930                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 23518                 return return_type_symbol;
 24931                 return return_type_symbol;
 23519                 
 24932                 
 23535 
 24948 
 23536         {
 24949         {
 23537             symbol_c *IN_type_symbol = param_data_type;
 24950             symbol_c *IN_type_symbol = param_data_type;
 23538             last_type_symbol = param_data_type;
 24951             last_type_symbol = param_data_type;
 23539             
 24952             
 23540             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24953             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23541             {
 24954             {
 23542         
 24955         
 23543                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 24956                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 23544                 return return_type_symbol;
 24957                 return return_type_symbol;
 23545                 
 24958                 
 23561 
 24974 
 23562         {
 24975         {
 23563             symbol_c *IN_type_symbol = param_data_type;
 24976             symbol_c *IN_type_symbol = param_data_type;
 23564             last_type_symbol = param_data_type;
 24977             last_type_symbol = param_data_type;
 23565             
 24978             
 23566             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 24979             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23567             {
 24980             {
 23568         
 24981         
 23569                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 24982                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 23570                 return return_type_symbol;
 24983                 return return_type_symbol;
 23571                 
 24984                 
 23587 
 25000 
 23588         {
 25001         {
 23589             symbol_c *IN_type_symbol = param_data_type;
 25002             symbol_c *IN_type_symbol = param_data_type;
 23590             last_type_symbol = param_data_type;
 25003             last_type_symbol = param_data_type;
 23591             
 25004             
 23592             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 25005             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23593             {
 25006             {
 23594         
 25007         
 23595                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 25008                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 23596                 return return_type_symbol;
 25009                 return return_type_symbol;
 23597                 
 25010                 
 23613 
 25026 
 23614         {
 25027         {
 23615             symbol_c *IN_type_symbol = param_data_type;
 25028             symbol_c *IN_type_symbol = param_data_type;
 23616             last_type_symbol = param_data_type;
 25029             last_type_symbol = param_data_type;
 23617             
 25030             
 23618             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 25031             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 23619             {
 25032             {
 23620         
 25033         
 23621                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 25034                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 23622                 return return_type_symbol;
 25035                 return return_type_symbol;
 23623                 
 25036                 
 23639 
 25052 
 23640         {
 25053         {
 23641             symbol_c *IN_type_symbol = param_data_type;
 25054             symbol_c *IN_type_symbol = param_data_type;
 23642             last_type_symbol = param_data_type;
 25055             last_type_symbol = param_data_type;
 23643             
 25056             
 23644             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25057             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 23645             {
 25058             {
 23646         
 25059         
 23647                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 25060                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 23648                 return return_type_symbol;
 25061                 return return_type_symbol;
 23649                 
 25062                 
 23665 
 25078 
 23666         {
 25079         {
 23667             symbol_c *IN_type_symbol = param_data_type;
 25080             symbol_c *IN_type_symbol = param_data_type;
 23668             last_type_symbol = param_data_type;
 25081             last_type_symbol = param_data_type;
 23669             
 25082             
 23670             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25083             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 23671             {
 25084             {
 23672         
 25085         
 23673                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 25086                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 23674                 return return_type_symbol;
 25087                 return return_type_symbol;
 23675                 
 25088                 
 23691 
 25104 
 23692         {
 25105         {
 23693             symbol_c *IN_type_symbol = param_data_type;
 25106             symbol_c *IN_type_symbol = param_data_type;
 23694             last_type_symbol = param_data_type;
 25107             last_type_symbol = param_data_type;
 23695             
 25108             
 23696             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25109             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 23697             {
 25110             {
 23698         
 25111         
 23699                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 25112                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 23700                 return return_type_symbol;
 25113                 return return_type_symbol;
 23701                 
 25114                 
 23717 
 25130 
 23718         {
 25131         {
 23719             symbol_c *IN_type_symbol = param_data_type;
 25132             symbol_c *IN_type_symbol = param_data_type;
 23720             last_type_symbol = param_data_type;
 25133             last_type_symbol = param_data_type;
 23721             
 25134             
 23722             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25135             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 23723             {
 25136             {
 23724         
 25137         
 23725                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 25138                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 23726                 return return_type_symbol;
 25139                 return return_type_symbol;
 23727                 
 25140                 
 23743 
 25156 
 23744         {
 25157         {
 23745             symbol_c *IN_type_symbol = param_data_type;
 25158             symbol_c *IN_type_symbol = param_data_type;
 23746             last_type_symbol = param_data_type;
 25159             last_type_symbol = param_data_type;
 23747             
 25160             
 23748             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25161             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 23749             {
 25162             {
 23750         
 25163         
 23751                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 25164                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 23752                 return return_type_symbol;
 25165                 return return_type_symbol;
 23753                 
 25166                 
 23769 
 25182 
 23770         {
 25183         {
 23771             symbol_c *IN_type_symbol = param_data_type;
 25184             symbol_c *IN_type_symbol = param_data_type;
 23772             last_type_symbol = param_data_type;
 25185             last_type_symbol = param_data_type;
 23773             
 25186             
 23774             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25187             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 23775             {
 25188             {
 23776         
 25189         
 23777                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 25190                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 23778                 return return_type_symbol;
 25191                 return return_type_symbol;
 23779                 
 25192                 
 23795 
 25208 
 23796         {
 25209         {
 23797             symbol_c *IN_type_symbol = param_data_type;
 25210             symbol_c *IN_type_symbol = param_data_type;
 23798             last_type_symbol = param_data_type;
 25211             last_type_symbol = param_data_type;
 23799             
 25212             
 23800             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25213             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 23801             {
 25214             {
 23802         
 25215         
 23803                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 25216                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 23804                 return return_type_symbol;
 25217                 return return_type_symbol;
 23805                 
 25218                 
 23821 
 25234 
 23822         {
 25235         {
 23823             symbol_c *IN_type_symbol = param_data_type;
 25236             symbol_c *IN_type_symbol = param_data_type;
 23824             last_type_symbol = param_data_type;
 25237             last_type_symbol = param_data_type;
 23825             
 25238             
 23826             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25239             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 23827             {
 25240             {
 23828         
 25241         
 23829                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 25242                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 23830                 return return_type_symbol;
 25243                 return return_type_symbol;
 23831                 
 25244                 
 23847 
 25260 
 23848         {
 25261         {
 23849             symbol_c *IN_type_symbol = param_data_type;
 25262             symbol_c *IN_type_symbol = param_data_type;
 23850             last_type_symbol = param_data_type;
 25263             last_type_symbol = param_data_type;
 23851             
 25264             
 23852             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25265             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 23853             {
 25266             {
 23854         
 25267         
 23855                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 25268                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 23856                 return return_type_symbol;
 25269                 return return_type_symbol;
 23857                 
 25270                 
 23873 
 25286 
 23874         {
 25287         {
 23875             symbol_c *IN_type_symbol = param_data_type;
 25288             symbol_c *IN_type_symbol = param_data_type;
 23876             last_type_symbol = param_data_type;
 25289             last_type_symbol = param_data_type;
 23877             
 25290             
 23878             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25291             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 23879             {
 25292             {
 23880         
 25293         
 23881                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 25294                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 23882                 return return_type_symbol;
 25295                 return return_type_symbol;
 23883                 
 25296                 
 23899 
 25312 
 23900         {
 25313         {
 23901             symbol_c *IN_type_symbol = param_data_type;
 25314             symbol_c *IN_type_symbol = param_data_type;
 23902             last_type_symbol = param_data_type;
 25315             last_type_symbol = param_data_type;
 23903             
 25316             
 23904             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25317             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 23905             {
 25318             {
 23906         
 25319         
 23907                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 25320                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 23908                 return return_type_symbol;
 25321                 return return_type_symbol;
 23909                 
 25322                 
 23925 
 25338 
 23926         {
 25339         {
 23927             symbol_c *IN_type_symbol = param_data_type;
 25340             symbol_c *IN_type_symbol = param_data_type;
 23928             last_type_symbol = param_data_type;
 25341             last_type_symbol = param_data_type;
 23929             
 25342             
 23930             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25343             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 23931             {
 25344             {
 23932         
 25345         
 23933                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 25346                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 23934                 return return_type_symbol;
 25347                 return return_type_symbol;
 23935                 
 25348                 
 23951 
 25364 
 23952         {
 25365         {
 23953             symbol_c *IN_type_symbol = param_data_type;
 25366             symbol_c *IN_type_symbol = param_data_type;
 23954             last_type_symbol = param_data_type;
 25367             last_type_symbol = param_data_type;
 23955             
 25368             
 23956             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25369             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 23957             {
 25370             {
 23958         
 25371         
 23959                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 25372                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 23960                 return return_type_symbol;
 25373                 return return_type_symbol;
 23961                 
 25374                 
 23977 
 25390 
 23978         {
 25391         {
 23979             symbol_c *IN_type_symbol = param_data_type;
 25392             symbol_c *IN_type_symbol = param_data_type;
 23980             last_type_symbol = param_data_type;
 25393             last_type_symbol = param_data_type;
 23981             
 25394             
 23982             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25395             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 23983             {
 25396             {
 23984         
 25397         
 23985                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 25398                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 23986                 return return_type_symbol;
 25399                 return return_type_symbol;
 23987                 
 25400                 
 24003 
 25416 
 24004         {
 25417         {
 24005             symbol_c *IN_type_symbol = param_data_type;
 25418             symbol_c *IN_type_symbol = param_data_type;
 24006             last_type_symbol = param_data_type;
 25419             last_type_symbol = param_data_type;
 24007             
 25420             
 24008             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25421             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 24009             {
 25422             {
 24010         
 25423         
 24011                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 25424                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 24012                 return return_type_symbol;
 25425                 return return_type_symbol;
 24013                 
 25426                 
 24029 
 25442 
 24030         {
 25443         {
 24031             symbol_c *IN_type_symbol = param_data_type;
 25444             symbol_c *IN_type_symbol = param_data_type;
 24032             last_type_symbol = param_data_type;
 25445             last_type_symbol = param_data_type;
 24033             
 25446             
 24034             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25447             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24035             {
 25448             {
 24036         
 25449         
 24037                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 25450                 symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
 24038                 return return_type_symbol;
 25451                 return return_type_symbol;
 24039                 
 25452                 
 24055 
 25468 
 24056         {
 25469         {
 24057             symbol_c *IN_type_symbol = param_data_type;
 25470             symbol_c *IN_type_symbol = param_data_type;
 24058             last_type_symbol = param_data_type;
 25471             last_type_symbol = param_data_type;
 24059             
 25472             
 24060             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25473             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24061             {
 25474             {
 24062         
 25475         
 24063                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 25476                 symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 24064                 return return_type_symbol;
 25477                 return return_type_symbol;
 24065                 
 25478                 
 24081 
 25494 
 24082         {
 25495         {
 24083             symbol_c *IN_type_symbol = param_data_type;
 25496             symbol_c *IN_type_symbol = param_data_type;
 24084             last_type_symbol = param_data_type;
 25497             last_type_symbol = param_data_type;
 24085             
 25498             
 24086             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25499             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24087             {
 25500             {
 24088         
 25501         
 24089                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 25502                 symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 24090                 return return_type_symbol;
 25503                 return return_type_symbol;
 24091                 
 25504                 
 24107 
 25520 
 24108         {
 25521         {
 24109             symbol_c *IN_type_symbol = param_data_type;
 25522             symbol_c *IN_type_symbol = param_data_type;
 24110             last_type_symbol = param_data_type;
 25523             last_type_symbol = param_data_type;
 24111             
 25524             
 24112             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25525             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24113             {
 25526             {
 24114         
 25527         
 24115                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 25528                 symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 24116                 return return_type_symbol;
 25529                 return return_type_symbol;
 24117                 
 25530                 
 24133 
 25546 
 24134         {
 25547         {
 24135             symbol_c *IN_type_symbol = param_data_type;
 25548             symbol_c *IN_type_symbol = param_data_type;
 24136             last_type_symbol = param_data_type;
 25549             last_type_symbol = param_data_type;
 24137             
 25550             
 24138             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25551             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24139             {
 25552             {
 24140         
 25553         
 24141                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 25554                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 24142                 return return_type_symbol;
 25555                 return return_type_symbol;
 24143                 
 25556                 
 24159 
 25572 
 24160         {
 25573         {
 24161             symbol_c *IN_type_symbol = param_data_type;
 25574             symbol_c *IN_type_symbol = param_data_type;
 24162             last_type_symbol = param_data_type;
 25575             last_type_symbol = param_data_type;
 24163             
 25576             
 24164             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25577             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24165             {
 25578             {
 24166         
 25579         
 24167                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 25580                 symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
 24168                 return return_type_symbol;
 25581                 return return_type_symbol;
 24169                 
 25582                 
 24185 
 25598 
 24186         {
 25599         {
 24187             symbol_c *IN_type_symbol = param_data_type;
 25600             symbol_c *IN_type_symbol = param_data_type;
 24188             last_type_symbol = param_data_type;
 25601             last_type_symbol = param_data_type;
 24189             
 25602             
 24190             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25603             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24191             {
 25604             {
 24192         
 25605         
 24193                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 25606                 symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 24194                 return return_type_symbol;
 25607                 return return_type_symbol;
 24195                 
 25608                 
 24211 
 25624 
 24212         {
 25625         {
 24213             symbol_c *IN_type_symbol = param_data_type;
 25626             symbol_c *IN_type_symbol = param_data_type;
 24214             last_type_symbol = param_data_type;
 25627             last_type_symbol = param_data_type;
 24215             
 25628             
 24216             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25629             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24217             {
 25630             {
 24218         
 25631         
 24219                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 25632                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 24220                 return return_type_symbol;
 25633                 return return_type_symbol;
 24221                 
 25634                 
 24237 
 25650 
 24238         {
 25651         {
 24239             symbol_c *IN_type_symbol = param_data_type;
 25652             symbol_c *IN_type_symbol = param_data_type;
 24240             last_type_symbol = param_data_type;
 25653             last_type_symbol = param_data_type;
 24241             
 25654             
 24242             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25655             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24243             {
 25656             {
 24244         
 25657         
 24245                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 25658                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 24246                 return return_type_symbol;
 25659                 return return_type_symbol;
 24247                 
 25660                 
 24263 
 25676 
 24264         {
 25677         {
 24265             symbol_c *IN_type_symbol = param_data_type;
 25678             symbol_c *IN_type_symbol = param_data_type;
 24266             last_type_symbol = param_data_type;
 25679             last_type_symbol = param_data_type;
 24267             
 25680             
 24268             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25681             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24269             {
 25682             {
 24270         
 25683         
 24271                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 25684                 symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
 24272                 return return_type_symbol;
 25685                 return return_type_symbol;
 24273                 
 25686                 
 24289 
 25702 
 24290         {
 25703         {
 24291             symbol_c *IN_type_symbol = param_data_type;
 25704             symbol_c *IN_type_symbol = param_data_type;
 24292             last_type_symbol = param_data_type;
 25705             last_type_symbol = param_data_type;
 24293             
 25706             
 24294             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25707             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24295             {
 25708             {
 24296         
 25709         
 24297                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 25710                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 24298                 return return_type_symbol;
 25711                 return return_type_symbol;
 24299                 
 25712                 
 24315 
 25728 
 24316         {
 25729         {
 24317             symbol_c *IN_type_symbol = param_data_type;
 25730             symbol_c *IN_type_symbol = param_data_type;
 24318             last_type_symbol = param_data_type;
 25731             last_type_symbol = param_data_type;
 24319             
 25732             
 24320             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25733             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24321             {
 25734             {
 24322         
 25735         
 24323                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 25736                 symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
 24324                 return return_type_symbol;
 25737                 return return_type_symbol;
 24325                 
 25738                 
 24341 
 25754 
 24342         {
 25755         {
 24343             symbol_c *IN_type_symbol = param_data_type;
 25756             symbol_c *IN_type_symbol = param_data_type;
 24344             last_type_symbol = param_data_type;
 25757             last_type_symbol = param_data_type;
 24345             
 25758             
 24346             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25759             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24347             {
 25760             {
 24348         
 25761         
 24349                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 25762                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 24350                 return return_type_symbol;
 25763                 return return_type_symbol;
 24351                 
 25764                 
 24367 
 25780 
 24368         {
 25781         {
 24369             symbol_c *IN_type_symbol = param_data_type;
 25782             symbol_c *IN_type_symbol = param_data_type;
 24370             last_type_symbol = param_data_type;
 25783             last_type_symbol = param_data_type;
 24371             
 25784             
 24372             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25785             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24373             {
 25786             {
 24374         
 25787         
 24375                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 25788                 symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
 24376                 return return_type_symbol;
 25789                 return return_type_symbol;
 24377                 
 25790                 
 24393 
 25806 
 24394         {
 25807         {
 24395             symbol_c *IN_type_symbol = param_data_type;
 25808             symbol_c *IN_type_symbol = param_data_type;
 24396             last_type_symbol = param_data_type;
 25809             last_type_symbol = param_data_type;
 24397             
 25810             
 24398             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25811             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24399             {
 25812             {
 24400         
 25813         
 24401                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 25814                 symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
 24402                 return return_type_symbol;
 25815                 return return_type_symbol;
 24403                 
 25816                 
 24419 
 25832 
 24420         {
 25833         {
 24421             symbol_c *IN_type_symbol = param_data_type;
 25834             symbol_c *IN_type_symbol = param_data_type;
 24422             last_type_symbol = param_data_type;
 25835             last_type_symbol = param_data_type;
 24423             
 25836             
 24424             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25837             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24425             {
 25838             {
 24426         
 25839         
 24427                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 25840                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 24428                 return return_type_symbol;
 25841                 return return_type_symbol;
 24429                 
 25842                 
 24445 
 25858 
 24446         {
 25859         {
 24447             symbol_c *IN_type_symbol = param_data_type;
 25860             symbol_c *IN_type_symbol = param_data_type;
 24448             last_type_symbol = param_data_type;
 25861             last_type_symbol = param_data_type;
 24449             
 25862             
 24450             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25863             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24451             {
 25864             {
 24452         
 25865         
 24453                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 25866                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 24454                 return return_type_symbol;
 25867                 return return_type_symbol;
 24455                 
 25868                 
 24471 
 25884 
 24472         {
 25885         {
 24473             symbol_c *IN_type_symbol = param_data_type;
 25886             symbol_c *IN_type_symbol = param_data_type;
 24474             last_type_symbol = param_data_type;
 25887             last_type_symbol = param_data_type;
 24475             
 25888             
 24476             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25889             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24477             {
 25890             {
 24478         
 25891         
 24479                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 25892                 symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 24480                 return return_type_symbol;
 25893                 return return_type_symbol;
 24481                 
 25894                 
 24497 
 25910 
 24498         {
 25911         {
 24499             symbol_c *IN_type_symbol = param_data_type;
 25912             symbol_c *IN_type_symbol = param_data_type;
 24500             last_type_symbol = param_data_type;
 25913             last_type_symbol = param_data_type;
 24501             
 25914             
 24502             if(search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 25915             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::int_type_name, last_type_symbol))
 24503             {
 25916             {
 24504         
 25917         
 24505                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 25918                 symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 24506                 return return_type_symbol;
 25919                 return return_type_symbol;
 24507                 
 25920                 
 24523 
 25936 
 24524         {
 25937         {
 24525             symbol_c *IN_type_symbol = param_data_type;
 25938             symbol_c *IN_type_symbol = param_data_type;
 24526             last_type_symbol = param_data_type;
 25939             last_type_symbol = param_data_type;
 24527             
 25940             
 24528             if(search_expression_type->is_real_type(IN_type_symbol))
 25941             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 24529             {
 25942             {
 24530         
 25943         
 24531                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 25944                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 24532                 return return_type_symbol;
 25945                 return return_type_symbol;
 24533                 
 25946                 
 24549 
 25962 
 24550         {
 25963         {
 24551             symbol_c *IN_type_symbol = param_data_type;
 25964             symbol_c *IN_type_symbol = param_data_type;
 24552             last_type_symbol = param_data_type;
 25965             last_type_symbol = param_data_type;
 24553             
 25966             
 24554             if(search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 25967             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dword_type_name, last_type_symbol))
 24555             {
 25968             {
 24556         
 25969         
 24557                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 25970                 symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 24558                 return return_type_symbol;
 25971                 return return_type_symbol;
 24559                 
 25972                 
 24575 
 25988 
 24576         {
 25989         {
 24577             symbol_c *IN_type_symbol = param_data_type;
 25990             symbol_c *IN_type_symbol = param_data_type;
 24578             last_type_symbol = param_data_type;
 25991             last_type_symbol = param_data_type;
 24579             
 25992             
 24580             if(search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 25993             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::word_type_name, last_type_symbol))
 24581             {
 25994             {
 24582         
 25995         
 24583                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 25996                 symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 24584                 return return_type_symbol;
 25997                 return return_type_symbol;
 24585                 
 25998                 
 24601 
 26014 
 24602         {
 26015         {
 24603             symbol_c *IN_type_symbol = param_data_type;
 26016             symbol_c *IN_type_symbol = param_data_type;
 24604             last_type_symbol = param_data_type;
 26017             last_type_symbol = param_data_type;
 24605             
 26018             
 24606             if(search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 26019             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lword_type_name, last_type_symbol))
 24607             {
 26020             {
 24608         
 26021         
 24609                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 26022                 symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 24610                 return return_type_symbol;
 26023                 return return_type_symbol;
 24611                 
 26024                 
 24627 
 26040 
 24628         {
 26041         {
 24629             symbol_c *IN_type_symbol = param_data_type;
 26042             symbol_c *IN_type_symbol = param_data_type;
 24630             last_type_symbol = param_data_type;
 26043             last_type_symbol = param_data_type;
 24631             
 26044             
 24632             if(search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 26045             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::byte_type_name, last_type_symbol))
 24633             {
 26046             {
 24634         
 26047         
 24635                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 26048                 symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 24636                 return return_type_symbol;
 26049                 return return_type_symbol;
 24637                 
 26050                 
 24653 
 26066 
 24654         {
 26067         {
 24655             symbol_c *IN_type_symbol = param_data_type;
 26068             symbol_c *IN_type_symbol = param_data_type;
 24656             last_type_symbol = param_data_type;
 26069             last_type_symbol = param_data_type;
 24657             
 26070             
 24658             if(search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 26071             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::udint_type_name, last_type_symbol))
 24659             {
 26072             {
 24660         
 26073         
 24661                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 26074                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 24662                 return return_type_symbol;
 26075                 return return_type_symbol;
 24663                 
 26076                 
 24679 
 26092 
 24680         {
 26093         {
 24681             symbol_c *IN_type_symbol = param_data_type;
 26094             symbol_c *IN_type_symbol = param_data_type;
 24682             last_type_symbol = param_data_type;
 26095             last_type_symbol = param_data_type;
 24683             
 26096             
 24684             if(search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 26097             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::uint_type_name, last_type_symbol))
 24685             {
 26098             {
 24686         
 26099         
 24687                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 26100                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 24688                 return return_type_symbol;
 26101                 return return_type_symbol;
 24689                 
 26102                 
 24705 
 26118 
 24706         {
 26119         {
 24707             symbol_c *IN_type_symbol = param_data_type;
 26120             symbol_c *IN_type_symbol = param_data_type;
 24708             last_type_symbol = param_data_type;
 26121             last_type_symbol = param_data_type;
 24709             
 26122             
 24710             if(search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 26123             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::usint_type_name, last_type_symbol))
 24711             {
 26124             {
 24712         
 26125         
 24713                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 26126                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 24714                 return return_type_symbol;
 26127                 return return_type_symbol;
 24715                 
 26128                 
 24731 
 26144 
 24732         {
 26145         {
 24733             symbol_c *IN_type_symbol = param_data_type;
 26146             symbol_c *IN_type_symbol = param_data_type;
 24734             last_type_symbol = param_data_type;
 26147             last_type_symbol = param_data_type;
 24735             
 26148             
 24736             if(search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 26149             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::ulint_type_name, last_type_symbol))
 24737             {
 26150             {
 24738         
 26151         
 24739                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 26152                 symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 24740                 return return_type_symbol;
 26153                 return return_type_symbol;
 24741                 
 26154                 
 24757 
 26170 
 24758         {
 26171         {
 24759             symbol_c *IN_type_symbol = param_data_type;
 26172             symbol_c *IN_type_symbol = param_data_type;
 24760             last_type_symbol = param_data_type;
 26173             last_type_symbol = param_data_type;
 24761             
 26174             
 24762             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 26175             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 24763             {
 26176             {
 24764         
 26177         
 24765                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 26178                 symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 24766                 return return_type_symbol;
 26179                 return return_type_symbol;
 24767                 
 26180                 
 24783 
 26196 
 24784         {
 26197         {
 24785             symbol_c *IN_type_symbol = param_data_type;
 26198             symbol_c *IN_type_symbol = param_data_type;
 24786             last_type_symbol = param_data_type;
 26199             last_type_symbol = param_data_type;
 24787             
 26200             
 24788             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 26201             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 24789             {
 26202             {
 24790         
 26203         
 24791                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 26204                 symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
 24792                 return return_type_symbol;
 26205                 return return_type_symbol;
 24793                 
 26206                 
 24809 
 26222 
 24810         {
 26223         {
 24811             symbol_c *IN_type_symbol = param_data_type;
 26224             symbol_c *IN_type_symbol = param_data_type;
 24812             last_type_symbol = param_data_type;
 26225             last_type_symbol = param_data_type;
 24813             
 26226             
 24814             if(search_expression_type->is_num_type(IN_type_symbol))
 26227             if(IN_type_symbol == NULL || search_expression_type->is_num_type(IN_type_symbol))
 24815             {
 26228             {
 24816         
 26229         
 24817                 symbol_c * return_type_symbol = IN_type_symbol;
 26230                 symbol_c * return_type_symbol = IN_type_symbol;
 24818                 return return_type_symbol;
 26231                 return return_type_symbol;
 24819                 
 26232                 
 24835 
 26248 
 24836         {
 26249         {
 24837             symbol_c *IN_type_symbol = param_data_type;
 26250             symbol_c *IN_type_symbol = param_data_type;
 24838             last_type_symbol = param_data_type;
 26251             last_type_symbol = param_data_type;
 24839             
 26252             
 24840             if(search_expression_type->is_real_type(IN_type_symbol))
 26253             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 24841             {
 26254             {
 24842         
 26255         
 24843                 symbol_c * return_type_symbol = IN_type_symbol;
 26256                 symbol_c * return_type_symbol = IN_type_symbol;
 24844                 return return_type_symbol;
 26257                 return return_type_symbol;
 24845                 
 26258                 
 24861 
 26274 
 24862         {
 26275         {
 24863             symbol_c *IN_type_symbol = param_data_type;
 26276             symbol_c *IN_type_symbol = param_data_type;
 24864             last_type_symbol = param_data_type;
 26277             last_type_symbol = param_data_type;
 24865             
 26278             
 24866             if(search_expression_type->is_real_type(IN_type_symbol))
 26279             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 24867             {
 26280             {
 24868         
 26281         
 24869                 symbol_c * return_type_symbol = IN_type_symbol;
 26282                 symbol_c * return_type_symbol = IN_type_symbol;
 24870                 return return_type_symbol;
 26283                 return return_type_symbol;
 24871                 
 26284                 
 24887 
 26300 
 24888         {
 26301         {
 24889             symbol_c *IN_type_symbol = param_data_type;
 26302             symbol_c *IN_type_symbol = param_data_type;
 24890             last_type_symbol = param_data_type;
 26303             last_type_symbol = param_data_type;
 24891             
 26304             
 24892             if(search_expression_type->is_real_type(IN_type_symbol))
 26305             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 24893             {
 26306             {
 24894         
 26307         
 24895                 symbol_c * return_type_symbol = IN_type_symbol;
 26308                 symbol_c * return_type_symbol = IN_type_symbol;
 24896                 return return_type_symbol;
 26309                 return return_type_symbol;
 24897                 
 26310                 
 24913 
 26326 
 24914         {
 26327         {
 24915             symbol_c *IN_type_symbol = param_data_type;
 26328             symbol_c *IN_type_symbol = param_data_type;
 24916             last_type_symbol = param_data_type;
 26329             last_type_symbol = param_data_type;
 24917             
 26330             
 24918             if(search_expression_type->is_real_type(IN_type_symbol))
 26331             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 24919             {
 26332             {
 24920         
 26333         
 24921                 symbol_c * return_type_symbol = IN_type_symbol;
 26334                 symbol_c * return_type_symbol = IN_type_symbol;
 24922                 return return_type_symbol;
 26335                 return return_type_symbol;
 24923                 
 26336                 
 24939 
 26352 
 24940         {
 26353         {
 24941             symbol_c *IN_type_symbol = param_data_type;
 26354             symbol_c *IN_type_symbol = param_data_type;
 24942             last_type_symbol = param_data_type;
 26355             last_type_symbol = param_data_type;
 24943             
 26356             
 24944             if(search_expression_type->is_real_type(IN_type_symbol))
 26357             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 24945             {
 26358             {
 24946         
 26359         
 24947                 symbol_c * return_type_symbol = IN_type_symbol;
 26360                 symbol_c * return_type_symbol = IN_type_symbol;
 24948                 return return_type_symbol;
 26361                 return return_type_symbol;
 24949                 
 26362                 
 24965 
 26378 
 24966         {
 26379         {
 24967             symbol_c *IN_type_symbol = param_data_type;
 26380             symbol_c *IN_type_symbol = param_data_type;
 24968             last_type_symbol = param_data_type;
 26381             last_type_symbol = param_data_type;
 24969             
 26382             
 24970             if(search_expression_type->is_real_type(IN_type_symbol))
 26383             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 24971             {
 26384             {
 24972         
 26385         
 24973                 symbol_c * return_type_symbol = IN_type_symbol;
 26386                 symbol_c * return_type_symbol = IN_type_symbol;
 24974                 return return_type_symbol;
 26387                 return return_type_symbol;
 24975                 
 26388                 
 24991 
 26404 
 24992         {
 26405         {
 24993             symbol_c *IN_type_symbol = param_data_type;
 26406             symbol_c *IN_type_symbol = param_data_type;
 24994             last_type_symbol = param_data_type;
 26407             last_type_symbol = param_data_type;
 24995             
 26408             
 24996             if(search_expression_type->is_real_type(IN_type_symbol))
 26409             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 24997             {
 26410             {
 24998         
 26411         
 24999                 symbol_c * return_type_symbol = IN_type_symbol;
 26412                 symbol_c * return_type_symbol = IN_type_symbol;
 25000                 return return_type_symbol;
 26413                 return return_type_symbol;
 25001                 
 26414                 
 25017 
 26430 
 25018         {
 26431         {
 25019             symbol_c *IN_type_symbol = param_data_type;
 26432             symbol_c *IN_type_symbol = param_data_type;
 25020             last_type_symbol = param_data_type;
 26433             last_type_symbol = param_data_type;
 25021             
 26434             
 25022             if(search_expression_type->is_real_type(IN_type_symbol))
 26435             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 25023             {
 26436             {
 25024         
 26437         
 25025                 symbol_c * return_type_symbol = IN_type_symbol;
 26438                 symbol_c * return_type_symbol = IN_type_symbol;
 25026                 return return_type_symbol;
 26439                 return return_type_symbol;
 25027                 
 26440                 
 25043 
 26456 
 25044         {
 26457         {
 25045             symbol_c *IN_type_symbol = param_data_type;
 26458             symbol_c *IN_type_symbol = param_data_type;
 25046             last_type_symbol = param_data_type;
 26459             last_type_symbol = param_data_type;
 25047             
 26460             
 25048             if(search_expression_type->is_real_type(IN_type_symbol))
 26461             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 25049             {
 26462             {
 25050         
 26463         
 25051                 symbol_c * return_type_symbol = IN_type_symbol;
 26464                 symbol_c * return_type_symbol = IN_type_symbol;
 25052                 return return_type_symbol;
 26465                 return return_type_symbol;
 25053                 
 26466                 
 25069 
 26482 
 25070         {
 26483         {
 25071             symbol_c *IN_type_symbol = param_data_type;
 26484             symbol_c *IN_type_symbol = param_data_type;
 25072             last_type_symbol = param_data_type;
 26485             last_type_symbol = param_data_type;
 25073             
 26486             
 25074             if(search_expression_type->is_real_type(IN_type_symbol))
 26487             if(IN_type_symbol == NULL || search_expression_type->is_real_type(IN_type_symbol))
 25075             {
 26488             {
 25076         
 26489         
 25077                 symbol_c * return_type_symbol = IN_type_symbol;
 26490                 symbol_c * return_type_symbol = IN_type_symbol;
 25078                 return return_type_symbol;
 26491                 return return_type_symbol;
 25079                 
 26492                 
 25095 
 26508 
 25096         {
 26509         {
 25097             symbol_c *IN1_type_symbol = param_data_type;
 26510             symbol_c *IN1_type_symbol = param_data_type;
 25098             last_type_symbol = param_data_type;
 26511             last_type_symbol = param_data_type;
 25099             
 26512             
 25100             if(search_expression_type->is_num_type(IN1_type_symbol))
 26513             if(IN1_type_symbol == NULL || search_expression_type->is_num_type(IN1_type_symbol))
 25101             {
 26514             {
 25102         
 26515         
 25103                 {
 26516                 {
 25104                     identifier_c param_name("IN2");
 26517                     identifier_c param_name("IN2");
 25105                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26518                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25106                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 26519                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 26520                     symbol_c *IN2_type_symbol = NULL;
 25107                     
 26521                     
 25108                     /* Get the value from a foo(<param_value>) style call */
 26522                     /* Get the value from a foo(<param_value>) style call */
 25109                     if (IN2_param_value == NULL)
 26523                     if (IN2_param_value == NULL)
 25110                       IN2_param_value = function_call_param_iterator.next();
 26524                       IN2_param_value = function_call_param_iterator.next();
 25111                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26525                     if (IN2_param_value != NULL) {
 25112                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26526                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25113                     
 26527                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25114                     if(search_expression_type->is_num_type(IN2_type_symbol))
 26528                     }
       
 26529                     
       
 26530                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 25115                     {
 26531                     {
 25116                 
 26532                 
 25117                         symbol_c * return_type_symbol = last_type_symbol;
 26533                         symbol_c * return_type_symbol = last_type_symbol;
 25118                         return return_type_symbol;
 26534                         return return_type_symbol;
 25119                         
 26535                         
 25123                     ERROR;
 26539                     ERROR;
 25124                 }
 26540                 }
 25125                 
 26541                 
 25126             }
 26542             }
 25127             
 26543             
 25128             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 26544             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 25129             {
 26545             {
 25130         
 26546         
 25131                 {
 26547                 {
 25132                     identifier_c param_name("IN2");
 26548                     identifier_c param_name("IN2");
 25133                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26549                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25134                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 26550                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 26551                     symbol_c *IN2_type_symbol = NULL;
 25135                     
 26552                     
 25136                     /* Get the value from a foo(<param_value>) style call */
 26553                     /* Get the value from a foo(<param_value>) style call */
 25137                     if (IN2_param_value == NULL)
 26554                     if (IN2_param_value == NULL)
 25138                       IN2_param_value = function_call_param_iterator.next();
 26555                       IN2_param_value = function_call_param_iterator.next();
 25139                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26556                     if (IN2_param_value != NULL) {
 25140                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26557                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25141                     
 26558                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25142                     if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 26559                     }
       
 26560                     
       
 26561                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25143                     {
 26562                     {
 25144                 
 26563                 
 25145                         symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 26564                         symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 25146                         return return_type_symbol;
 26565                         return return_type_symbol;
 25147                         
 26566                         
 25151                     ERROR;
 26570                     ERROR;
 25152                 }
 26571                 }
 25153                 
 26572                 
 25154             }
 26573             }
 25155             
 26574             
 25156             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 26575             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 25157             {
 26576             {
 25158         
 26577         
 25159                 {
 26578                 {
 25160                     identifier_c param_name("IN2");
 26579                     identifier_c param_name("IN2");
 25161                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26580                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25162                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 26581                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 26582                     symbol_c *IN2_type_symbol = NULL;
 25163                     
 26583                     
 25164                     /* Get the value from a foo(<param_value>) style call */
 26584                     /* Get the value from a foo(<param_value>) style call */
 25165                     if (IN2_param_value == NULL)
 26585                     if (IN2_param_value == NULL)
 25166                       IN2_param_value = function_call_param_iterator.next();
 26586                       IN2_param_value = function_call_param_iterator.next();
 25167                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26587                     if (IN2_param_value != NULL) {
 25168                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26588                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25169                     
 26589                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25170                     if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 26590                     }
       
 26591                     
       
 26592                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25171                     {
 26593                     {
 25172                 
 26594                 
 25173                         symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 26595                         symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 25174                         return return_type_symbol;
 26596                         return return_type_symbol;
 25175                         
 26597                         
 25179                     ERROR;
 26601                     ERROR;
 25180                 }
 26602                 }
 25181                 
 26603                 
 25182             }
 26604             }
 25183             
 26605             
 25184             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 26606             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25185             {
 26607             {
 25186         
 26608         
 25187                 {
 26609                 {
 25188                     identifier_c param_name("IN2");
 26610                     identifier_c param_name("IN2");
 25189                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26611                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25190                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 26612                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 26613                     symbol_c *IN2_type_symbol = NULL;
 25191                     
 26614                     
 25192                     /* Get the value from a foo(<param_value>) style call */
 26615                     /* Get the value from a foo(<param_value>) style call */
 25193                     if (IN2_param_value == NULL)
 26616                     if (IN2_param_value == NULL)
 25194                       IN2_param_value = function_call_param_iterator.next();
 26617                       IN2_param_value = function_call_param_iterator.next();
 25195                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26618                     if (IN2_param_value != NULL) {
 25196                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26619                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25197                     
 26620                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25198                     if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 26621                     }
       
 26622                     
       
 26623                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25199                     {
 26624                     {
 25200                 
 26625                 
 25201                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 26626                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 25202                         return return_type_symbol;
 26627                         return return_type_symbol;
 25203                         
 26628                         
 25225 
 26650 
 25226         {
 26651         {
 25227             symbol_c *IN1_type_symbol = param_data_type;
 26652             symbol_c *IN1_type_symbol = param_data_type;
 25228             last_type_symbol = param_data_type;
 26653             last_type_symbol = param_data_type;
 25229             
 26654             
 25230             if(search_expression_type->is_num_type(IN1_type_symbol))
 26655             if(IN1_type_symbol == NULL || search_expression_type->is_num_type(IN1_type_symbol))
 25231             {
 26656             {
 25232         
 26657         
 25233                 {
 26658                 {
 25234                     identifier_c param_name("IN2");
 26659                     identifier_c param_name("IN2");
 25235                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26660                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25236                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 26661                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 26662                     symbol_c *IN2_type_symbol = NULL;
 25237                     
 26663                     
 25238                     /* Get the value from a foo(<param_value>) style call */
 26664                     /* Get the value from a foo(<param_value>) style call */
 25239                     if (IN2_param_value == NULL)
 26665                     if (IN2_param_value == NULL)
 25240                       IN2_param_value = function_call_param_iterator.next();
 26666                       IN2_param_value = function_call_param_iterator.next();
 25241                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26667                     if (IN2_param_value != NULL) {
 25242                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26668                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25243                     
 26669                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25244                     if(search_expression_type->is_num_type(IN2_type_symbol))
 26670                     }
       
 26671                     
       
 26672                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 25245                     {
 26673                     {
 25246                 
 26674                 
 25247                         symbol_c * return_type_symbol = last_type_symbol;
 26675                         symbol_c * return_type_symbol = last_type_symbol;
 25248                         return return_type_symbol;
 26676                         return return_type_symbol;
 25249                         
 26677                         
 25253                     ERROR;
 26681                     ERROR;
 25254                 }
 26682                 }
 25255                 
 26683                 
 25256             }
 26684             }
 25257             
 26685             
 25258             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 26686             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25259             {
 26687             {
 25260         
 26688         
 25261                 {
 26689                 {
 25262                     identifier_c param_name("IN2");
 26690                     identifier_c param_name("IN2");
 25263                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26691                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25264                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 26692                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 26693                     symbol_c *IN2_type_symbol = NULL;
 25265                     
 26694                     
 25266                     /* Get the value from a foo(<param_value>) style call */
 26695                     /* Get the value from a foo(<param_value>) style call */
 25267                     if (IN2_param_value == NULL)
 26696                     if (IN2_param_value == NULL)
 25268                       IN2_param_value = function_call_param_iterator.next();
 26697                       IN2_param_value = function_call_param_iterator.next();
 25269                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26698                     if (IN2_param_value != NULL) {
 25270                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26699                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25271                     
 26700                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25272                     if(search_expression_type->is_num_type(IN2_type_symbol))
 26701                     }
       
 26702                     
       
 26703                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 25273                     {
 26704                     {
 25274                 
 26705                 
 25275                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 26706                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 25276                         return return_type_symbol;
 26707                         return return_type_symbol;
 25277                         
 26708                         
 25299 
 26730 
 25300         {
 26731         {
 25301             symbol_c *IN1_type_symbol = param_data_type;
 26732             symbol_c *IN1_type_symbol = param_data_type;
 25302             last_type_symbol = param_data_type;
 26733             last_type_symbol = param_data_type;
 25303             
 26734             
 25304             if(search_expression_type->is_num_type(IN1_type_symbol))
 26735             if(IN1_type_symbol == NULL || search_expression_type->is_num_type(IN1_type_symbol))
 25305             {
 26736             {
 25306         
 26737         
 25307                 {
 26738                 {
 25308                     identifier_c param_name("IN2");
 26739                     identifier_c param_name("IN2");
 25309                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26740                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25310                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 26741                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 26742                     symbol_c *IN2_type_symbol = NULL;
 25311                     
 26743                     
 25312                     /* Get the value from a foo(<param_value>) style call */
 26744                     /* Get the value from a foo(<param_value>) style call */
 25313                     if (IN2_param_value == NULL)
 26745                     if (IN2_param_value == NULL)
 25314                       IN2_param_value = function_call_param_iterator.next();
 26746                       IN2_param_value = function_call_param_iterator.next();
 25315                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26747                     if (IN2_param_value != NULL) {
 25316                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26748                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25317                     
 26749                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25318                     if(search_expression_type->is_num_type(IN2_type_symbol))
 26750                     }
       
 26751                     
       
 26752                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 25319                     {
 26753                     {
 25320                 
 26754                 
 25321                         symbol_c * return_type_symbol = last_type_symbol;
 26755                         symbol_c * return_type_symbol = last_type_symbol;
 25322                         return return_type_symbol;
 26756                         return return_type_symbol;
 25323                         
 26757                         
 25327                     ERROR;
 26761                     ERROR;
 25328                 }
 26762                 }
 25329                 
 26763                 
 25330             }
 26764             }
 25331             
 26765             
 25332             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 26766             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 25333             {
 26767             {
 25334         
 26768         
 25335                 {
 26769                 {
 25336                     identifier_c param_name("IN2");
 26770                     identifier_c param_name("IN2");
 25337                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26771                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25338                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 26772                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 26773                     symbol_c *IN2_type_symbol = NULL;
 25339                     
 26774                     
 25340                     /* Get the value from a foo(<param_value>) style call */
 26775                     /* Get the value from a foo(<param_value>) style call */
 25341                     if (IN2_param_value == NULL)
 26776                     if (IN2_param_value == NULL)
 25342                       IN2_param_value = function_call_param_iterator.next();
 26777                       IN2_param_value = function_call_param_iterator.next();
 25343                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26778                     if (IN2_param_value != NULL) {
 25344                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26779                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25345                     
 26780                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25346                     if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 26781                     }
       
 26782                     
       
 26783                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 25347                     {
 26784                     {
 25348                 
 26785                 
 25349                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 26786                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 25350                         return return_type_symbol;
 26787                         return return_type_symbol;
 25351                         
 26788                         
 25355                     ERROR;
 26792                     ERROR;
 25356                 }
 26793                 }
 25357                 
 26794                 
 25358             }
 26795             }
 25359             
 26796             
 25360             if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 26797             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 25361             {
 26798             {
 25362         
 26799         
 25363                 {
 26800                 {
 25364                     identifier_c param_name("IN2");
 26801                     identifier_c param_name("IN2");
 25365                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26802                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25366                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 26803                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 26804                     symbol_c *IN2_type_symbol = NULL;
 25367                     
 26805                     
 25368                     /* Get the value from a foo(<param_value>) style call */
 26806                     /* Get the value from a foo(<param_value>) style call */
 25369                     if (IN2_param_value == NULL)
 26807                     if (IN2_param_value == NULL)
 25370                       IN2_param_value = function_call_param_iterator.next();
 26808                       IN2_param_value = function_call_param_iterator.next();
 25371                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26809                     if (IN2_param_value != NULL) {
 25372                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26810                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25373                     
 26811                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25374                     if(search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 26812                     }
       
 26813                     
       
 26814                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol))
 25375                     {
 26815                     {
 25376                 
 26816                 
 25377                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 26817                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 25378                         return return_type_symbol;
 26818                         return return_type_symbol;
 25379                         
 26819                         
 25380                     }
 26820                     }
 25381                     
 26821                     
 25382                     if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 26822                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25383                     {
 26823                     {
 25384                 
 26824                 
 25385                         symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 26825                         symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 25386                         return return_type_symbol;
 26826                         return return_type_symbol;
 25387                         
 26827                         
 25391                     ERROR;
 26831                     ERROR;
 25392                 }
 26832                 }
 25393                 
 26833                 
 25394             }
 26834             }
 25395             
 26835             
 25396             if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 26836             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 25397             {
 26837             {
 25398         
 26838         
 25399                 {
 26839                 {
 25400                     identifier_c param_name("IN2");
 26840                     identifier_c param_name("IN2");
 25401                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26841                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25402                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 26842                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 26843                     symbol_c *IN2_type_symbol = NULL;
 25403                     
 26844                     
 25404                     /* Get the value from a foo(<param_value>) style call */
 26845                     /* Get the value from a foo(<param_value>) style call */
 25405                     if (IN2_param_value == NULL)
 26846                     if (IN2_param_value == NULL)
 25406                       IN2_param_value = function_call_param_iterator.next();
 26847                       IN2_param_value = function_call_param_iterator.next();
 25407                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26848                     if (IN2_param_value != NULL) {
 25408                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26849                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25409                     
 26850                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25410                     if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 26851                     }
       
 26852                     
       
 26853                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 25411                     {
 26854                     {
 25412                 
 26855                 
 25413                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 26856                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 25414                         return return_type_symbol;
 26857                         return return_type_symbol;
 25415                         
 26858                         
 25416                     }
 26859                     }
 25417                     
 26860                     
 25418                     if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 26861                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25419                     {
 26862                     {
 25420                 
 26863                 
 25421                         symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 26864                         symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
 25422                         return return_type_symbol;
 26865                         return return_type_symbol;
 25423                         
 26866                         
 25427                     ERROR;
 26870                     ERROR;
 25428                 }
 26871                 }
 25429                 
 26872                 
 25430             }
 26873             }
 25431             
 26874             
 25432             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 26875             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25433             {
 26876             {
 25434         
 26877         
 25435                 {
 26878                 {
 25436                     identifier_c param_name("IN2");
 26879                     identifier_c param_name("IN2");
 25437                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26880                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25438                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 26881                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 26882                     symbol_c *IN2_type_symbol = NULL;
 25439                     
 26883                     
 25440                     /* Get the value from a foo(<param_value>) style call */
 26884                     /* Get the value from a foo(<param_value>) style call */
 25441                     if (IN2_param_value == NULL)
 26885                     if (IN2_param_value == NULL)
 25442                       IN2_param_value = function_call_param_iterator.next();
 26886                       IN2_param_value = function_call_param_iterator.next();
 25443                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26887                     if (IN2_param_value != NULL) {
 25444                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26888                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25445                     
 26889                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25446                     if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 26890                     }
       
 26891                     
       
 26892                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25447                     {
 26893                     {
 25448                 
 26894                 
 25449                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 26895                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 25450                         return return_type_symbol;
 26896                         return return_type_symbol;
 25451                         
 26897                         
 25473 
 26919 
 25474         {
 26920         {
 25475             symbol_c *IN1_type_symbol = param_data_type;
 26921             symbol_c *IN1_type_symbol = param_data_type;
 25476             last_type_symbol = param_data_type;
 26922             last_type_symbol = param_data_type;
 25477             
 26923             
 25478             if(search_expression_type->is_num_type(IN1_type_symbol))
 26924             if(IN1_type_symbol == NULL || search_expression_type->is_num_type(IN1_type_symbol))
 25479             {
 26925             {
 25480         
 26926         
 25481                 {
 26927                 {
 25482                     identifier_c param_name("IN2");
 26928                     identifier_c param_name("IN2");
 25483                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26929                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25484                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 26930                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 26931                     symbol_c *IN2_type_symbol = NULL;
 25485                     
 26932                     
 25486                     /* Get the value from a foo(<param_value>) style call */
 26933                     /* Get the value from a foo(<param_value>) style call */
 25487                     if (IN2_param_value == NULL)
 26934                     if (IN2_param_value == NULL)
 25488                       IN2_param_value = function_call_param_iterator.next();
 26935                       IN2_param_value = function_call_param_iterator.next();
 25489                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26936                     if (IN2_param_value != NULL) {
 25490                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26937                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25491                     
 26938                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25492                     if(search_expression_type->is_num_type(IN2_type_symbol))
 26939                     }
       
 26940                     
       
 26941                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 25493                     {
 26942                     {
 25494                 
 26943                 
 25495                         symbol_c * return_type_symbol = last_type_symbol;
 26944                         symbol_c * return_type_symbol = last_type_symbol;
 25496                         return return_type_symbol;
 26945                         return return_type_symbol;
 25497                         
 26946                         
 25501                     ERROR;
 26950                     ERROR;
 25502                 }
 26951                 }
 25503                 
 26952                 
 25504             }
 26953             }
 25505             
 26954             
 25506             if(search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 26955             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol))
 25507             {
 26956             {
 25508         
 26957         
 25509                 {
 26958                 {
 25510                     identifier_c param_name("IN2");
 26959                     identifier_c param_name("IN2");
 25511                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26960                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25512                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 26961                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 26962                     symbol_c *IN2_type_symbol = NULL;
 25513                     
 26963                     
 25514                     /* Get the value from a foo(<param_value>) style call */
 26964                     /* Get the value from a foo(<param_value>) style call */
 25515                     if (IN2_param_value == NULL)
 26965                     if (IN2_param_value == NULL)
 25516                       IN2_param_value = function_call_param_iterator.next();
 26966                       IN2_param_value = function_call_param_iterator.next();
 25517                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26967                     if (IN2_param_value != NULL) {
 25518                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26968                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25519                     
 26969                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25520                     if(search_expression_type->is_num_type(IN2_type_symbol))
 26970                     }
       
 26971                     
       
 26972                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 25521                     {
 26973                     {
 25522                 
 26974                 
 25523                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 26975                         symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 25524                         return return_type_symbol;
 26976                         return return_type_symbol;
 25525                         
 26977                         
 25547 
 26999 
 25548         {
 27000         {
 25549             symbol_c *IN1_type_symbol = param_data_type;
 27001             symbol_c *IN1_type_symbol = param_data_type;
 25550             last_type_symbol = param_data_type;
 27002             last_type_symbol = param_data_type;
 25551             
 27003             
 25552             if(search_expression_type->is_num_type(IN1_type_symbol))
 27004             if(IN1_type_symbol == NULL || search_expression_type->is_num_type(IN1_type_symbol))
 25553             {
 27005             {
 25554         
 27006         
 25555                 {
 27007                 {
 25556                     identifier_c param_name("IN2");
 27008                     identifier_c param_name("IN2");
 25557                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27009                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25558                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 27010                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 27011                     symbol_c *IN2_type_symbol = NULL;
 25559                     
 27012                     
 25560                     /* Get the value from a foo(<param_value>) style call */
 27013                     /* Get the value from a foo(<param_value>) style call */
 25561                     if (IN2_param_value == NULL)
 27014                     if (IN2_param_value == NULL)
 25562                       IN2_param_value = function_call_param_iterator.next();
 27015                       IN2_param_value = function_call_param_iterator.next();
 25563                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 27016                     if (IN2_param_value != NULL) {
 25564                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 27017                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25565                     
 27018                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25566                     if(search_expression_type->is_num_type(IN2_type_symbol))
 27019                     }
       
 27020                     
       
 27021                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 25567                     {
 27022                     {
 25568                 
 27023                 
 25569                         symbol_c * return_type_symbol = last_type_symbol;
 27024                         symbol_c * return_type_symbol = last_type_symbol;
 25570                         return return_type_symbol;
 27025                         return return_type_symbol;
 25571                         
 27026                         
 25593 
 27048 
 25594         {
 27049         {
 25595             symbol_c *IN1_type_symbol = param_data_type;
 27050             symbol_c *IN1_type_symbol = param_data_type;
 25596             last_type_symbol = param_data_type;
 27051             last_type_symbol = param_data_type;
 25597             
 27052             
 25598             if(search_expression_type->is_real_type(IN1_type_symbol))
 27053             if(IN1_type_symbol == NULL || search_expression_type->is_real_type(IN1_type_symbol))
 25599             {
 27054             {
 25600         
 27055         
 25601                 {
 27056                 {
 25602                     identifier_c param_name("IN2");
 27057                     identifier_c param_name("IN2");
 25603                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27058                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25604                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 27059                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 27060                     symbol_c *IN2_type_symbol = NULL;
 25605                     
 27061                     
 25606                     /* Get the value from a foo(<param_value>) style call */
 27062                     /* Get the value from a foo(<param_value>) style call */
 25607                     if (IN2_param_value == NULL)
 27063                     if (IN2_param_value == NULL)
 25608                       IN2_param_value = function_call_param_iterator.next();
 27064                       IN2_param_value = function_call_param_iterator.next();
 25609                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 27065                     if (IN2_param_value != NULL) {
 25610                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 27066                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25611                     
 27067                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25612                     if(search_expression_type->is_num_type(IN2_type_symbol))
 27068                     }
       
 27069                     
       
 27070                     if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol))
 25613                     {
 27071                     {
 25614                 
 27072                 
 25615                         symbol_c * return_type_symbol = last_type_symbol;
 27073                         symbol_c * return_type_symbol = last_type_symbol;
 25616                         return return_type_symbol;
 27074                         return return_type_symbol;
 25617                         
 27075                         
 25665 
 27123 
 25666         {
 27124         {
 25667             symbol_c *IN_type_symbol = param_data_type;
 27125             symbol_c *IN_type_symbol = param_data_type;
 25668             last_type_symbol = param_data_type;
 27126             last_type_symbol = param_data_type;
 25669             
 27127             
 25670             if(search_expression_type->is_binary_type(IN_type_symbol))
 27128             if(IN_type_symbol == NULL || search_expression_type->is_binary_type(IN_type_symbol))
 25671             {
 27129             {
 25672         
 27130         
 25673                 {
 27131                 {
 25674                     identifier_c param_name("N");
 27132                     identifier_c param_name("N");
 25675                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27133                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25676                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
 27134                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
       
 27135                     symbol_c *N_type_symbol = NULL;
 25677                     
 27136                     
 25678                     /* Get the value from a foo(<param_value>) style call */
 27137                     /* Get the value from a foo(<param_value>) style call */
 25679                     if (N_param_value == NULL)
 27138                     if (N_param_value == NULL)
 25680                       N_param_value = function_call_param_iterator.next();
 27139                       N_param_value = function_call_param_iterator.next();
 25681                     symbol_c *N_type_symbol = search_expression_type->get_type(N_param_value);
 27140                     if (N_param_value != NULL) {
 25682                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 27141                       N_type_symbol = search_expression_type->get_type(N_param_value);
 25683                     
 27142                       last_type_symbol = last_type_symbol && N_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 25684                     if(search_expression_type->is_integer_type(N_type_symbol))
 27143                     }
       
 27144                     
       
 27145                     if(N_type_symbol == NULL || search_expression_type->is_integer_type(N_type_symbol))
 25685                     {
 27146                     {
 25686                 
 27147                 
 25687                         symbol_c * return_type_symbol = IN_type_symbol;
 27148                         symbol_c * return_type_symbol = IN_type_symbol;
 25688                         return return_type_symbol;
 27149                         return return_type_symbol;
 25689                         
 27150                         
 25711 
 27172 
 25712         {
 27173         {
 25713             symbol_c *IN_type_symbol = param_data_type;
 27174             symbol_c *IN_type_symbol = param_data_type;
 25714             last_type_symbol = param_data_type;
 27175             last_type_symbol = param_data_type;
 25715             
 27176             
 25716             if(search_expression_type->is_binary_type(IN_type_symbol))
 27177             if(IN_type_symbol == NULL || search_expression_type->is_binary_type(IN_type_symbol))
 25717             {
 27178             {
 25718         
 27179         
 25719                 {
 27180                 {
 25720                     identifier_c param_name("N");
 27181                     identifier_c param_name("N");
 25721                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27182                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25722                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
 27183                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
       
 27184                     symbol_c *N_type_symbol = NULL;
 25723                     
 27185                     
 25724                     /* Get the value from a foo(<param_value>) style call */
 27186                     /* Get the value from a foo(<param_value>) style call */
 25725                     if (N_param_value == NULL)
 27187                     if (N_param_value == NULL)
 25726                       N_param_value = function_call_param_iterator.next();
 27188                       N_param_value = function_call_param_iterator.next();
 25727                     symbol_c *N_type_symbol = search_expression_type->get_type(N_param_value);
 27189                     if (N_param_value != NULL) {
 25728                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 27190                       N_type_symbol = search_expression_type->get_type(N_param_value);
 25729                     
 27191                       last_type_symbol = last_type_symbol && N_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 25730                     if(search_expression_type->is_integer_type(N_type_symbol))
 27192                     }
       
 27193                     
       
 27194                     if(N_type_symbol == NULL || search_expression_type->is_integer_type(N_type_symbol))
 25731                     {
 27195                     {
 25732                 
 27196                 
 25733                         symbol_c * return_type_symbol = IN_type_symbol;
 27197                         symbol_c * return_type_symbol = IN_type_symbol;
 25734                         return return_type_symbol;
 27198                         return return_type_symbol;
 25735                         
 27199                         
 25757 
 27221 
 25758         {
 27222         {
 25759             symbol_c *IN_type_symbol = param_data_type;
 27223             symbol_c *IN_type_symbol = param_data_type;
 25760             last_type_symbol = param_data_type;
 27224             last_type_symbol = param_data_type;
 25761             
 27225             
 25762             if(search_expression_type->is_nbinary_type(IN_type_symbol))
 27226             if(IN_type_symbol == NULL || search_expression_type->is_nbinary_type(IN_type_symbol))
 25763             {
 27227             {
 25764         
 27228         
 25765                 {
 27229                 {
 25766                     identifier_c param_name("N");
 27230                     identifier_c param_name("N");
 25767                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27231                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25768                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
 27232                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
       
 27233                     symbol_c *N_type_symbol = NULL;
 25769                     
 27234                     
 25770                     /* Get the value from a foo(<param_value>) style call */
 27235                     /* Get the value from a foo(<param_value>) style call */
 25771                     if (N_param_value == NULL)
 27236                     if (N_param_value == NULL)
 25772                       N_param_value = function_call_param_iterator.next();
 27237                       N_param_value = function_call_param_iterator.next();
 25773                     symbol_c *N_type_symbol = search_expression_type->get_type(N_param_value);
 27238                     if (N_param_value != NULL) {
 25774                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 27239                       N_type_symbol = search_expression_type->get_type(N_param_value);
 25775                     
 27240                       last_type_symbol = last_type_symbol && N_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 25776                     if(search_expression_type->is_integer_type(N_type_symbol))
 27241                     }
       
 27242                     
       
 27243                     if(N_type_symbol == NULL || search_expression_type->is_integer_type(N_type_symbol))
 25777                     {
 27244                     {
 25778                 
 27245                 
 25779                         symbol_c * return_type_symbol = IN_type_symbol;
 27246                         symbol_c * return_type_symbol = IN_type_symbol;
 25780                         return return_type_symbol;
 27247                         return return_type_symbol;
 25781                         
 27248                         
 25803 
 27270 
 25804         {
 27271         {
 25805             symbol_c *IN_type_symbol = param_data_type;
 27272             symbol_c *IN_type_symbol = param_data_type;
 25806             last_type_symbol = param_data_type;
 27273             last_type_symbol = param_data_type;
 25807             
 27274             
 25808             if(search_expression_type->is_nbinary_type(IN_type_symbol))
 27275             if(IN_type_symbol == NULL || search_expression_type->is_nbinary_type(IN_type_symbol))
 25809             {
 27276             {
 25810         
 27277         
 25811                 {
 27278                 {
 25812                     identifier_c param_name("N");
 27279                     identifier_c param_name("N");
 25813                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27280                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25814                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
 27281                     symbol_c *N_param_value = function_call_param_iterator.search(&param_name);
       
 27282                     symbol_c *N_type_symbol = NULL;
 25815                     
 27283                     
 25816                     /* Get the value from a foo(<param_value>) style call */
 27284                     /* Get the value from a foo(<param_value>) style call */
 25817                     if (N_param_value == NULL)
 27285                     if (N_param_value == NULL)
 25818                       N_param_value = function_call_param_iterator.next();
 27286                       N_param_value = function_call_param_iterator.next();
 25819                     symbol_c *N_type_symbol = search_expression_type->get_type(N_param_value);
 27287                     if (N_param_value != NULL) {
 25820                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 27288                       N_type_symbol = search_expression_type->get_type(N_param_value);
 25821                     
 27289                       last_type_symbol = last_type_symbol && N_type_symbol && search_expression_type->is_same_type(N_type_symbol, last_type_symbol) ? search_expression_type->common_type(N_type_symbol, last_type_symbol) : N_type_symbol ;
 25822                     if(search_expression_type->is_integer_type(N_type_symbol))
 27290                     }
       
 27291                     
       
 27292                     if(N_type_symbol == NULL || search_expression_type->is_integer_type(N_type_symbol))
 25823                     {
 27293                     {
 25824                 
 27294                 
 25825                         symbol_c * return_type_symbol = IN_type_symbol;
 27295                         symbol_c * return_type_symbol = IN_type_symbol;
 25826                         return return_type_symbol;
 27296                         return return_type_symbol;
 25827                         
 27297                         
 25849 
 27319 
 25850         {
 27320         {
 25851             symbol_c *IN1_type_symbol = param_data_type;
 27321             symbol_c *IN1_type_symbol = param_data_type;
 25852             last_type_symbol = param_data_type;
 27322             last_type_symbol = param_data_type;
 25853             
 27323             
 25854             if(search_expression_type->is_binary_type(IN1_type_symbol))
 27324             if(IN1_type_symbol == NULL || search_expression_type->is_binary_type(IN1_type_symbol))
 25855             {
 27325             {
 25856         
 27326         
 25857                 {
 27327                 {
 25858                     identifier_c param_name("IN2");
 27328                     identifier_c param_name("IN2");
 25859                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27329                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25860                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 27330                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 27331                     symbol_c *IN2_type_symbol = NULL;
 25861                     
 27332                     
 25862                     /* Get the value from a foo(<param_value>) style call */
 27333                     /* Get the value from a foo(<param_value>) style call */
 25863                     if (IN2_param_value == NULL)
 27334                     if (IN2_param_value == NULL)
 25864                       IN2_param_value = function_call_param_iterator.next();
 27335                       IN2_param_value = function_call_param_iterator.next();
 25865                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 27336                     if (IN2_param_value != NULL) {
 25866                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 27337                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25867                     
 27338                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25868                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 27339                     }
       
 27340                     
       
 27341                     if(IN2_type_symbol == NULL || search_expression_type->is_binary_type(IN2_type_symbol))
 25869                     {
 27342                     {
 25870                 
 27343                 
 25871                         symbol_c * return_type_symbol = last_type_symbol;
 27344                         symbol_c * return_type_symbol = last_type_symbol;
 25872                         return return_type_symbol;
 27345                         return return_type_symbol;
 25873                         
 27346                         
 25895 
 27368 
 25896         {
 27369         {
 25897             symbol_c *IN1_type_symbol = param_data_type;
 27370             symbol_c *IN1_type_symbol = param_data_type;
 25898             last_type_symbol = param_data_type;
 27371             last_type_symbol = param_data_type;
 25899             
 27372             
 25900             if(search_expression_type->is_binary_type(IN1_type_symbol))
 27373             if(IN1_type_symbol == NULL || search_expression_type->is_binary_type(IN1_type_symbol))
 25901             {
 27374             {
 25902         
 27375         
 25903                 {
 27376                 {
 25904                     identifier_c param_name("IN2");
 27377                     identifier_c param_name("IN2");
 25905                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27378                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25906                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 27379                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 27380                     symbol_c *IN2_type_symbol = NULL;
 25907                     
 27381                     
 25908                     /* Get the value from a foo(<param_value>) style call */
 27382                     /* Get the value from a foo(<param_value>) style call */
 25909                     if (IN2_param_value == NULL)
 27383                     if (IN2_param_value == NULL)
 25910                       IN2_param_value = function_call_param_iterator.next();
 27384                       IN2_param_value = function_call_param_iterator.next();
 25911                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 27385                     if (IN2_param_value != NULL) {
 25912                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 27386                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25913                     
 27387                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25914                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 27388                     }
       
 27389                     
       
 27390                     if(IN2_type_symbol == NULL || search_expression_type->is_binary_type(IN2_type_symbol))
 25915                     {
 27391                     {
 25916                 
 27392                 
 25917                         symbol_c * return_type_symbol = last_type_symbol;
 27393                         symbol_c * return_type_symbol = last_type_symbol;
 25918                         return return_type_symbol;
 27394                         return return_type_symbol;
 25919                         
 27395                         
 25941 
 27417 
 25942         {
 27418         {
 25943             symbol_c *IN1_type_symbol = param_data_type;
 27419             symbol_c *IN1_type_symbol = param_data_type;
 25944             last_type_symbol = param_data_type;
 27420             last_type_symbol = param_data_type;
 25945             
 27421             
 25946             if(search_expression_type->is_binary_type(IN1_type_symbol))
 27422             if(IN1_type_symbol == NULL || search_expression_type->is_binary_type(IN1_type_symbol))
 25947             {
 27423             {
 25948         
 27424         
 25949                 {
 27425                 {
 25950                     identifier_c param_name("IN2");
 27426                     identifier_c param_name("IN2");
 25951                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27427                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 25952                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 27428                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 27429                     symbol_c *IN2_type_symbol = NULL;
 25953                     
 27430                     
 25954                     /* Get the value from a foo(<param_value>) style call */
 27431                     /* Get the value from a foo(<param_value>) style call */
 25955                     if (IN2_param_value == NULL)
 27432                     if (IN2_param_value == NULL)
 25956                       IN2_param_value = function_call_param_iterator.next();
 27433                       IN2_param_value = function_call_param_iterator.next();
 25957                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 27434                     if (IN2_param_value != NULL) {
 25958                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 27435                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 25959                     
 27436                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 25960                     if(search_expression_type->is_binary_type(IN2_type_symbol))
 27437                     }
       
 27438                     
       
 27439                     if(IN2_type_symbol == NULL || search_expression_type->is_binary_type(IN2_type_symbol))
 25961                     {
 27440                     {
 25962                 
 27441                 
 25963                         symbol_c * return_type_symbol = last_type_symbol;
 27442                         symbol_c * return_type_symbol = last_type_symbol;
 25964                         return return_type_symbol;
 27443                         return return_type_symbol;
 25965                         
 27444                         
 25987 
 27466 
 25988         {
 27467         {
 25989             symbol_c *IN_type_symbol = param_data_type;
 27468             symbol_c *IN_type_symbol = param_data_type;
 25990             last_type_symbol = param_data_type;
 27469             last_type_symbol = param_data_type;
 25991             
 27470             
 25992             if(search_expression_type->is_binary_type(IN_type_symbol))
 27471             if(IN_type_symbol == NULL || search_expression_type->is_binary_type(IN_type_symbol))
 25993             {
 27472             {
 25994         
 27473         
 25995                 symbol_c * return_type_symbol = IN_type_symbol;
 27474                 symbol_c * return_type_symbol = IN_type_symbol;
 25996                 return return_type_symbol;
 27475                 return return_type_symbol;
 25997                 
 27476                 
 26013 
 27492 
 26014         {
 27493         {
 26015             symbol_c *G_type_symbol = param_data_type;
 27494             symbol_c *G_type_symbol = param_data_type;
 26016             last_type_symbol = param_data_type;
 27495             last_type_symbol = param_data_type;
 26017             
 27496             
 26018             if(search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 27497             if(G_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::bool_type_name, last_type_symbol))
 26019             {
 27498             {
 26020         
 27499         
 26021                 {
 27500                 {
 26022                     identifier_c param_name("IN0");
 27501                     identifier_c param_name("IN0");
 26023                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27502                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26024                     symbol_c *IN0_param_value = function_call_param_iterator.search(&param_name);
 27503                     symbol_c *IN0_param_value = function_call_param_iterator.search(&param_name);
       
 27504                     symbol_c *IN0_type_symbol = NULL;
 26025                     
 27505                     
 26026                     /* Get the value from a foo(<param_value>) style call */
 27506                     /* Get the value from a foo(<param_value>) style call */
 26027                     if (IN0_param_value == NULL)
 27507                     if (IN0_param_value == NULL)
 26028                       IN0_param_value = function_call_param_iterator.next();
 27508                       IN0_param_value = function_call_param_iterator.next();
 26029                     symbol_c *IN0_type_symbol = search_expression_type->get_type(IN0_param_value);
 27509                     if (IN0_param_value != NULL) {
 26030                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN0_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN0_type_symbol, last_type_symbol) : IN0_type_symbol ;
 27510                       IN0_type_symbol = search_expression_type->get_type(IN0_param_value);
       
 27511                       last_type_symbol = last_type_symbol && IN0_type_symbol && search_expression_type->is_same_type(IN0_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN0_type_symbol, last_type_symbol) : IN0_type_symbol ;
       
 27512                     }
 26031                     
 27513                     
 26032                     
 27514                     
 26033                     {
 27515                     {
 26034                 
 27516                 
 26035                         {
 27517                         {
 26036                             identifier_c param_name("IN1");
 27518                             identifier_c param_name("IN1");
 26037                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 27519                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 26038                             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 27520                             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 27521                             symbol_c *IN1_type_symbol = NULL;
 26039                             
 27522                             
 26040                             /* Get the value from a foo(<param_value>) style call */
 27523                             /* Get the value from a foo(<param_value>) style call */
 26041                             if (IN1_param_value == NULL)
 27524                             if (IN1_param_value == NULL)
 26042                               IN1_param_value = function_call_param_iterator.next();
 27525                               IN1_param_value = function_call_param_iterator.next();
 26043                             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 27526                             if (IN1_param_value != NULL) {
 26044                             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 27527                               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
       
 27528                               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
       
 27529                             }
 26045                             
 27530                             
 26046                             
 27531                             
 26047                             {
 27532                             {
 26048                         
 27533                         
 26049                                 symbol_c * return_type_symbol = last_type_symbol;
 27534                                 symbol_c * return_type_symbol = last_type_symbol;
 26086         
 27571         
 26087                 {
 27572                 {
 26088                     identifier_c param_name("IN2");
 27573                     identifier_c param_name("IN2");
 26089                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27574                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26090                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 27575                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 27576                     symbol_c *IN2_type_symbol = NULL;
 26091                     
 27577                     
 26092                     /* Get the value from a foo(<param_value>) style call */
 27578                     /* Get the value from a foo(<param_value>) style call */
 26093                     if (IN2_param_value == NULL)
 27579                     if (IN2_param_value == NULL)
 26094                       IN2_param_value = function_call_param_iterator.next();
 27580                       IN2_param_value = function_call_param_iterator.next();
 26095                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 27581                     if (IN2_param_value != NULL) {
 26096                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 27582                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 27583                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 27584                     }
 26097                     
 27585                     
 26098                     
 27586                     
 26099                     {
 27587                     {
 26100                 
 27588                 
 26101                         symbol_c * return_type_symbol = last_type_symbol;
 27589                         symbol_c * return_type_symbol = last_type_symbol;
 26132         
 27620         
 26133                 {
 27621                 {
 26134                     identifier_c param_name("IN2");
 27622                     identifier_c param_name("IN2");
 26135                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27623                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26136                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 27624                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 27625                     symbol_c *IN2_type_symbol = NULL;
 26137                     
 27626                     
 26138                     /* Get the value from a foo(<param_value>) style call */
 27627                     /* Get the value from a foo(<param_value>) style call */
 26139                     if (IN2_param_value == NULL)
 27628                     if (IN2_param_value == NULL)
 26140                       IN2_param_value = function_call_param_iterator.next();
 27629                       IN2_param_value = function_call_param_iterator.next();
 26141                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 27630                     if (IN2_param_value != NULL) {
 26142                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 27631                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 27632                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 27633                     }
 26143                     
 27634                     
 26144                     
 27635                     
 26145                     {
 27636                     {
 26146                 
 27637                 
 26147                         symbol_c * return_type_symbol = last_type_symbol;
 27638                         symbol_c * return_type_symbol = last_type_symbol;
 26178         
 27669         
 26179                 {
 27670                 {
 26180                     identifier_c param_name("IN");
 27671                     identifier_c param_name("IN");
 26181                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27672                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26182                     symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
 27673                     symbol_c *IN_param_value = function_call_param_iterator.search(&param_name);
       
 27674                     symbol_c *IN_type_symbol = NULL;
 26183                     
 27675                     
 26184                     /* Get the value from a foo(<param_value>) style call */
 27676                     /* Get the value from a foo(<param_value>) style call */
 26185                     if (IN_param_value == NULL)
 27677                     if (IN_param_value == NULL)
 26186                       IN_param_value = function_call_param_iterator.next();
 27678                       IN_param_value = function_call_param_iterator.next();
 26187                     symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 27679                     if (IN_param_value != NULL) {
 26188                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 27680                       IN_type_symbol = search_expression_type->get_type(IN_param_value);
       
 27681                       last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
       
 27682                     }
 26189                     
 27683                     
 26190                     
 27684                     
 26191                     {
 27685                     {
 26192                 
 27686                 
 26193                         {
 27687                         {
 26194                             identifier_c param_name("MX");
 27688                             identifier_c param_name("MX");
 26195                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 27689                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 26196                             symbol_c *MX_param_value = function_call_param_iterator.search(&param_name);
 27690                             symbol_c *MX_param_value = function_call_param_iterator.search(&param_name);
       
 27691                             symbol_c *MX_type_symbol = NULL;
 26197                             
 27692                             
 26198                             /* Get the value from a foo(<param_value>) style call */
 27693                             /* Get the value from a foo(<param_value>) style call */
 26199                             if (MX_param_value == NULL)
 27694                             if (MX_param_value == NULL)
 26200                               MX_param_value = function_call_param_iterator.next();
 27695                               MX_param_value = function_call_param_iterator.next();
 26201                             symbol_c *MX_type_symbol = search_expression_type->get_type(MX_param_value);
 27696                             if (MX_param_value != NULL) {
 26202                             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(MX_type_symbol, last_type_symbol) ? search_expression_type->common_type(MX_type_symbol, last_type_symbol) : MX_type_symbol ;
 27697                               MX_type_symbol = search_expression_type->get_type(MX_param_value);
       
 27698                               last_type_symbol = last_type_symbol && MX_type_symbol && search_expression_type->is_same_type(MX_type_symbol, last_type_symbol) ? search_expression_type->common_type(MX_type_symbol, last_type_symbol) : MX_type_symbol ;
       
 27699                             }
 26203                             
 27700                             
 26204                             
 27701                             
 26205                             {
 27702                             {
 26206                         
 27703                         
 26207                                 symbol_c * return_type_symbol = IN_type_symbol;
 27704                                 symbol_c * return_type_symbol = IN_type_symbol;
 26237 
 27734 
 26238         {
 27735         {
 26239             symbol_c *K_type_symbol = param_data_type;
 27736             symbol_c *K_type_symbol = param_data_type;
 26240             last_type_symbol = param_data_type;
 27737             last_type_symbol = param_data_type;
 26241             
 27738             
 26242             if(search_expression_type->is_integer_type(K_type_symbol))
 27739             if(K_type_symbol == NULL || search_expression_type->is_integer_type(K_type_symbol))
 26243             {
 27740             {
 26244         
 27741         
 26245                 {
 27742                 {
 26246                     identifier_c param_name("IN0");
 27743                     identifier_c param_name("IN0");
 26247                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27744                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26248                     symbol_c *IN0_param_value = function_call_param_iterator.search(&param_name);
 27745                     symbol_c *IN0_param_value = function_call_param_iterator.search(&param_name);
       
 27746                     symbol_c *IN0_type_symbol = NULL;
 26249                     
 27747                     
 26250                     /* Get the value from a foo(<param_value>) style call */
 27748                     /* Get the value from a foo(<param_value>) style call */
 26251                     if (IN0_param_value == NULL)
 27749                     if (IN0_param_value == NULL)
 26252                       IN0_param_value = function_call_param_iterator.next();
 27750                       IN0_param_value = function_call_param_iterator.next();
 26253                     symbol_c *IN0_type_symbol = search_expression_type->get_type(IN0_param_value);
 27751                     if (IN0_param_value != NULL) {
 26254                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN0_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN0_type_symbol, last_type_symbol) : IN0_type_symbol ;
 27752                       IN0_type_symbol = search_expression_type->get_type(IN0_param_value);
       
 27753                       last_type_symbol = last_type_symbol && IN0_type_symbol && search_expression_type->is_same_type(IN0_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN0_type_symbol, last_type_symbol) : IN0_type_symbol ;
       
 27754                     }
 26255                     
 27755                     
 26256                     
 27756                     
 26257                     {
 27757                     {
 26258                 
 27758                 
 26259                         {
 27759                         {
 26260                             identifier_c param_name("IN1");
 27760                             identifier_c param_name("IN1");
 26261                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 27761                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 26262                             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
 27762                             symbol_c *IN1_param_value = function_call_param_iterator.search(&param_name);
       
 27763                             symbol_c *IN1_type_symbol = NULL;
 26263                             
 27764                             
 26264                             /* Get the value from a foo(<param_value>) style call */
 27765                             /* Get the value from a foo(<param_value>) style call */
 26265                             if (IN1_param_value == NULL)
 27766                             if (IN1_param_value == NULL)
 26266                               IN1_param_value = function_call_param_iterator.next();
 27767                               IN1_param_value = function_call_param_iterator.next();
 26267                             symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 27768                             if (IN1_param_value != NULL) {
 26268                             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
 27769                               IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
       
 27770                               last_type_symbol = last_type_symbol && IN1_type_symbol && search_expression_type->is_same_type(IN1_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN1_type_symbol, last_type_symbol) : IN1_type_symbol ;
       
 27771                             }
 26269                             
 27772                             
 26270                             
 27773                             
 26271                             {
 27774                             {
 26272                         
 27775                         
 26273                                 symbol_c * return_type_symbol = last_type_symbol;
 27776                                 symbol_c * return_type_symbol = last_type_symbol;
 26310         
 27813         
 26311                 {
 27814                 {
 26312                     identifier_c param_name("IN2");
 27815                     identifier_c param_name("IN2");
 26313                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27816                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26314                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 27817                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 27818                     symbol_c *IN2_type_symbol = NULL;
 26315                     
 27819                     
 26316                     /* Get the value from a foo(<param_value>) style call */
 27820                     /* Get the value from a foo(<param_value>) style call */
 26317                     if (IN2_param_value == NULL)
 27821                     if (IN2_param_value == NULL)
 26318                       IN2_param_value = function_call_param_iterator.next();
 27822                       IN2_param_value = function_call_param_iterator.next();
 26319                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 27823                     if (IN2_param_value != NULL) {
 26320                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 27824                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 27825                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 27826                     }
 26321                     
 27827                     
 26322                     
 27828                     
 26323                     {
 27829                     {
 26324                 
 27830                 
 26325                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 27831                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 26356         
 27862         
 26357                 {
 27863                 {
 26358                     identifier_c param_name("IN2");
 27864                     identifier_c param_name("IN2");
 26359                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27865                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26360                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 27866                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 27867                     symbol_c *IN2_type_symbol = NULL;
 26361                     
 27868                     
 26362                     /* Get the value from a foo(<param_value>) style call */
 27869                     /* Get the value from a foo(<param_value>) style call */
 26363                     if (IN2_param_value == NULL)
 27870                     if (IN2_param_value == NULL)
 26364                       IN2_param_value = function_call_param_iterator.next();
 27871                       IN2_param_value = function_call_param_iterator.next();
 26365                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 27872                     if (IN2_param_value != NULL) {
 26366                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 27873                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 27874                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 27875                     }
 26367                     
 27876                     
 26368                     
 27877                     
 26369                     {
 27878                     {
 26370                 
 27879                 
 26371                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 27880                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 26402         
 27911         
 26403                 {
 27912                 {
 26404                     identifier_c param_name("IN2");
 27913                     identifier_c param_name("IN2");
 26405                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27914                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26406                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 27915                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 27916                     symbol_c *IN2_type_symbol = NULL;
 26407                     
 27917                     
 26408                     /* Get the value from a foo(<param_value>) style call */
 27918                     /* Get the value from a foo(<param_value>) style call */
 26409                     if (IN2_param_value == NULL)
 27919                     if (IN2_param_value == NULL)
 26410                       IN2_param_value = function_call_param_iterator.next();
 27920                       IN2_param_value = function_call_param_iterator.next();
 26411                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 27921                     if (IN2_param_value != NULL) {
 26412                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 27922                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 27923                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 27924                     }
 26413                     
 27925                     
 26414                     
 27926                     
 26415                     {
 27927                     {
 26416                 
 27928                 
 26417                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 27929                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 26448         
 27960         
 26449                 {
 27961                 {
 26450                     identifier_c param_name("IN2");
 27962                     identifier_c param_name("IN2");
 26451                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27963                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26452                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 27964                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 27965                     symbol_c *IN2_type_symbol = NULL;
 26453                     
 27966                     
 26454                     /* Get the value from a foo(<param_value>) style call */
 27967                     /* Get the value from a foo(<param_value>) style call */
 26455                     if (IN2_param_value == NULL)
 27968                     if (IN2_param_value == NULL)
 26456                       IN2_param_value = function_call_param_iterator.next();
 27969                       IN2_param_value = function_call_param_iterator.next();
 26457                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 27970                     if (IN2_param_value != NULL) {
 26458                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 27971                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 27972                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 27973                     }
 26459                     
 27974                     
 26460                     
 27975                     
 26461                     {
 27976                     {
 26462                 
 27977                 
 26463                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 27978                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 26494         
 28009         
 26495                 {
 28010                 {
 26496                     identifier_c param_name("IN2");
 28011                     identifier_c param_name("IN2");
 26497                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 28012                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26498                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 28013                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 28014                     symbol_c *IN2_type_symbol = NULL;
 26499                     
 28015                     
 26500                     /* Get the value from a foo(<param_value>) style call */
 28016                     /* Get the value from a foo(<param_value>) style call */
 26501                     if (IN2_param_value == NULL)
 28017                     if (IN2_param_value == NULL)
 26502                       IN2_param_value = function_call_param_iterator.next();
 28018                       IN2_param_value = function_call_param_iterator.next();
 26503                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 28019                     if (IN2_param_value != NULL) {
 26504                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 28020                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 28021                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 28022                     }
 26505                     
 28023                     
 26506                     
 28024                     
 26507                     {
 28025                     {
 26508                 
 28026                 
 26509                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 28027                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 26540         
 28058         
 26541                 {
 28059                 {
 26542                     identifier_c param_name("IN2");
 28060                     identifier_c param_name("IN2");
 26543                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 28061                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26544                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 28062                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 28063                     symbol_c *IN2_type_symbol = NULL;
 26545                     
 28064                     
 26546                     /* Get the value from a foo(<param_value>) style call */
 28065                     /* Get the value from a foo(<param_value>) style call */
 26547                     if (IN2_param_value == NULL)
 28066                     if (IN2_param_value == NULL)
 26548                       IN2_param_value = function_call_param_iterator.next();
 28067                       IN2_param_value = function_call_param_iterator.next();
 26549                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 28068                     if (IN2_param_value != NULL) {
 26550                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 28069                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
       
 28070                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
       
 28071                     }
 26551                     
 28072                     
 26552                     
 28073                     
 26553                     {
 28074                     {
 26554                 
 28075                 
 26555                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 28076                         symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
 26579 
 28100 
 26580         {
 28101         {
 26581             symbol_c *IN_type_symbol = param_data_type;
 28102             symbol_c *IN_type_symbol = param_data_type;
 26582             last_type_symbol = param_data_type;
 28103             last_type_symbol = param_data_type;
 26583             
 28104             
 26584             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 28105             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 26585             {
 28106             {
 26586         
 28107         
 26587                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 28108                 symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 26588                 return return_type_symbol;
 28109                 return return_type_symbol;
 26589                 
 28110                 
 26605 
 28126 
 26606         {
 28127         {
 26607             symbol_c *IN_type_symbol = param_data_type;
 28128             symbol_c *IN_type_symbol = param_data_type;
 26608             last_type_symbol = param_data_type;
 28129             last_type_symbol = param_data_type;
 26609             
 28130             
 26610             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 28131             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 26611             {
 28132             {
 26612         
 28133         
 26613                 {
 28134                 {
 26614                     identifier_c param_name("L");
 28135                     identifier_c param_name("L");
 26615                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 28136                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26616                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
 28137                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
       
 28138                     symbol_c *L_type_symbol = NULL;
 26617                     
 28139                     
 26618                     /* Get the value from a foo(<param_value>) style call */
 28140                     /* Get the value from a foo(<param_value>) style call */
 26619                     if (L_param_value == NULL)
 28141                     if (L_param_value == NULL)
 26620                       L_param_value = function_call_param_iterator.next();
 28142                       L_param_value = function_call_param_iterator.next();
 26621                     symbol_c *L_type_symbol = search_expression_type->get_type(L_param_value);
 28143                     if (L_param_value != NULL) {
 26622                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 28144                       L_type_symbol = search_expression_type->get_type(L_param_value);
 26623                     
 28145                       last_type_symbol = last_type_symbol && L_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 26624                     if(search_expression_type->is_integer_type(L_type_symbol))
 28146                     }
       
 28147                     
       
 28148                     if(L_type_symbol == NULL || search_expression_type->is_integer_type(L_type_symbol))
 26625                     {
 28149                     {
 26626                 
 28150                 
 26627                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 28151                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 26628                         return return_type_symbol;
 28152                         return return_type_symbol;
 26629                         
 28153                         
 26651 
 28175 
 26652         {
 28176         {
 26653             symbol_c *IN_type_symbol = param_data_type;
 28177             symbol_c *IN_type_symbol = param_data_type;
 26654             last_type_symbol = param_data_type;
 28178             last_type_symbol = param_data_type;
 26655             
 28179             
 26656             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 28180             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 26657             {
 28181             {
 26658         
 28182         
 26659                 {
 28183                 {
 26660                     identifier_c param_name("L");
 28184                     identifier_c param_name("L");
 26661                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 28185                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26662                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
 28186                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
       
 28187                     symbol_c *L_type_symbol = NULL;
 26663                     
 28188                     
 26664                     /* Get the value from a foo(<param_value>) style call */
 28189                     /* Get the value from a foo(<param_value>) style call */
 26665                     if (L_param_value == NULL)
 28190                     if (L_param_value == NULL)
 26666                       L_param_value = function_call_param_iterator.next();
 28191                       L_param_value = function_call_param_iterator.next();
 26667                     symbol_c *L_type_symbol = search_expression_type->get_type(L_param_value);
 28192                     if (L_param_value != NULL) {
 26668                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 28193                       L_type_symbol = search_expression_type->get_type(L_param_value);
 26669                     
 28194                       last_type_symbol = last_type_symbol && L_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 26670                     if(search_expression_type->is_integer_type(L_type_symbol))
 28195                     }
       
 28196                     
       
 28197                     if(L_type_symbol == NULL || search_expression_type->is_integer_type(L_type_symbol))
 26671                     {
 28198                     {
 26672                 
 28199                 
 26673                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 28200                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 26674                         return return_type_symbol;
 28201                         return return_type_symbol;
 26675                         
 28202                         
 26697 
 28224 
 26698         {
 28225         {
 26699             symbol_c *IN_type_symbol = param_data_type;
 28226             symbol_c *IN_type_symbol = param_data_type;
 26700             last_type_symbol = param_data_type;
 28227             last_type_symbol = param_data_type;
 26701             
 28228             
 26702             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 28229             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 26703             {
 28230             {
 26704         
 28231         
 26705                 {
 28232                 {
 26706                     identifier_c param_name("L");
 28233                     identifier_c param_name("L");
 26707                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 28234                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26708                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
 28235                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
       
 28236                     symbol_c *L_type_symbol = NULL;
 26709                     
 28237                     
 26710                     /* Get the value from a foo(<param_value>) style call */
 28238                     /* Get the value from a foo(<param_value>) style call */
 26711                     if (L_param_value == NULL)
 28239                     if (L_param_value == NULL)
 26712                       L_param_value = function_call_param_iterator.next();
 28240                       L_param_value = function_call_param_iterator.next();
 26713                     symbol_c *L_type_symbol = search_expression_type->get_type(L_param_value);
 28241                     if (L_param_value != NULL) {
 26714                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 28242                       L_type_symbol = search_expression_type->get_type(L_param_value);
 26715                     
 28243                       last_type_symbol = last_type_symbol && L_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 26716                     if(search_expression_type->is_integer_type(L_type_symbol))
 28244                     }
       
 28245                     
       
 28246                     if(L_type_symbol == NULL || search_expression_type->is_integer_type(L_type_symbol))
 26717                     {
 28247                     {
 26718                 
 28248                 
 26719                         {
 28249                         {
 26720                             identifier_c param_name("P");
 28250                             identifier_c param_name("P");
 26721                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 28251                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 26722                             symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
 28252                             symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
       
 28253                             symbol_c *P_type_symbol = NULL;
 26723                             
 28254                             
 26724                             /* Get the value from a foo(<param_value>) style call */
 28255                             /* Get the value from a foo(<param_value>) style call */
 26725                             if (P_param_value == NULL)
 28256                             if (P_param_value == NULL)
 26726                               P_param_value = function_call_param_iterator.next();
 28257                               P_param_value = function_call_param_iterator.next();
 26727                             symbol_c *P_type_symbol = search_expression_type->get_type(P_param_value);
 28258                             if (P_param_value != NULL) {
 26728                             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
 28259                               P_type_symbol = search_expression_type->get_type(P_param_value);
       
 28260                               last_type_symbol = last_type_symbol && P_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
       
 28261                             }
 26729                             
 28262                             
 26730                             if(search_expression_type->is_integer_type(P_type_symbol))
 28263                             if(P_type_symbol == NULL || search_expression_type->is_integer_type(P_type_symbol))
 26731                             {
 28264                             {
 26732                         
 28265                         
 26733                                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 28266                                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 26734                                 return return_type_symbol;
 28267                                 return return_type_symbol;
 26735                                 
 28268                                 
 26763 
 28296 
 26764         {
 28297         {
 26765             symbol_c *IN1_type_symbol = param_data_type;
 28298             symbol_c *IN1_type_symbol = param_data_type;
 26766             last_type_symbol = param_data_type;
 28299             last_type_symbol = param_data_type;
 26767             
 28300             
 26768             if(search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 28301             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
 26769             {
 28302             {
 26770         
 28303         
 26771                 {
 28304                 {
 26772                     identifier_c param_name("IN2");
 28305                     identifier_c param_name("IN2");
 26773                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 28306                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26774                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 28307                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 28308                     symbol_c *IN2_type_symbol = NULL;
 26775                     
 28309                     
 26776                     /* Get the value from a foo(<param_value>) style call */
 28310                     /* Get the value from a foo(<param_value>) style call */
 26777                     if (IN2_param_value == NULL)
 28311                     if (IN2_param_value == NULL)
 26778                       IN2_param_value = function_call_param_iterator.next();
 28312                       IN2_param_value = function_call_param_iterator.next();
 26779                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 28313                     if (IN2_param_value != NULL) {
 26780                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 28314                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26781                     
 28315                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26782                     if(search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 28316                     }
       
 28317                     
       
 28318                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol))
 26783                     {
 28319                     {
 26784                 
 28320                 
 26785                         symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 28321                         symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
 26786                         return return_type_symbol;
 28322                         return return_type_symbol;
 26787                         
 28323                         
 26791                     ERROR;
 28327                     ERROR;
 26792                 }
 28328                 }
 26793                 
 28329                 
 26794             }
 28330             }
 26795             
 28331             
 26796             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 28332             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 26797             {
 28333             {
 26798         
 28334         
 26799                 {
 28335                 {
 26800                     identifier_c param_name("IN2");
 28336                     identifier_c param_name("IN2");
 26801                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 28337                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26802                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 28338                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 28339                     symbol_c *IN2_type_symbol = NULL;
 26803                     
 28340                     
 26804                     /* Get the value from a foo(<param_value>) style call */
 28341                     /* Get the value from a foo(<param_value>) style call */
 26805                     if (IN2_param_value == NULL)
 28342                     if (IN2_param_value == NULL)
 26806                       IN2_param_value = function_call_param_iterator.next();
 28343                       IN2_param_value = function_call_param_iterator.next();
 26807                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 28344                     if (IN2_param_value != NULL) {
 26808                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 28345                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26809                     
 28346                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26810                     if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 28347                     }
       
 28348                     
       
 28349                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 26811                     {
 28350                     {
 26812                 
 28351                 
 26813                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 28352                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 26814                         return return_type_symbol;
 28353                         return return_type_symbol;
 26815                         
 28354                         
 26837 
 28376 
 26838         {
 28377         {
 26839             symbol_c *IN1_type_symbol = param_data_type;
 28378             symbol_c *IN1_type_symbol = param_data_type;
 26840             last_type_symbol = param_data_type;
 28379             last_type_symbol = param_data_type;
 26841             
 28380             
 26842             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 28381             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 26843             {
 28382             {
 26844         
 28383         
 26845                 {
 28384                 {
 26846                     identifier_c param_name("IN2");
 28385                     identifier_c param_name("IN2");
 26847                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 28386                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26848                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 28387                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 28388                     symbol_c *IN2_type_symbol = NULL;
 26849                     
 28389                     
 26850                     /* Get the value from a foo(<param_value>) style call */
 28390                     /* Get the value from a foo(<param_value>) style call */
 26851                     if (IN2_param_value == NULL)
 28391                     if (IN2_param_value == NULL)
 26852                       IN2_param_value = function_call_param_iterator.next();
 28392                       IN2_param_value = function_call_param_iterator.next();
 26853                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 28393                     if (IN2_param_value != NULL) {
 26854                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 28394                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26855                     
 28395                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26856                     if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 28396                     }
       
 28397                     
       
 28398                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 26857                     {
 28399                     {
 26858                 
 28400                 
 26859                         {
 28401                         {
 26860                             identifier_c param_name("P");
 28402                             identifier_c param_name("P");
 26861                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 28403                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 26862                             symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
 28404                             symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
       
 28405                             symbol_c *P_type_symbol = NULL;
 26863                             
 28406                             
 26864                             /* Get the value from a foo(<param_value>) style call */
 28407                             /* Get the value from a foo(<param_value>) style call */
 26865                             if (P_param_value == NULL)
 28408                             if (P_param_value == NULL)
 26866                               P_param_value = function_call_param_iterator.next();
 28409                               P_param_value = function_call_param_iterator.next();
 26867                             symbol_c *P_type_symbol = search_expression_type->get_type(P_param_value);
 28410                             if (P_param_value != NULL) {
 26868                             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
 28411                               P_type_symbol = search_expression_type->get_type(P_param_value);
       
 28412                               last_type_symbol = last_type_symbol && P_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
       
 28413                             }
 26869                             
 28414                             
 26870                             if(search_expression_type->is_integer_type(P_type_symbol))
 28415                             if(P_type_symbol == NULL || search_expression_type->is_integer_type(P_type_symbol))
 26871                             {
 28416                             {
 26872                         
 28417                         
 26873                                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 28418                                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 26874                                 return return_type_symbol;
 28419                                 return return_type_symbol;
 26875                                 
 28420                                 
 26903 
 28448 
 26904         {
 28449         {
 26905             symbol_c *IN_type_symbol = param_data_type;
 28450             symbol_c *IN_type_symbol = param_data_type;
 26906             last_type_symbol = param_data_type;
 28451             last_type_symbol = param_data_type;
 26907             
 28452             
 26908             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 28453             if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 26909             {
 28454             {
 26910         
 28455         
 26911                 {
 28456                 {
 26912                     identifier_c param_name("L");
 28457                     identifier_c param_name("L");
 26913                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 28458                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26914                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
 28459                     symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
       
 28460                     symbol_c *L_type_symbol = NULL;
 26915                     
 28461                     
 26916                     /* Get the value from a foo(<param_value>) style call */
 28462                     /* Get the value from a foo(<param_value>) style call */
 26917                     if (L_param_value == NULL)
 28463                     if (L_param_value == NULL)
 26918                       L_param_value = function_call_param_iterator.next();
 28464                       L_param_value = function_call_param_iterator.next();
 26919                     symbol_c *L_type_symbol = search_expression_type->get_type(L_param_value);
 28465                     if (L_param_value != NULL) {
 26920                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 28466                       L_type_symbol = search_expression_type->get_type(L_param_value);
 26921                     
 28467                       last_type_symbol = last_type_symbol && L_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 26922                     if(search_expression_type->is_integer_type(L_type_symbol))
 28468                     }
       
 28469                     
       
 28470                     if(L_type_symbol == NULL || search_expression_type->is_integer_type(L_type_symbol))
 26923                     {
 28471                     {
 26924                 
 28472                 
 26925                         {
 28473                         {
 26926                             identifier_c param_name("P");
 28474                             identifier_c param_name("P");
 26927                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 28475                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 26928                             symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
 28476                             symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
       
 28477                             symbol_c *P_type_symbol = NULL;
 26929                             
 28478                             
 26930                             /* Get the value from a foo(<param_value>) style call */
 28479                             /* Get the value from a foo(<param_value>) style call */
 26931                             if (P_param_value == NULL)
 28480                             if (P_param_value == NULL)
 26932                               P_param_value = function_call_param_iterator.next();
 28481                               P_param_value = function_call_param_iterator.next();
 26933                             symbol_c *P_type_symbol = search_expression_type->get_type(P_param_value);
 28482                             if (P_param_value != NULL) {
 26934                             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
 28483                               P_type_symbol = search_expression_type->get_type(P_param_value);
       
 28484                               last_type_symbol = last_type_symbol && P_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
       
 28485                             }
 26935                             
 28486                             
 26936                             if(search_expression_type->is_integer_type(P_type_symbol))
 28487                             if(P_type_symbol == NULL || search_expression_type->is_integer_type(P_type_symbol))
 26937                             {
 28488                             {
 26938                         
 28489                         
 26939                                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 28490                                 symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 26940                                 return return_type_symbol;
 28491                                 return return_type_symbol;
 26941                                 
 28492                                 
 26969 
 28520 
 26970         {
 28521         {
 26971             symbol_c *IN1_type_symbol = param_data_type;
 28522             symbol_c *IN1_type_symbol = param_data_type;
 26972             last_type_symbol = param_data_type;
 28523             last_type_symbol = param_data_type;
 26973             
 28524             
 26974             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 28525             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 26975             {
 28526             {
 26976         
 28527         
 26977                 {
 28528                 {
 26978                     identifier_c param_name("IN2");
 28529                     identifier_c param_name("IN2");
 26979                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 28530                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 26980                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 28531                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 28532                     symbol_c *IN2_type_symbol = NULL;
 26981                     
 28533                     
 26982                     /* Get the value from a foo(<param_value>) style call */
 28534                     /* Get the value from a foo(<param_value>) style call */
 26983                     if (IN2_param_value == NULL)
 28535                     if (IN2_param_value == NULL)
 26984                       IN2_param_value = function_call_param_iterator.next();
 28536                       IN2_param_value = function_call_param_iterator.next();
 26985                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 28537                     if (IN2_param_value != NULL) {
 26986                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 28538                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 26987                     
 28539                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 26988                     if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 28540                     }
       
 28541                     
       
 28542                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 26989                     {
 28543                     {
 26990                 
 28544                 
 26991                         {
 28545                         {
 26992                             identifier_c param_name("L");
 28546                             identifier_c param_name("L");
 26993                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 28547                             /* Get the value from a foo(<param_name> = <param_value>) style call */
 26994                             symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
 28548                             symbol_c *L_param_value = function_call_param_iterator.search(&param_name);
       
 28549                             symbol_c *L_type_symbol = NULL;
 26995                             
 28550                             
 26996                             /* Get the value from a foo(<param_value>) style call */
 28551                             /* Get the value from a foo(<param_value>) style call */
 26997                             if (L_param_value == NULL)
 28552                             if (L_param_value == NULL)
 26998                               L_param_value = function_call_param_iterator.next();
 28553                               L_param_value = function_call_param_iterator.next();
 26999                             symbol_c *L_type_symbol = search_expression_type->get_type(L_param_value);
 28554                             if (L_param_value != NULL) {
 27000                             last_type_symbol = last_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
 28555                               L_type_symbol = search_expression_type->get_type(L_param_value);
       
 28556                               last_type_symbol = last_type_symbol && L_type_symbol && search_expression_type->is_same_type(L_type_symbol, last_type_symbol) ? search_expression_type->common_type(L_type_symbol, last_type_symbol) : L_type_symbol ;
       
 28557                             }
 27001                             
 28558                             
 27002                             if(search_expression_type->is_integer_type(L_type_symbol))
 28559                             if(L_type_symbol == NULL || search_expression_type->is_integer_type(L_type_symbol))
 27003                             {
 28560                             {
 27004                         
 28561                         
 27005                                 {
 28562                                 {
 27006                                     identifier_c param_name("P");
 28563                                     identifier_c param_name("P");
 27007                                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 28564                                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27008                                     symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
 28565                                     symbol_c *P_param_value = function_call_param_iterator.search(&param_name);
       
 28566                                     symbol_c *P_type_symbol = NULL;
 27009                                     
 28567                                     
 27010                                     /* Get the value from a foo(<param_value>) style call */
 28568                                     /* Get the value from a foo(<param_value>) style call */
 27011                                     if (P_param_value == NULL)
 28569                                     if (P_param_value == NULL)
 27012                                       P_param_value = function_call_param_iterator.next();
 28570                                       P_param_value = function_call_param_iterator.next();
 27013                                     symbol_c *P_type_symbol = search_expression_type->get_type(P_param_value);
 28571                                     if (P_param_value != NULL) {
 27014                                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
 28572                                       P_type_symbol = search_expression_type->get_type(P_param_value);
       
 28573                                       last_type_symbol = last_type_symbol && P_type_symbol && search_expression_type->is_same_type(P_type_symbol, last_type_symbol) ? search_expression_type->common_type(P_type_symbol, last_type_symbol) : P_type_symbol ;
       
 28574                                     }
 27015                                     
 28575                                     
 27016                                     if(search_expression_type->is_integer_type(P_type_symbol))
 28576                                     if(P_type_symbol == NULL || search_expression_type->is_integer_type(P_type_symbol))
 27017                                     {
 28577                                     {
 27018                                 
 28578                                 
 27019                                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 28579                                         symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
 27020                                         return return_type_symbol;
 28580                                         return return_type_symbol;
 27021                                         
 28581                                         
 27055 
 28615 
 27056         {
 28616         {
 27057             symbol_c *IN1_type_symbol = param_data_type;
 28617             symbol_c *IN1_type_symbol = param_data_type;
 27058             last_type_symbol = param_data_type;
 28618             last_type_symbol = param_data_type;
 27059             
 28619             
 27060             if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 28620             if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 27061             {
 28621             {
 27062         
 28622         
 27063                 {
 28623                 {
 27064                     identifier_c param_name("IN2");
 28624                     identifier_c param_name("IN2");
 27065                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 28625                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 27066                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
 28626                     symbol_c *IN2_param_value = function_call_param_iterator.search(&param_name);
       
 28627                     symbol_c *IN2_type_symbol = NULL;
 27067                     
 28628                     
 27068                     /* Get the value from a foo(<param_value>) style call */
 28629                     /* Get the value from a foo(<param_value>) style call */
 27069                     if (IN2_param_value == NULL)
 28630                     if (IN2_param_value == NULL)
 27070                       IN2_param_value = function_call_param_iterator.next();
 28631                       IN2_param_value = function_call_param_iterator.next();
 27071                     symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 28632                     if (IN2_param_value != NULL) {
 27072                     last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 28633                       IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 27073                     
 28634                       last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ;
 27074                     if(search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 28635                     }
       
 28636                     
       
 28637                     if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::string_type_name, last_type_symbol))
 27075                     {
 28638                     {
 27076                 
 28639                 
 27077                         symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 28640                         symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 27078                         return return_type_symbol;
 28641                         return return_type_symbol;
 27079                         
 28642