[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. |