[pygccxml-commit] SF.net SVN: pygccxml:[1760] pyplusplus_dev
Brought to you by:
mbaas,
roman_yakovenko
|
From: <rom...@us...> - 2009-09-22 18:41:56
|
Revision: 1760
http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1760&view=rev
Author: roman_yakovenko
Date: 2009-09-22 18:41:38 +0000 (Tue, 22 Sep 2009)
Log Message:
-----------
function transformation functionality was fixed for regular functions, which returns "reference"
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py
pyplusplus_dev/unittests/data/function_transformations_to_be_exported.hpp
pyplusplus_dev/unittests/function_transformations_tester.py
Modified: pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py 2009-09-21 19:20:25 UTC (rev 1759)
+++ pyplusplus_dev/pyplusplus/code_creators/calldef_transformed.py 2009-09-22 18:41:38 UTC (rev 1760)
@@ -90,11 +90,14 @@
tmpl_values['save_result'] = ''
if not declarations.is_void( self.declaration.return_type ):
- tmpl_values['save_result'] \
- = '%(type)s %(name)s = ' \
- % { 'type': cntrl.result_variable.type.decl_string
- , 'name' : cntrl.result_variable.name }
+ tmpl_tmp = '%(type)s %(name)s = '
+ if declarations.is_reference( self.declaration.return_type ):
+ tmpl_tmp = tmpl_tmp + '&'
+ tmpl_values['save_result'] = tmpl_tmp \
+ % { 'type': cntrl.result_variable.type.decl_string
+ , 'name' : cntrl.result_variable.name }
+
tmpl_values['function_name'] = self.resolve_function_ref()
tmpl_values['arg_expressions'] = self.PARAM_SEPARATOR.join( cntrl.arg_expressions )
return_stmt_creator = calldef_utils.return_stmt_creator_t( self
@@ -353,7 +356,7 @@
if not declarations.is_void( self.declaration.return_type ):
tmpl_tmp = '%(result_var_name)s = '
if declarations.is_reference( self.declaration.return_type ):
- tmpl_tmp = '%(result_var_name)s = &'
+ tmpl_tmp = tmpl_tmp + '&'
tmpl_values['save_result'] = tmpl_tmp % dict( result_var_name=cntrl.result_variable.name )
tmpl_values['function_name'] = self.declaration.name
Modified: pyplusplus_dev/unittests/data/function_transformations_to_be_exported.hpp
===================================================================
--- pyplusplus_dev/unittests/data/function_transformations_to_be_exported.hpp 2009-09-21 19:20:25 UTC (rev 1759)
+++ pyplusplus_dev/unittests/data/function_transformations_to_be_exported.hpp 2009-09-22 18:41:38 UTC (rev 1760)
@@ -277,4 +277,24 @@
}
+
+namespace ft_bugs2{
+
+class A2 {
+protected:
+ virtual ~A2(){};
+};
+
+class B2 {};
+
+class C2 {
+public:
+ B2& g(A2 const & x, int n){ return b; }
+private:
+ B2 b;
+};
+
+
+}
+
#endif//__function_transformations_to_be_exported_hpp__
Modified: pyplusplus_dev/unittests/function_transformations_tester.py
===================================================================
--- pyplusplus_dev/unittests/function_transformations_tester.py 2009-09-21 19:20:25 UTC (rev 1759)
+++ pyplusplus_dev/unittests/function_transformations_tester.py 2009-09-22 18:41:38 UTC (rev 1760)
@@ -112,10 +112,15 @@
h2.add_transformation( ft.modify_type(0, remove_const_ref ) )
h2.call_policies = call_policies.return_internal_reference()
-
ft_bugs.class_( 'B' ).always_expose_using_scope = True
ft_bugs.mem_fun( 'get_a' ).call_policies \
= call_policies.return_value_policy( call_policies.reference_existing_object )
+
+ ft_bugs2 = mb.namespace( 'ft_bugs2' )
+ g = ft_bugs2.mem_fun( 'g' )
+ g.add_transformation( ft.modify_type(0, remove_const_ref ) )
+ g.call_policies = call_policies.return_internal_reference()
+
def run_tests(self, module):
"""Run the actual unit tests.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|