stage4/generate_cc/st_code_gen.c
changeset 34 a793b010e371
parent 33 4507beb2aac6
child 35 9f3d6c089533
equal deleted inserted replaced
33:4507beb2aac6 34:a793b010e371
 16033 			if (IN_param_value == NULL)
 16033 			if (IN_param_value == NULL)
 16034 			  IN_param_value = function_call_param_iterator.next();
 16034 			  IN_param_value = function_call_param_iterator.next();
 16035 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16035 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16036 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16036 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16037 			
 16037 			
 16038 			if(search_expression_type->is_real_type(IN_param_value))
 16038 			if(search_expression_type->is_real_type(IN_type_symbol))
 16039 			{
 16039 			{
 16040 		
 16040 		
 16041 				symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 16041 				symbol_c * return_type_symbol = &search_constant_type_c::constant_int_type_name;
 16042 				s4o.print("(int)");
 16042 				s4o.print("(int)");
 16043 				IN_param_value->accept(*this);
 16043 				IN_param_value->accept(*this);
 16067 			if (IN_param_value == NULL)
 16067 			if (IN_param_value == NULL)
 16068 			  IN_param_value = function_call_param_iterator.next();
 16068 			  IN_param_value = function_call_param_iterator.next();
 16069 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16069 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16070 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16070 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16071 			
 16071 			
 16072 			if(search_expression_type->is_binary_type(IN_param_value))
 16072 			if(search_expression_type->is_binary_type(IN_type_symbol))
 16073 			{
 16073 			{
 16074 		
 16074 		
 16075 				symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 16075 				symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
 16076 				s4o.print("__bcd_to_something(sizeof(");
 16076 				s4o.print("__bcd_to_something(sizeof(");
 16077 				IN_type_symbol->accept(*this);
 16077 				IN_type_symbol->accept(*this);
 16104 			if (IN_param_value == NULL)
 16104 			if (IN_param_value == NULL)
 16105 			  IN_param_value = function_call_param_iterator.next();
 16105 			  IN_param_value = function_call_param_iterator.next();
 16106 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16106 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16107 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16107 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16108 			
 16108 			
 16109 			if(search_expression_type->is_binary_type(IN_param_value))
 16109 			if(search_expression_type->is_binary_type(IN_type_symbol))
 16110 			{
 16110 			{
 16111 		
 16111 		
 16112 				symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 16112 				symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
 16113 				s4o.print("__bcd_to_something(sizeof(");
 16113 				s4o.print("__bcd_to_something(sizeof(");
 16114 				IN_type_symbol->accept(*this);
 16114 				IN_type_symbol->accept(*this);
 16141 			if (IN_param_value == NULL)
 16141 			if (IN_param_value == NULL)
 16142 			  IN_param_value = function_call_param_iterator.next();
 16142 			  IN_param_value = function_call_param_iterator.next();
 16143 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16143 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16144 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16144 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16145 			
 16145 			
 16146 			if(search_expression_type->is_binary_type(IN_param_value))
 16146 			if(search_expression_type->is_binary_type(IN_type_symbol))
 16147 			{
 16147 			{
 16148 		
 16148 		
 16149 				symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 16149 				symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
 16150 				s4o.print("__bcd_to_something(sizeof(");
 16150 				s4o.print("__bcd_to_something(sizeof(");
 16151 				IN_type_symbol->accept(*this);
 16151 				IN_type_symbol->accept(*this);
 16178 			if (IN_param_value == NULL)
 16178 			if (IN_param_value == NULL)
 16179 			  IN_param_value = function_call_param_iterator.next();
 16179 			  IN_param_value = function_call_param_iterator.next();
 16180 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16180 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16181 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16181 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16182 			
 16182 			
 16183 			if(search_expression_type->is_binary_type(IN_param_value))
 16183 			if(search_expression_type->is_binary_type(IN_type_symbol))
 16184 			{
 16184 			{
 16185 		
 16185 		
 16186 				symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 16186 				symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
 16187 				s4o.print("__bcd_to_something(sizeof(");
 16187 				s4o.print("__bcd_to_something(sizeof(");
 16188 				IN_type_symbol->accept(*this);
 16188 				IN_type_symbol->accept(*this);
 16215 			if (IN_param_value == NULL)
 16215 			if (IN_param_value == NULL)
 16216 			  IN_param_value = function_call_param_iterator.next();
 16216 			  IN_param_value = function_call_param_iterator.next();
 16217 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16217 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16218 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16218 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16219 			
 16219 			
 16220 			if(search_expression_type->is_binary_type(IN_param_value))
 16220 			if(search_expression_type->is_binary_type(IN_type_symbol))
 16221 			{
 16221 			{
 16222 		
 16222 		
 16223 				symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 16223 				symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
 16224 				s4o.print("__bcd_to_something(sizeof(");
 16224 				s4o.print("__bcd_to_something(sizeof(");
 16225 				IN_type_symbol->accept(*this);
 16225 				IN_type_symbol->accept(*this);
 16252 			if (IN_param_value == NULL)
 16252 			if (IN_param_value == NULL)
 16253 			  IN_param_value = function_call_param_iterator.next();
 16253 			  IN_param_value = function_call_param_iterator.next();
 16254 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16254 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16255 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16255 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16256 			
 16256 			
 16257 			if(search_expression_type->is_binary_type(IN_param_value))
 16257 			if(search_expression_type->is_binary_type(IN_type_symbol))
 16258 			{
 16258 			{
 16259 		
 16259 		
 16260 				symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 16260 				symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
 16261 				s4o.print("__bcd_to_something(sizeof(");
 16261 				s4o.print("__bcd_to_something(sizeof(");
 16262 				IN_type_symbol->accept(*this);
 16262 				IN_type_symbol->accept(*this);
 16289 			if (IN_param_value == NULL)
 16289 			if (IN_param_value == NULL)
 16290 			  IN_param_value = function_call_param_iterator.next();
 16290 			  IN_param_value = function_call_param_iterator.next();
 16291 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16291 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16292 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16292 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16293 			
 16293 			
 16294 			if(search_expression_type->is_binary_type(IN_param_value))
 16294 			if(search_expression_type->is_binary_type(IN_type_symbol))
 16295 			{
 16295 			{
 16296 		
 16296 		
 16297 				symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 16297 				symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
 16298 				s4o.print("__bcd_to_something(sizeof(");
 16298 				s4o.print("__bcd_to_something(sizeof(");
 16299 				IN_type_symbol->accept(*this);
 16299 				IN_type_symbol->accept(*this);
 16326 			if (IN_param_value == NULL)
 16326 			if (IN_param_value == NULL)
 16327 			  IN_param_value = function_call_param_iterator.next();
 16327 			  IN_param_value = function_call_param_iterator.next();
 16328 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16328 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16329 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16329 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16330 			
 16330 			
 16331 			if(search_expression_type->is_binary_type(IN_param_value))
 16331 			if(search_expression_type->is_binary_type(IN_type_symbol))
 16332 			{
 16332 			{
 16333 		
 16333 		
 16334 				symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 16334 				symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
 16335 				s4o.print("__bcd_to_something(sizeof(");
 16335 				s4o.print("__bcd_to_something(sizeof(");
 16336 				IN_type_symbol->accept(*this);
 16336 				IN_type_symbol->accept(*this);
 16729 			if (IN_param_value == NULL)
 16729 			if (IN_param_value == NULL)
 16730 			  IN_param_value = function_call_param_iterator.next();
 16730 			  IN_param_value = function_call_param_iterator.next();
 16731 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16731 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16732 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16732 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16733 			
 16733 			
 16734 			if(search_expression_type->is_num_type(IN_param_value))
 16734 			if(search_expression_type->is_num_type(IN_type_symbol))
 16735 			{
 16735 			{
 16736 		
 16736 		
 16737 				symbol_c * return_type_symbol = IN_type_symbol;
 16737 				symbol_c * return_type_symbol = IN_type_symbol;
 16738 				s4o.print("__abs_");
 16738 				s4o.print("__abs_");
 16739 				IN_type_symbol->accept(*this);
 16739 				IN_type_symbol->accept(*this);
 16766 			if (IN_param_value == NULL)
 16766 			if (IN_param_value == NULL)
 16767 			  IN_param_value = function_call_param_iterator.next();
 16767 			  IN_param_value = function_call_param_iterator.next();
 16768 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16768 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16769 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16769 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16770 			
 16770 			
 16771 			if(search_expression_type->is_real_type(IN_param_value))
 16771 			if(search_expression_type->is_real_type(IN_type_symbol))
 16772 			{
 16772 			{
 16773 		
 16773 		
 16774 				symbol_c * return_type_symbol = IN_type_symbol;
 16774 				symbol_c * return_type_symbol = IN_type_symbol;
 16775 				s4o.print("sqrt(");
 16775 				s4o.print("sqrt(");
 16776 				IN_param_value->accept(*this);
 16776 				IN_param_value->accept(*this);
 16801 			if (IN_param_value == NULL)
 16801 			if (IN_param_value == NULL)
 16802 			  IN_param_value = function_call_param_iterator.next();
 16802 			  IN_param_value = function_call_param_iterator.next();
 16803 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16803 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16804 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16804 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16805 			
 16805 			
 16806 			if(search_expression_type->is_real_type(IN_param_value))
 16806 			if(search_expression_type->is_real_type(IN_type_symbol))
 16807 			{
 16807 			{
 16808 		
 16808 		
 16809 				symbol_c * return_type_symbol = IN_type_symbol;
 16809 				symbol_c * return_type_symbol = IN_type_symbol;
 16810 				s4o.print("ln(");
 16810 				s4o.print("ln(");
 16811 				IN_param_value->accept(*this);
 16811 				IN_param_value->accept(*this);
 16836 			if (IN_param_value == NULL)
 16836 			if (IN_param_value == NULL)
 16837 			  IN_param_value = function_call_param_iterator.next();
 16837 			  IN_param_value = function_call_param_iterator.next();
 16838 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16838 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16839 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16839 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16840 			
 16840 			
 16841 			if(search_expression_type->is_real_type(IN_param_value))
 16841 			if(search_expression_type->is_real_type(IN_type_symbol))
 16842 			{
 16842 			{
 16843 		
 16843 		
 16844 				symbol_c * return_type_symbol = IN_type_symbol;
 16844 				symbol_c * return_type_symbol = IN_type_symbol;
 16845 				s4o.print("log(");
 16845 				s4o.print("log(");
 16846 				IN_param_value->accept(*this);
 16846 				IN_param_value->accept(*this);
 16871 			if (IN_param_value == NULL)
 16871 			if (IN_param_value == NULL)
 16872 			  IN_param_value = function_call_param_iterator.next();
 16872 			  IN_param_value = function_call_param_iterator.next();
 16873 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16873 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16874 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16874 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16875 			
 16875 			
 16876 			if(search_expression_type->is_real_type(IN_param_value))
 16876 			if(search_expression_type->is_real_type(IN_type_symbol))
 16877 			{
 16877 			{
 16878 		
 16878 		
 16879 				symbol_c * return_type_symbol = IN_type_symbol;
 16879 				symbol_c * return_type_symbol = IN_type_symbol;
 16880 				s4o.print("exp(");
 16880 				s4o.print("exp(");
 16881 				IN_param_value->accept(*this);
 16881 				IN_param_value->accept(*this);
 16906 			if (IN_param_value == NULL)
 16906 			if (IN_param_value == NULL)
 16907 			  IN_param_value = function_call_param_iterator.next();
 16907 			  IN_param_value = function_call_param_iterator.next();
 16908 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16908 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16909 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16909 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16910 			
 16910 			
 16911 			if(search_expression_type->is_real_type(IN_param_value))
 16911 			if(search_expression_type->is_real_type(IN_type_symbol))
 16912 			{
 16912 			{
 16913 		
 16913 		
 16914 				symbol_c * return_type_symbol = IN_type_symbol;
 16914 				symbol_c * return_type_symbol = IN_type_symbol;
 16915 				s4o.print("sin(");
 16915 				s4o.print("sin(");
 16916 				IN_param_value->accept(*this);
 16916 				IN_param_value->accept(*this);
 16941 			if (IN_param_value == NULL)
 16941 			if (IN_param_value == NULL)
 16942 			  IN_param_value = function_call_param_iterator.next();
 16942 			  IN_param_value = function_call_param_iterator.next();
 16943 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16943 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16944 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16944 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16945 			
 16945 			
 16946 			if(search_expression_type->is_real_type(IN_param_value))
 16946 			if(search_expression_type->is_real_type(IN_type_symbol))
 16947 			{
 16947 			{
 16948 		
 16948 		
 16949 				symbol_c * return_type_symbol = IN_type_symbol;
 16949 				symbol_c * return_type_symbol = IN_type_symbol;
 16950 				s4o.print("cos(");
 16950 				s4o.print("cos(");
 16951 				IN_param_value->accept(*this);
 16951 				IN_param_value->accept(*this);
 16976 			if (IN_param_value == NULL)
 16976 			if (IN_param_value == NULL)
 16977 			  IN_param_value = function_call_param_iterator.next();
 16977 			  IN_param_value = function_call_param_iterator.next();
 16978 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16978 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 16979 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16979 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 16980 			
 16980 			
 16981 			if(search_expression_type->is_real_type(IN_param_value))
 16981 			if(search_expression_type->is_real_type(IN_type_symbol))
 16982 			{
 16982 			{
 16983 		
 16983 		
 16984 				symbol_c * return_type_symbol = IN_type_symbol;
 16984 				symbol_c * return_type_symbol = IN_type_symbol;
 16985 				s4o.print("tan(");
 16985 				s4o.print("tan(");
 16986 				IN_param_value->accept(*this);
 16986 				IN_param_value->accept(*this);
 17011 			if (IN_param_value == NULL)
 17011 			if (IN_param_value == NULL)
 17012 			  IN_param_value = function_call_param_iterator.next();
 17012 			  IN_param_value = function_call_param_iterator.next();
 17013 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 17013 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 17014 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 17014 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 17015 			
 17015 			
 17016 			if(search_expression_type->is_real_type(IN_param_value))
 17016 			if(search_expression_type->is_real_type(IN_type_symbol))
 17017 			{
 17017 			{
 17018 		
 17018 		
 17019 				symbol_c * return_type_symbol = IN_type_symbol;
 17019 				symbol_c * return_type_symbol = IN_type_symbol;
 17020 				s4o.print("asin(");
 17020 				s4o.print("asin(");
 17021 				IN_param_value->accept(*this);
 17021 				IN_param_value->accept(*this);
 17046 			if (IN_param_value == NULL)
 17046 			if (IN_param_value == NULL)
 17047 			  IN_param_value = function_call_param_iterator.next();
 17047 			  IN_param_value = function_call_param_iterator.next();
 17048 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 17048 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 17049 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 17049 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 17050 			
 17050 			
 17051 			if(search_expression_type->is_real_type(IN_param_value))
 17051 			if(search_expression_type->is_real_type(IN_type_symbol))
 17052 			{
 17052 			{
 17053 		
 17053 		
 17054 				symbol_c * return_type_symbol = IN_type_symbol;
 17054 				symbol_c * return_type_symbol = IN_type_symbol;
 17055 				s4o.print("acos(");
 17055 				s4o.print("acos(");
 17056 				IN_param_value->accept(*this);
 17056 				IN_param_value->accept(*this);
 17081 			if (IN_param_value == NULL)
 17081 			if (IN_param_value == NULL)
 17082 			  IN_param_value = function_call_param_iterator.next();
 17082 			  IN_param_value = function_call_param_iterator.next();
 17083 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 17083 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 17084 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 17084 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 17085 			
 17085 			
 17086 			if(search_expression_type->is_real_type(IN_param_value))
 17086 			if(search_expression_type->is_real_type(IN_type_symbol))
 17087 			{
 17087 			{
 17088 		
 17088 		
 17089 				symbol_c * return_type_symbol = IN_type_symbol;
 17089 				symbol_c * return_type_symbol = IN_type_symbol;
 17090 				s4o.print("atan(");
 17090 				s4o.print("atan(");
 17091 				IN_param_value->accept(*this);
 17091 				IN_param_value->accept(*this);
 17116 			if (IN1_param_value == NULL)
 17116 			if (IN1_param_value == NULL)
 17117 			  IN1_param_value = function_call_param_iterator.next();
 17117 			  IN1_param_value = function_call_param_iterator.next();
 17118 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 17118 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 17119 			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 ;
 17119 			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 ;
 17120 			
 17120 			
 17121 			if(search_expression_type->is_num_type(IN1_param_value))
 17121 			if(search_expression_type->is_num_type(IN1_type_symbol))
 17122 			{
 17122 			{
 17123 		
 17123 		
 17124 				{
 17124 				{
 17125 					identifier_c param_name("IN2");
 17125 					identifier_c param_name("IN2");
 17126 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17126 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17130 					if (IN2_param_value == NULL)
 17130 					if (IN2_param_value == NULL)
 17131 					  IN2_param_value = function_call_param_iterator.next();
 17131 					  IN2_param_value = function_call_param_iterator.next();
 17132 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17132 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17133 					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 ;
 17133 					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 ;
 17134 					
 17134 					
 17135 					if(search_expression_type->is_num_type(IN2_param_value))
 17135 					if(search_expression_type->is_num_type(IN2_type_symbol))
 17136 					{
 17136 					{
 17137 				
 17137 				
 17138 						symbol_c * return_type_symbol = last_type_symbol;
 17138 						symbol_c * return_type_symbol = last_type_symbol;
 17139 						s4o.print("(");
 17139 						s4o.print("(");
 17140 						IN1_param_value->accept(*this);
 17140 						IN1_param_value->accept(*this);
 17294 			if (IN1_param_value == NULL)
 17294 			if (IN1_param_value == NULL)
 17295 			  IN1_param_value = function_call_param_iterator.next();
 17295 			  IN1_param_value = function_call_param_iterator.next();
 17296 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 17296 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 17297 			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 ;
 17297 			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 ;
 17298 			
 17298 			
 17299 			if(search_expression_type->is_num_type(IN1_param_value))
 17299 			if(search_expression_type->is_num_type(IN1_type_symbol))
 17300 			{
 17300 			{
 17301 		
 17301 		
 17302 				{
 17302 				{
 17303 					identifier_c param_name("IN2");
 17303 					identifier_c param_name("IN2");
 17304 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17304 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17308 					if (IN2_param_value == NULL)
 17308 					if (IN2_param_value == NULL)
 17309 					  IN2_param_value = function_call_param_iterator.next();
 17309 					  IN2_param_value = function_call_param_iterator.next();
 17310 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17310 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17311 					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 ;
 17311 					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 ;
 17312 					
 17312 					
 17313 					if(search_expression_type->is_num_type(IN2_param_value))
 17313 					if(search_expression_type->is_num_type(IN2_type_symbol))
 17314 					{
 17314 					{
 17315 				
 17315 				
 17316 						symbol_c * return_type_symbol = last_type_symbol;
 17316 						symbol_c * return_type_symbol = last_type_symbol;
 17317 						s4o.print("(");
 17317 						s4o.print("(");
 17318 						IN1_param_value->accept(*this);
 17318 						IN1_param_value->accept(*this);
 17366 					if (IN2_param_value == NULL)
 17366 					if (IN2_param_value == NULL)
 17367 					  IN2_param_value = function_call_param_iterator.next();
 17367 					  IN2_param_value = function_call_param_iterator.next();
 17368 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17368 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17369 					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 ;
 17369 					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 ;
 17370 					
 17370 					
 17371 					if(search_expression_type->is_num_type(IN2_param_value))
 17371 					if(search_expression_type->is_num_type(IN2_type_symbol))
 17372 					{
 17372 					{
 17373 				
 17373 				
 17374 						symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 17374 						symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 17375 						s4o.print("__time_mul(&");
 17375 						s4o.print("__time_mul(&");
 17376 						IN1_param_value->accept(*this);
 17376 						IN1_param_value->accept(*this);
 17408 			if (IN1_param_value == NULL)
 17408 			if (IN1_param_value == NULL)
 17409 			  IN1_param_value = function_call_param_iterator.next();
 17409 			  IN1_param_value = function_call_param_iterator.next();
 17410 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 17410 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 17411 			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 ;
 17411 			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 ;
 17412 			
 17412 			
 17413 			if(search_expression_type->is_num_type(IN1_param_value))
 17413 			if(search_expression_type->is_num_type(IN1_type_symbol))
 17414 			{
 17414 			{
 17415 		
 17415 		
 17416 				{
 17416 				{
 17417 					identifier_c param_name("IN2");
 17417 					identifier_c param_name("IN2");
 17418 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17418 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17422 					if (IN2_param_value == NULL)
 17422 					if (IN2_param_value == NULL)
 17423 					  IN2_param_value = function_call_param_iterator.next();
 17423 					  IN2_param_value = function_call_param_iterator.next();
 17424 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17424 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17425 					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 ;
 17425 					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 ;
 17426 					
 17426 					
 17427 					if(search_expression_type->is_num_type(IN2_param_value))
 17427 					if(search_expression_type->is_num_type(IN2_type_symbol))
 17428 					{
 17428 					{
 17429 				
 17429 				
 17430 						symbol_c * return_type_symbol = last_type_symbol;
 17430 						symbol_c * return_type_symbol = last_type_symbol;
 17431 						s4o.print("(");
 17431 						s4o.print("(");
 17432 						IN1_param_value->accept(*this);
 17432 						IN1_param_value->accept(*this);
 17618 			if (IN1_param_value == NULL)
 17618 			if (IN1_param_value == NULL)
 17619 			  IN1_param_value = function_call_param_iterator.next();
 17619 			  IN1_param_value = function_call_param_iterator.next();
 17620 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 17620 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 17621 			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 ;
 17621 			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 ;
 17622 			
 17622 			
 17623 			if(search_expression_type->is_num_type(IN1_param_value))
 17623 			if(search_expression_type->is_num_type(IN1_type_symbol))
 17624 			{
 17624 			{
 17625 		
 17625 		
 17626 				{
 17626 				{
 17627 					identifier_c param_name("IN2");
 17627 					identifier_c param_name("IN2");
 17628 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17628 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17632 					if (IN2_param_value == NULL)
 17632 					if (IN2_param_value == NULL)
 17633 					  IN2_param_value = function_call_param_iterator.next();
 17633 					  IN2_param_value = function_call_param_iterator.next();
 17634 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17634 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17635 					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 ;
 17635 					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 ;
 17636 					
 17636 					
 17637 					if(search_expression_type->is_num_type(IN2_param_value))
 17637 					if(search_expression_type->is_num_type(IN2_type_symbol))
 17638 					{
 17638 					{
 17639 				
 17639 				
 17640 						symbol_c * return_type_symbol = last_type_symbol;
 17640 						symbol_c * return_type_symbol = last_type_symbol;
 17641 						s4o.print("(");
 17641 						s4o.print("(");
 17642 						IN1_param_value->accept(*this);
 17642 						IN1_param_value->accept(*this);
 17664 					if (IN2_param_value == NULL)
 17664 					if (IN2_param_value == NULL)
 17665 					  IN2_param_value = function_call_param_iterator.next();
 17665 					  IN2_param_value = function_call_param_iterator.next();
 17666 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17666 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17667 					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 ;
 17667 					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 ;
 17668 					
 17668 					
 17669 					if(search_expression_type->is_num_type(IN2_param_value))
 17669 					if(search_expression_type->is_num_type(IN2_type_symbol))
 17670 					{
 17670 					{
 17671 				
 17671 				
 17672 						symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 17672 						symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
 17673 						s4o.print("__time_div(&");
 17673 						s4o.print("__time_div(&");
 17674 						IN1_param_value->accept(*this);
 17674 						IN1_param_value->accept(*this);
 17706 			if (IN1_param_value == NULL)
 17706 			if (IN1_param_value == NULL)
 17707 			  IN1_param_value = function_call_param_iterator.next();
 17707 			  IN1_param_value = function_call_param_iterator.next();
 17708 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 17708 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 17709 			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 ;
 17709 			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 ;
 17710 			
 17710 			
 17711 			if(search_expression_type->is_num_type(IN1_param_value))
 17711 			if(search_expression_type->is_num_type(IN1_type_symbol))
 17712 			{
 17712 			{
 17713 		
 17713 		
 17714 				{
 17714 				{
 17715 					identifier_c param_name("IN2");
 17715 					identifier_c param_name("IN2");
 17716 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17716 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17720 					if (IN2_param_value == NULL)
 17720 					if (IN2_param_value == NULL)
 17721 					  IN2_param_value = function_call_param_iterator.next();
 17721 					  IN2_param_value = function_call_param_iterator.next();
 17722 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17722 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17723 					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 ;
 17723 					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 ;
 17724 					
 17724 					
 17725 					if(search_expression_type->is_num_type(IN2_param_value))
 17725 					if(search_expression_type->is_num_type(IN2_type_symbol))
 17726 					{
 17726 					{
 17727 				
 17727 				
 17728 						symbol_c * return_type_symbol = last_type_symbol;
 17728 						symbol_c * return_type_symbol = last_type_symbol;
 17729 						s4o.print("(");
 17729 						s4o.print("(");
 17730 						IN1_param_value->accept(*this);
 17730 						IN1_param_value->accept(*this);
 17762 			if (IN1_param_value == NULL)
 17762 			if (IN1_param_value == NULL)
 17763 			  IN1_param_value = function_call_param_iterator.next();
 17763 			  IN1_param_value = function_call_param_iterator.next();
 17764 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 17764 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 17765 			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 ;
 17765 			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 ;
 17766 			
 17766 			
 17767 			if(search_expression_type->is_num_type(IN1_param_value))
 17767 			if(search_expression_type->is_num_type(IN1_type_symbol))
 17768 			{
 17768 			{
 17769 		
 17769 		
 17770 				{
 17770 				{
 17771 					identifier_c param_name("IN2");
 17771 					identifier_c param_name("IN2");
 17772 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17772 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17776 					if (IN2_param_value == NULL)
 17776 					if (IN2_param_value == NULL)
 17777 					  IN2_param_value = function_call_param_iterator.next();
 17777 					  IN2_param_value = function_call_param_iterator.next();
 17778 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17778 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 17779 					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 ;
 17779 					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 ;
 17780 					
 17780 					
 17781 					if(search_expression_type->is_num_type(IN2_param_value))
 17781 					if(search_expression_type->is_num_type(IN2_type_symbol))
 17782 					{
 17782 					{
 17783 				
 17783 				
 17784 						symbol_c * return_type_symbol = last_type_symbol;
 17784 						symbol_c * return_type_symbol = last_type_symbol;
 17785 						s4o.print("pow(&");
 17785 						s4o.print("pow(&");
 17786 						IN1_param_value->accept(*this);
 17786 						IN1_param_value->accept(*this);
 17818 			if (IN_param_value == NULL)
 17818 			if (IN_param_value == NULL)
 17819 			  IN_param_value = function_call_param_iterator.next();
 17819 			  IN_param_value = function_call_param_iterator.next();
 17820 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 17820 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 17821 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 17821 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 17822 			
 17822 			
 17823 			if(search_expression_type->is_num_type(IN_param_value))
 17823 			if(search_expression_type->is_num_type(IN_type_symbol))
 17824 			{
 17824 			{
 17825 		
 17825 		
 17826 				symbol_c * return_type_symbol = last_type_symbol;
 17826 				symbol_c * return_type_symbol = last_type_symbol;
 17827 				IN_param_value->accept(*this);
 17827 				IN_param_value->accept(*this);
 17828 				return NULL;
 17828 				return NULL;
 17851 			if (IN_param_value == NULL)
 17851 			if (IN_param_value == NULL)
 17852 			  IN_param_value = function_call_param_iterator.next();
 17852 			  IN_param_value = function_call_param_iterator.next();
 17853 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 17853 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 17854 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 17854 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 17855 			
 17855 			
 17856 			if(search_expression_type->is_binary_type(IN_param_value))
 17856 			if(search_expression_type->is_binary_type(IN_type_symbol))
 17857 			{
 17857 			{
 17858 		
 17858 		
 17859 				{
 17859 				{
 17860 					identifier_c param_name("N");
 17860 					identifier_c param_name("N");
 17861 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17861 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17905 			if (IN_param_value == NULL)
 17905 			if (IN_param_value == NULL)
 17906 			  IN_param_value = function_call_param_iterator.next();
 17906 			  IN_param_value = function_call_param_iterator.next();
 17907 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 17907 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 17908 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 17908 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 17909 			
 17909 			
 17910 			if(search_expression_type->is_binary_type(IN_param_value))
 17910 			if(search_expression_type->is_binary_type(IN_type_symbol))
 17911 			{
 17911 			{
 17912 		
 17912 		
 17913 				{
 17913 				{
 17914 					identifier_c param_name("N");
 17914 					identifier_c param_name("N");
 17915 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17915 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17959 			if (IN_param_value == NULL)
 17959 			if (IN_param_value == NULL)
 17960 			  IN_param_value = function_call_param_iterator.next();
 17960 			  IN_param_value = function_call_param_iterator.next();
 17961 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 17961 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 17962 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 17962 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 17963 			
 17963 			
 17964 			if(search_expression_type->is_binary_type(IN_param_value))
 17964 			if(search_expression_type->is_binary_type(IN_type_symbol))
 17965 			{
 17965 			{
 17966 		
 17966 		
 17967 				{
 17967 				{
 17968 					identifier_c param_name("N");
 17968 					identifier_c param_name("N");
 17969 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 17969 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 18017 			if (IN_param_value == NULL)
 18017 			if (IN_param_value == NULL)
 18018 			  IN_param_value = function_call_param_iterator.next();
 18018 			  IN_param_value = function_call_param_iterator.next();
 18019 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 18019 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 18020 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 18020 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 18021 			
 18021 			
 18022 			if(search_expression_type->is_binary_type(IN_param_value))
 18022 			if(search_expression_type->is_binary_type(IN_type_symbol))
 18023 			{
 18023 			{
 18024 		
 18024 		
 18025 				{
 18025 				{
 18026 					identifier_c param_name("N");
 18026 					identifier_c param_name("N");
 18027 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 18027 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 18075 			if (IN1_param_value == NULL)
 18075 			if (IN1_param_value == NULL)
 18076 			  IN1_param_value = function_call_param_iterator.next();
 18076 			  IN1_param_value = function_call_param_iterator.next();
 18077 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 18077 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 18078 			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 ;
 18078 			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 ;
 18079 			
 18079 			
 18080 			if(search_expression_type->is_binary_type(IN1_param_value))
 18080 			if(search_expression_type->is_binary_type(IN1_type_symbol))
 18081 			{
 18081 			{
 18082 		
 18082 		
 18083 				{
 18083 				{
 18084 					identifier_c param_name("IN2");
 18084 					identifier_c param_name("IN2");
 18085 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 18085 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 18089 					if (IN2_param_value == NULL)
 18089 					if (IN2_param_value == NULL)
 18090 					  IN2_param_value = function_call_param_iterator.next();
 18090 					  IN2_param_value = function_call_param_iterator.next();
 18091 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 18091 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 18092 					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 ;
 18092 					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 ;
 18093 					
 18093 					
 18094 					if(search_expression_type->is_binary_type(IN2_param_value))
 18094 					if(search_expression_type->is_binary_type(IN2_type_symbol))
 18095 					{
 18095 					{
 18096 				
 18096 				
 18097 						symbol_c * return_type_symbol = last_type_symbol;
 18097 						symbol_c * return_type_symbol = last_type_symbol;
 18098 						s4o.print("(");
 18098 						s4o.print("(");
       
 18099 						if (search_expression_type->is_bool_type(last_type_symbol))
       
 18100 						  s4o.print("(");
 18099 						IN1_param_value->accept(*this);
 18101 						IN1_param_value->accept(*this);
 18100 						s4o.print("&");
 18102 						s4o.print("&");
 18101 						IN2_param_value->accept(*this);
 18103 						IN2_param_value->accept(*this);
 18102 						
 18104 						
 18103 						int base_num = 3;
 18105 						int base_num = 3;
 18123 								
 18125 								
 18124 							}
 18126 							}
 18125 							
 18127 							
 18126 						}while(param_value != NULL);
 18128 						}while(param_value != NULL);
 18127 						s4o.print(")");
 18129 						s4o.print(")");
       
 18130 						if (search_expression_type->is_bool_type(last_type_symbol)) {
       
 18131 						  s4o.print("&1");
       
 18132 						  s4o.print(")");
       
 18133 						}
       
 18134 						s4o.print("");
 18128 						return NULL;
 18135 						return NULL;
 18129 						
 18136 						
 18130 						
 18137 						
 18131 					}
 18138 					}
 18132 					
 18139 					
 18157 			if (IN1_param_value == NULL)
 18164 			if (IN1_param_value == NULL)
 18158 			  IN1_param_value = function_call_param_iterator.next();
 18165 			  IN1_param_value = function_call_param_iterator.next();
 18159 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 18166 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 18160 			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 ;
 18167 			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 ;
 18161 			
 18168 			
 18162 			if(search_expression_type->is_binary_type(IN1_param_value))
 18169 			if(search_expression_type->is_binary_type(IN1_type_symbol))
 18163 			{
 18170 			{
 18164 		
 18171 		
 18165 				{
 18172 				{
 18166 					identifier_c param_name("IN2");
 18173 					identifier_c param_name("IN2");
 18167 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 18174 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 18171 					if (IN2_param_value == NULL)
 18178 					if (IN2_param_value == NULL)
 18172 					  IN2_param_value = function_call_param_iterator.next();
 18179 					  IN2_param_value = function_call_param_iterator.next();
 18173 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 18180 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 18174 					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 ;
 18181 					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 ;
 18175 					
 18182 					
 18176 					if(search_expression_type->is_binary_type(IN2_param_value))
 18183 					if(search_expression_type->is_binary_type(IN2_type_symbol))
 18177 					{
 18184 					{
 18178 				
 18185 				
 18179 						symbol_c * return_type_symbol = last_type_symbol;
 18186 						symbol_c * return_type_symbol = last_type_symbol;
 18180 						s4o.print("(");
 18187 						s4o.print("(");
       
 18188 						if (search_expression_type->is_bool_type(last_type_symbol))
       
 18189 						  s4o.print("(");
 18181 						IN1_param_value->accept(*this);
 18190 						IN1_param_value->accept(*this);
 18182 						s4o.print("|");
 18191 						s4o.print("|");
 18183 						IN2_param_value->accept(*this);
 18192 						IN2_param_value->accept(*this);
 18184 						
 18193 						
 18185 						int base_num = 3;
 18194 						int base_num = 3;
 18205 								
 18214 								
 18206 							}
 18215 							}
 18207 							
 18216 							
 18208 						}while(param_value != NULL);
 18217 						}while(param_value != NULL);
 18209 						s4o.print(")");
 18218 						s4o.print(")");
       
 18219 						if (search_expression_type->is_bool_type(last_type_symbol)) {
       
 18220 						  s4o.print("&1");
       
 18221 						  s4o.print(")");
       
 18222 						}
       
 18223 						s4o.print("");
 18210 						return NULL;
 18224 						return NULL;
 18211 						
 18225 						
 18212 						
 18226 						
 18213 					}
 18227 					}
 18214 					
 18228 					
 18239 			if (IN1_param_value == NULL)
 18253 			if (IN1_param_value == NULL)
 18240 			  IN1_param_value = function_call_param_iterator.next();
 18254 			  IN1_param_value = function_call_param_iterator.next();
 18241 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 18255 			symbol_c *IN1_type_symbol = search_expression_type->get_type(IN1_param_value);
 18242 			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 ;
 18256 			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 ;
 18243 			
 18257 			
 18244 			if(search_expression_type->is_binary_type(IN1_param_value))
 18258 			if(search_expression_type->is_binary_type(IN1_type_symbol))
 18245 			{
 18259 			{
 18246 		
 18260 		
 18247 				{
 18261 				{
 18248 					identifier_c param_name("IN2");
 18262 					identifier_c param_name("IN2");
 18249 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 18263 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 18253 					if (IN2_param_value == NULL)
 18267 					if (IN2_param_value == NULL)
 18254 					  IN2_param_value = function_call_param_iterator.next();
 18268 					  IN2_param_value = function_call_param_iterator.next();
 18255 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 18269 					symbol_c *IN2_type_symbol = search_expression_type->get_type(IN2_param_value);
 18256 					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 ;
 18270 					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 ;
 18257 					
 18271 					
 18258 					if(search_expression_type->is_binary_type(IN2_param_value))
 18272 					if(search_expression_type->is_binary_type(IN2_type_symbol))
 18259 					{
 18273 					{
 18260 				
 18274 				
 18261 						symbol_c * return_type_symbol = last_type_symbol;
 18275 						symbol_c * return_type_symbol = last_type_symbol;
 18262 						s4o.print("(");
 18276 						s4o.print("(");
       
 18277 						if (search_expression_type->is_bool_type(last_type_symbol))
       
 18278 						  s4o.print("(");
 18263 						IN1_param_value->accept(*this);
 18279 						IN1_param_value->accept(*this);
 18264 						s4o.print("^");
 18280 						s4o.print("^");
 18265 						IN2_param_value->accept(*this);
 18281 						IN2_param_value->accept(*this);
 18266 						
 18282 						
 18267 						int base_num = 3;
 18283 						int base_num = 3;
 18287 								
 18303 								
 18288 							}
 18304 							}
 18289 							
 18305 							
 18290 						}while(param_value != NULL);
 18306 						}while(param_value != NULL);
 18291 						s4o.print(")");
 18307 						s4o.print(")");
       
 18308 						if (search_expression_type->is_bool_type(last_type_symbol)) {
       
 18309 						  s4o.print("&1");
       
 18310 						  s4o.print(")");
       
 18311 						}
       
 18312 						s4o.print("");
 18292 						return NULL;
 18313 						return NULL;
 18293 						
 18314 						
 18294 						
 18315 						
 18295 					}
 18316 					}
 18296 					
 18317 					
 18321 			if (IN_param_value == NULL)
 18342 			if (IN_param_value == NULL)
 18322 			  IN_param_value = function_call_param_iterator.next();
 18343 			  IN_param_value = function_call_param_iterator.next();
 18323 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 18344 			symbol_c *IN_type_symbol = search_expression_type->get_type(IN_param_value);
 18324 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 18345 			last_type_symbol = last_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
 18325 			
 18346 			
 18326 			if(search_expression_type->is_binary_type(IN_param_value))
 18347 			if(search_expression_type->is_binary_type(IN_type_symbol))
 18327 			{
 18348 			{
 18328 		
 18349 		
 18329 				symbol_c * return_type_symbol = IN_type_symbol;
 18350 				symbol_c * return_type_symbol = IN_type_symbol;
 18330 				s4o.print("~");
 18351 				s4o.print("~");
 18331 				IN_param_value->accept(*this);
 18352 				IN_param_value->accept(*this);
 18681 			if (K_param_value == NULL)
 18702 			if (K_param_value == NULL)
 18682 			  K_param_value = function_call_param_iterator.next();
 18703 			  K_param_value = function_call_param_iterator.next();
 18683 			symbol_c *K_type_symbol = search_expression_type->get_type(K_param_value);
 18704 			symbol_c *K_type_symbol = search_expression_type->get_type(K_param_value);
 18684 			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 ;
 18705 			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 ;
 18685 			
 18706 			
 18686 			if(search_expression_type->is_integer_type(K_param_value))
 18707 			if(search_expression_type->is_integer_type(K_type_symbol))
 18687 			{
 18708 			{
 18688 		
 18709 		
 18689 				{
 18710 				{
 18690 					identifier_c param_name("IN0");
 18711 					identifier_c param_name("IN0");
 18691 					/* Get the value from a foo(<param_name> = <param_value>) style call */
 18712 					/* Get the value from a foo(<param_name> = <param_value>) style call */