stage3/fill_candidate_datatypes.cc
changeset 441 e8de43eefcc5
parent 440 a745f7d38a5d
child 442 bd5998ee8876
equal deleted inserted replaced
440:a745f7d38a5d 441:e8de43eefcc5
   787 
   787 
   788 	if (NULL == prev_il_instruction)      return NULL;
   788 	if (NULL == prev_il_instruction)      return NULL;
   789 	((list_c *)symbol->il_operand_list)->insert_element(prev_il_instruction, 0);	
   789 	((list_c *)symbol->il_operand_list)->insert_element(prev_il_instruction, 0);	
   790 
   790 
   791 	generic_function_call_t fcall_param = {
   791 	generic_function_call_t fcall_param = {
   792 	/* fcall_param.function_name               = */ symbol->function_name,
   792 		/* fcall_param.function_name               = */ symbol->function_name,
   793 	/* fcall_param.nonformal_operand_list      = */ symbol->il_operand_list,
   793 		/* fcall_param.nonformal_operand_list      = */ symbol->il_operand_list,
   794 	/* fcall_param.formal_operand_list         = */ NULL,
   794 		/* fcall_param.formal_operand_list         = */ NULL,
   795 	/* fcall_param.candidate_functions         = */ symbol->candidate_functions,
   795 		/* enum {POU_FB, POU_function} POU_type    = */ generic_function_call_t::POU_function,
   796 	/* fcall_param.called_function_declaration = */ symbol->called_function_declaration,
   796 		/* fcall_param.candidate_functions         = */ symbol->candidate_functions,
   797 	/* fcall_param.extensible_param_count      = */ symbol->extensible_param_count
   797 		/* fcall_param.called_function_declaration = */ symbol->called_function_declaration,
       
   798 		/* fcall_param.extensible_param_count      = */ symbol->extensible_param_count
   798 	};
   799 	};
   799 	handle_function_call(symbol, fcall_param);
   800 	handle_function_call(symbol, fcall_param);
   800 
   801 
   801 	if (debug) std::cout << "il_function_call_c [" << symbol->candidate_datatypes.size() << "] result.\n";
   802 	if (debug) std::cout << "il_function_call_c [" << symbol->candidate_datatypes.size() << "] result.\n";
   802 	return NULL;
   803 	return NULL;
   881 // SYM_REF2(il_formal_funct_call_c, function_name, il_param_list, symbol_c *called_function_declaration; int extensible_param_count;)
   882 // SYM_REF2(il_formal_funct_call_c, function_name, il_param_list, symbol_c *called_function_declaration; int extensible_param_count;)
   882 void *fill_candidate_datatypes_c::visit(il_formal_funct_call_c *symbol) {
   883 void *fill_candidate_datatypes_c::visit(il_formal_funct_call_c *symbol) {
   883 	symbol->il_param_list->accept(*this);
   884 	symbol->il_param_list->accept(*this);
   884 
   885 
   885 	generic_function_call_t fcall_param = {
   886 	generic_function_call_t fcall_param = {
   886 	/* fcall_param.function_name               = */ symbol->function_name,
   887 		/* fcall_param.function_name               = */ symbol->function_name,
   887 	/* fcall_param.nonformal_operand_list      = */ NULL,
   888 		/* fcall_param.nonformal_operand_list      = */ NULL,
   888 	/* fcall_param.formal_operand_list         = */ symbol->il_param_list,
   889 		/* fcall_param.formal_operand_list         = */ symbol->il_param_list,
   889 	/* fcall_param.candidate_functions         = */ symbol->candidate_functions,
   890 		/* enum {POU_FB, POU_function} POU_type    = */ generic_function_call_t::POU_function,
   890 	/* fcall_param.called_function_declaration = */ symbol->called_function_declaration,
   891 		/* fcall_param.candidate_functions         = */ symbol->candidate_functions,
   891 	/* fcall_param.extensible_param_count      = */ symbol->extensible_param_count
   892 		/* fcall_param.called_function_declaration = */ symbol->called_function_declaration,
       
   893 		/* fcall_param.extensible_param_count      = */ symbol->extensible_param_count
   892 	};
   894 	};
   893 	handle_function_call(symbol, fcall_param);
   895 	handle_function_call(symbol, fcall_param);
   894 
   896 
   895 	if (debug) std::cout << "il_formal_funct_call_c [" << symbol->candidate_datatypes.size() << "] result.\n";
   897 	if (debug) std::cout << "il_formal_funct_call_c [" << symbol->candidate_datatypes.size() << "] result.\n";
   896 	return NULL;
   898 	return NULL;
  1889 	if      (NULL != symbol->formal_param_list)        symbol->   formal_param_list->accept(*this);
  1891 	if      (NULL != symbol->formal_param_list)        symbol->   formal_param_list->accept(*this);
  1890 	else if (NULL != symbol->nonformal_param_list)     symbol->nonformal_param_list->accept(*this);
  1892 	else if (NULL != symbol->nonformal_param_list)     symbol->nonformal_param_list->accept(*this);
  1891 	else ERROR;
  1893 	else ERROR;
  1892 
  1894 
  1893 	generic_function_call_t fcall_param = {
  1895 	generic_function_call_t fcall_param = {
  1894 	/* fcall_param.function_name               = */ symbol->function_name,
  1896 		/* fcall_param.function_name               = */ symbol->function_name,
  1895 	/* fcall_param.nonformal_operand_list      = */ symbol->nonformal_param_list,
  1897 		/* fcall_param.nonformal_operand_list      = */ symbol->nonformal_param_list,
  1896 	/* fcall_param.formal_operand_list         = */ symbol->formal_param_list,
  1898 		/* fcall_param.formal_operand_list         = */ symbol->formal_param_list,
  1897 	/* fcall_param.candidate_functions         = */ symbol->candidate_functions,
  1899 		/* enum {POU_FB, POU_function} POU_type    = */ generic_function_call_t::POU_function,
  1898 	/* fcall_param.called_function_declaration = */ symbol->called_function_declaration,
  1900 		/* fcall_param.candidate_functions         = */ symbol->candidate_functions,
  1899 	/* fcall_param.extensible_param_count      = */ symbol->extensible_param_count
  1901 		/* fcall_param.called_function_declaration = */ symbol->called_function_declaration,
       
  1902 		/* fcall_param.extensible_param_count      = */ symbol->extensible_param_count
  1900 	};
  1903 	};
  1901 	handle_function_call(symbol, fcall_param);
  1904 	handle_function_call(symbol, fcall_param);
  1902 
  1905 
  1903 	if (debug) std::cout << "function_invocation_c [" << symbol->candidate_datatypes.size() << "] result.\n";
  1906 	if (debug) std::cout << "function_invocation_c [" << symbol->candidate_datatypes.size() << "] result.\n";
  1904 	return NULL;
  1907 	return NULL;