stage4/generate_c/il_code_gen.c
changeset 165 83963465b773
parent 154 9114afe1f64b
child 169 bea932bc60b0
equal deleted inserted replaced
164:a0679c78143a 165:83963465b773
 11864             last_type_symbol = param_data_type;
 11864             last_type_symbol = param_data_type;
 11865             
 11865             
 11866             if(search_expression_type->is_real_type(IN_type_symbol))
 11866             if(search_expression_type->is_real_type(IN_type_symbol))
 11867             {
 11867             {
 11868         
 11868         
 11869                 function_name = (symbol_c*)(new pragma_c("sqrt"));
 11869                 function_name = (symbol_c*)(new pragma_c("__sqrt_"));
 11870                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 11870                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 11871                 symbol_c * return_type_symbol = IN_type_symbol;
 11871                 symbol_c * return_type_symbol = IN_type_symbol;
       
 11872                 function_type_suffix = IN_type_symbol;
 11872                 break;
 11873                 break;
 11873                 
 11874                 
 11874             }
 11875             }
 11875             
 11876             
 11876             
 11877             
 11895             last_type_symbol = param_data_type;
 11896             last_type_symbol = param_data_type;
 11896             
 11897             
 11897             if(search_expression_type->is_real_type(IN_type_symbol))
 11898             if(search_expression_type->is_real_type(IN_type_symbol))
 11898             {
 11899             {
 11899         
 11900         
 11900                 function_name = (symbol_c*)(new pragma_c("ln"));
 11901                 function_name = (symbol_c*)(new pragma_c("__ln_"));
 11901                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 11902                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 11902                 symbol_c * return_type_symbol = IN_type_symbol;
 11903                 symbol_c * return_type_symbol = IN_type_symbol;
       
 11904                 function_type_suffix = IN_type_symbol;
 11903                 break;
 11905                 break;
 11904                 
 11906                 
 11905             }
 11907             }
 11906             
 11908             
 11907             
 11909             
 11926             last_type_symbol = param_data_type;
 11928             last_type_symbol = param_data_type;
 11927             
 11929             
 11928             if(search_expression_type->is_real_type(IN_type_symbol))
 11930             if(search_expression_type->is_real_type(IN_type_symbol))
 11929             {
 11931             {
 11930         
 11932         
 11931                 function_name = (symbol_c*)(new pragma_c("log"));
 11933                 function_name = (symbol_c*)(new pragma_c("__log_"));
 11932                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 11934                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 11933                 symbol_c * return_type_symbol = IN_type_symbol;
 11935                 symbol_c * return_type_symbol = IN_type_symbol;
       
 11936                 function_type_suffix = IN_type_symbol;
 11934                 break;
 11937                 break;
 11935                 
 11938                 
 11936             }
 11939             }
 11937             
 11940             
 11938             
 11941             
 11957             last_type_symbol = param_data_type;
 11960             last_type_symbol = param_data_type;
 11958             
 11961             
 11959             if(search_expression_type->is_real_type(IN_type_symbol))
 11962             if(search_expression_type->is_real_type(IN_type_symbol))
 11960             {
 11963             {
 11961         
 11964         
 11962                 function_name = (symbol_c*)(new pragma_c("exp"));
 11965                 function_name = (symbol_c*)(new pragma_c("__exp_"));
 11963                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 11966                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 11964                 symbol_c * return_type_symbol = IN_type_symbol;
 11967                 symbol_c * return_type_symbol = IN_type_symbol;
       
 11968                 function_type_suffix = IN_type_symbol;
 11965                 break;
 11969                 break;
 11966                 
 11970                 
 11967             }
 11971             }
 11968             
 11972             
 11969             
 11973             
 11988             last_type_symbol = param_data_type;
 11992             last_type_symbol = param_data_type;
 11989             
 11993             
 11990             if(search_expression_type->is_real_type(IN_type_symbol))
 11994             if(search_expression_type->is_real_type(IN_type_symbol))
 11991             {
 11995             {
 11992         
 11996         
 11993                 function_name = (symbol_c*)(new pragma_c("sin"));
 11997                 function_name = (symbol_c*)(new pragma_c("__sin_"));
 11994                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 11998                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 11995                 symbol_c * return_type_symbol = IN_type_symbol;
 11999                 symbol_c * return_type_symbol = IN_type_symbol;
       
 12000                 function_type_suffix = IN_type_symbol;
 11996                 break;
 12001                 break;
 11997                 
 12002                 
 11998             }
 12003             }
 11999             
 12004             
 12000             
 12005             
 12019             last_type_symbol = param_data_type;
 12024             last_type_symbol = param_data_type;
 12020             
 12025             
 12021             if(search_expression_type->is_real_type(IN_type_symbol))
 12026             if(search_expression_type->is_real_type(IN_type_symbol))
 12022             {
 12027             {
 12023         
 12028         
 12024                 function_name = (symbol_c*)(new pragma_c("cos"));
 12029                 function_name = (symbol_c*)(new pragma_c("__cos_"));
 12025                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 12030                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 12026                 symbol_c * return_type_symbol = IN_type_symbol;
 12031                 symbol_c * return_type_symbol = IN_type_symbol;
       
 12032                 function_type_suffix = IN_type_symbol;
 12027                 break;
 12033                 break;
 12028                 
 12034                 
 12029             }
 12035             }
 12030             
 12036             
 12031             
 12037             
 12050             last_type_symbol = param_data_type;
 12056             last_type_symbol = param_data_type;
 12051             
 12057             
 12052             if(search_expression_type->is_real_type(IN_type_symbol))
 12058             if(search_expression_type->is_real_type(IN_type_symbol))
 12053             {
 12059             {
 12054         
 12060         
 12055                 function_name = (symbol_c*)(new pragma_c("tan"));
 12061                 function_name = (symbol_c*)(new pragma_c("__tan_"));
 12056                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 12062                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 12057                 symbol_c * return_type_symbol = IN_type_symbol;
 12063                 symbol_c * return_type_symbol = IN_type_symbol;
       
 12064                 function_type_suffix = IN_type_symbol;
 12058                 break;
 12065                 break;
 12059                 
 12066                 
 12060             }
 12067             }
 12061             
 12068             
 12062             
 12069             
 12081             last_type_symbol = param_data_type;
 12088             last_type_symbol = param_data_type;
 12082             
 12089             
 12083             if(search_expression_type->is_real_type(IN_type_symbol))
 12090             if(search_expression_type->is_real_type(IN_type_symbol))
 12084             {
 12091             {
 12085         
 12092         
 12086                 function_name = (symbol_c*)(new pragma_c("asin"));
 12093                 function_name = (symbol_c*)(new pragma_c("__asin_"));
 12087                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 12094                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 12088                 symbol_c * return_type_symbol = IN_type_symbol;
 12095                 symbol_c * return_type_symbol = IN_type_symbol;
       
 12096                 function_type_suffix = IN_type_symbol;
 12089                 break;
 12097                 break;
 12090                 
 12098                 
 12091             }
 12099             }
 12092             
 12100             
 12093             
 12101             
 12112             last_type_symbol = param_data_type;
 12120             last_type_symbol = param_data_type;
 12113             
 12121             
 12114             if(search_expression_type->is_real_type(IN_type_symbol))
 12122             if(search_expression_type->is_real_type(IN_type_symbol))
 12115             {
 12123             {
 12116         
 12124         
 12117                 function_name = (symbol_c*)(new pragma_c("acos"));
 12125                 function_name = (symbol_c*)(new pragma_c("__acos_"));
 12118                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 12126                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 12119                 symbol_c * return_type_symbol = IN_type_symbol;
 12127                 symbol_c * return_type_symbol = IN_type_symbol;
       
 12128                 function_type_suffix = IN_type_symbol;
 12120                 break;
 12129                 break;
 12121                 
 12130                 
 12122             }
 12131             }
 12123             
 12132             
 12124             
 12133             
 12143             last_type_symbol = param_data_type;
 12152             last_type_symbol = param_data_type;
 12144             
 12153             
 12145             if(search_expression_type->is_real_type(IN_type_symbol))
 12154             if(search_expression_type->is_real_type(IN_type_symbol))
 12146             {
 12155             {
 12147         
 12156         
 12148                 function_name = (symbol_c*)(new pragma_c("atan"));
 12157                 function_name = (symbol_c*)(new pragma_c("__atan_"));
 12149                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 12158                 ADD_PARAM_LIST(IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in)
 12150                 symbol_c * return_type_symbol = IN_type_symbol;
 12159                 symbol_c * return_type_symbol = IN_type_symbol;
       
 12160                 function_type_suffix = IN_type_symbol;
 12151                 break;
 12161                 break;
 12152                 
 12162                 
 12153             }
 12163             }
 12154             
 12164             
 12155             
 12165             
 12791             symbol_c *IN1_param_value = &this->default_variable_name;
 12801             symbol_c *IN1_param_value = &this->default_variable_name;
 12792         
 12802         
 12793             symbol_c *IN1_type_symbol = param_data_type;
 12803             symbol_c *IN1_type_symbol = param_data_type;
 12794             last_type_symbol = param_data_type;
 12804             last_type_symbol = param_data_type;
 12795             
 12805             
 12796             if(search_expression_type->is_num_type(IN1_type_symbol))
 12806             if(search_expression_type->is_real_type(IN1_type_symbol))
 12797             {
 12807             {
 12798         
 12808         
 12799                 {
 12809                 {
 12800                     identifier_c param_name("IN2");
 12810                     identifier_c param_name("IN2");
 12801                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 12811                     /* Get the value from a foo(<param_name> = <param_value>) style call */
 12808                     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 ;
 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 ;
 12809                     
 12819                     
 12810                     if(search_expression_type->is_num_type(IN2_type_symbol))
 12820                     if(search_expression_type->is_num_type(IN2_type_symbol))
 12811                     {
 12821                     {
 12812                 
 12822                 
 12813                         function_name = (symbol_c*)(new pragma_c("pow"));
 12823                         function_name = (symbol_c*)(new pragma_c("__expt_"));
 12814                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 12824                         ADD_PARAM_LIST(IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in)
 12815                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 12825                         ADD_PARAM_LIST(IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in)
 12816                         symbol_c * return_type_symbol = last_type_symbol;
 12826                         symbol_c * return_type_symbol = last_type_symbol;
       
 12827                         function_type_suffix = IN1_type_symbol;
 12817                         break;
 12828                         break;
 12818                         
 12829                         
 12819                     }
 12830                     }
 12820                     
 12831                     
 12821                     
 12832