stage4/generate_c/generate_c_inlinefcall.cc
changeset 399 55b074ea7255
parent 392 9b88b8b6bccd
child 406 6381589697ff
child 495 8c6823fee086
--- a/stage4/generate_c/generate_c_inlinefcall.cc	Thu Feb 02 00:34:04 2012 +0100
+++ b/stage4/generate_c/generate_c_inlinefcall.cc	Fri Feb 03 00:09:52 2012 +0100
@@ -169,7 +169,7 @@
       if (f_decl != NULL) {
         /* function being called is overloaded! */
         s4o.print("__");
-        print_function_parameter_data_types_c overloaded_func_suf(&s4o);
+        print_function_parameter_data_types_c overloaded_func_suf(&s4o, function_type_prefix);
         f_decl->accept(overloaded_func_suf);
       }	
       if (function_type_suffix) {
@@ -222,7 +222,7 @@
       if (f_decl != NULL) {
     	/* function being called is overloaded! */
     	s4o.print("__");
-        print_function_parameter_data_types_c overloaded_func_suf(&s4o);
+        print_function_parameter_data_types_c overloaded_func_suf(&s4o, function_type_prefix);
         f_decl->accept(overloaded_func_suf);
       }
 
@@ -492,7 +492,10 @@
       
       /* determine the base data type returned by the function being called... */
       search_base_type_c search_base_type;
-      function_type_prefix = (symbol_c *)f_decl->type_name->accept(search_base_type);
+      if (symbol->overloaded_return_type == NULL)
+        function_type_prefix = (symbol_c *)f_decl->type_name->accept(search_base_type);
+      else
+    	function_type_prefix = symbol->overloaded_return_type;
       
       function_name = symbol->function_name;      
       
@@ -675,7 +678,10 @@
 
       /* determine the base data type returned by the function being called... */
       search_base_type_c search_base_type;
-      function_type_prefix = (symbol_c *)f_decl->type_name->accept(search_base_type);
+      if (symbol->overloaded_return_type == NULL)
+		function_type_prefix = (symbol_c *)f_decl->type_name->accept(search_base_type);
+      else
+		function_type_prefix = symbol->overloaded_return_type;
       if (NULL == function_type_prefix) ERROR;
       
       function_name = symbol->function_name;
@@ -1044,7 +1050,10 @@
 
       /* determine the base data type returned by the function being called... */
       search_base_type_c search_base_type;
-      function_type_prefix = (symbol_c *)f_decl->type_name->accept(search_base_type);
+      if (symbol->overloaded_return_type == NULL)
+        function_type_prefix = (symbol_c *)f_decl->type_name->accept(search_base_type);
+      else
+        function_type_prefix = symbol->overloaded_return_type;
       if (NULL == function_type_prefix) ERROR;
 
       /* loop through each function parameter, find the value we should pass