stage4/generate_c/generate_c_inlinefcall.cc
changeset 332 0f1d91a37506
parent 321 a96399ab57c2
child 336 229eb3e29216
equal deleted inserted replaced
331:e08e14782a4f 332:0f1d91a37506
    89             symbol_c *function_type_suffix,
    89             symbol_c *function_type_suffix,
    90             std::list<FUNCTION_PARAM*> param_list) {
    90             std::list<FUNCTION_PARAM*> param_list) {
    91             std::list<FUNCTION_PARAM*>::iterator pt;
    91             std::list<FUNCTION_PARAM*>::iterator pt;
    92 
    92 
    93       fcall_number++;
    93       fcall_number++;
       
    94       if (search_expression_type->is_literal_integer_type(function_type_prefix)) {
       
    95     	function_type_prefix = (symbol_c *)&search_constant_type_c::lint_type_name;
       
    96       }
       
    97       else if (search_expression_type->is_literal_real_type(function_type_prefix)) {
       
    98     	function_type_prefix = (symbol_c *)&search_constant_type_c::lreal_type_name;
       
    99       }
    94 
   100 
    95       s4o.print(s4o.indent_spaces);
   101       s4o.print(s4o.indent_spaces);
    96       s4o.print("inline ");
   102       s4o.print("inline ");
    97       function_type_prefix->accept(*this);
   103       function_type_prefix->accept(*this);
    98       s4o.print(" __");
   104       s4o.print(" __");
   105       s4o.print("(");
   111       s4o.print("(");
   106       s4o.indent_right();
   112       s4o.indent_right();
   107 
   113 
   108       PARAM_LIST_ITERATOR() {
   114       PARAM_LIST_ITERATOR() {
   109         if (PARAM_DIRECTION == function_param_iterator_c::direction_in) {
   115         if (PARAM_DIRECTION == function_param_iterator_c::direction_in) {
   110           PARAM_TYPE->accept(*this);
   116           if (search_expression_type->is_literal_integer_type(PARAM_TYPE)) {
       
   117         	((symbol_c *)&search_constant_type_c::lint_type_name)->accept(*this);
       
   118           }
       
   119           else if (search_expression_type->is_literal_real_type(PARAM_TYPE)) {
       
   120         	((symbol_c *)&search_constant_type_c::lreal_type_name)->accept(*this);
       
   121           }
       
   122           else {
       
   123         	PARAM_TYPE->accept(*this);
       
   124           }
   111           s4o.print(" ");
   125           s4o.print(" ");
   112           PARAM_NAME->accept(*this);
   126           PARAM_NAME->accept(*this);
   113           s4o.print(",\n" + s4o.indent_spaces);
   127           s4o.print(",\n" + s4o.indent_spaces);
   114         }
   128         }
   115       }
   129       }