stage4/generate_c/generate_c_inlinefcall.cc
changeset 336 229eb3e29216
parent 332 0f1d91a37506
child 337 9a2262fb7994
child 350 2c3c4dc34979
equal deleted inserted replaced
335:96d2efda3d8d 336:229eb3e29216
    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)) {
    94       function_type_prefix = search_expression_type->default_literal_type(function_type_prefix);
    95     	function_type_prefix = (symbol_c *)&search_constant_type_c::lint_type_name;
    95       if (function_type_suffix) {
    96       }
    96         function_type_suffix = search_expression_type->default_literal_type(function_type_suffix);
    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       }
    97       }
   100 
    98 
   101       s4o.print(s4o.indent_spaces);
    99       s4o.print(s4o.indent_spaces);
   102       s4o.print("inline ");
   100       s4o.print("inline ");
   103       function_type_prefix->accept(*this);
   101       function_type_prefix->accept(*this);
   104       s4o.print(" __");
   102       s4o.print(" __");
   105       fbname->accept(*this);
   103       fbname->accept(*this);
   106       s4o.print("_");
   104       s4o.print("_");
   107       function_name->accept(*this);
   105       function_name->accept(*this);
   108       if (function_type_suffix)
   106       if (function_type_suffix) {
   109         function_type_suffix->accept(*this);
   107     	function_type_suffix->accept(*this);
       
   108       }
   110       s4o.print_integer(fcall_number);
   109       s4o.print_integer(fcall_number);
   111       s4o.print("(");
   110       s4o.print("(");
   112       s4o.indent_right();
   111       s4o.indent_right();
   113 
   112 
   114       PARAM_LIST_ITERATOR() {
   113       PARAM_LIST_ITERATOR() {
   115         if (PARAM_DIRECTION == function_param_iterator_c::direction_in) {
   114         if (PARAM_DIRECTION == function_param_iterator_c::direction_in) {
   116           if (search_expression_type->is_literal_integer_type(PARAM_TYPE)) {
   115           search_expression_type->default_literal_type(PARAM_TYPE)->accept(*this);
   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           }
       
   125           s4o.print(" ");
   116           s4o.print(" ");
   126           PARAM_NAME->accept(*this);
   117           PARAM_NAME->accept(*this);
   127           s4o.print(",\n" + s4o.indent_spaces);
   118           s4o.print(",\n" + s4o.indent_spaces);
   128         }
   119         }
   129       }
   120       }