[pygccxml-commit] SF.net SVN: pygccxml:[1416] pyplusplus_dev
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2008-10-02 06:22:01
|
Revision: 1416 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1416&view=rev Author: roman_yakovenko Date: 2008-10-02 06:21:50 +0000 (Thu, 02 Oct 2008) Log Message: ----------- small bug fix in "inout" function transformation Modified Paths: -------------- pyplusplus_dev/pyplusplus/function_transformers/transformers.py pyplusplus_dev/unittests/data/ft_inout_bugs_to_be_exported.hpp pyplusplus_dev/unittests/ft_inout_tester.py Modified: pyplusplus_dev/pyplusplus/function_transformers/transformers.py =================================================================== --- pyplusplus_dev/pyplusplus/function_transformers/transformers.py 2008-09-14 12:43:42 UTC (rev 1415) +++ pyplusplus_dev/pyplusplus/function_transformers/transformers.py 2008-10-02 06:21:50 UTC (rev 1416) @@ -243,7 +243,7 @@ tmpl = string.Template( '$name = boost::python::extract< $type >( pyplus_conv::get_out_argument( $py_result, "$name" ) );' ) store_py_result_in_arg = tmpl.substitute( name=self.arg.name - , type=self.arg.type.decl_string + , type=remove_ref_or_ptr( self.arg.type ).decl_string , py_result=controller.py_result_variable.name ) controller.add_py_post_call_code( store_py_result_in_arg ) Modified: pyplusplus_dev/unittests/data/ft_inout_bugs_to_be_exported.hpp =================================================================== --- pyplusplus_dev/unittests/data/ft_inout_bugs_to_be_exported.hpp 2008-09-14 12:43:42 UTC (rev 1415) +++ pyplusplus_dev/unittests/data/ft_inout_bugs_to_be_exported.hpp 2008-10-02 06:21:50 UTC (rev 1416) @@ -17,4 +17,8 @@ } }; +inline void call_set_flag( base& x, bool value, bool& flag ){ + x.set_flag( value, flag ); } + +} Modified: pyplusplus_dev/unittests/ft_inout_tester.py =================================================================== --- pyplusplus_dev/unittests/ft_inout_tester.py 2008-09-14 12:43:42 UTC (rev 1415) +++ pyplusplus_dev/unittests/ft_inout_tester.py 2008-10-02 06:21:50 UTC (rev 1416) @@ -28,6 +28,19 @@ set_flag = mb.calldefs( 'set_flag' ) set_flag.add_transformation( ft.inout(1) ) + call_set_flag = mb.calldefs( 'call_set_flag' ) + call_set_flag.add_transformation( ft.inout(2) ) + + def create_py_inventor( self, module ): + class pyinventor( module.base ): + def __init__( self ): + module.base.__init__( self ) + + def set_flag( self, value, flag ): + flag = not value + return flag + return pyinventor() + def run_tests(self, module): x = False self.failUnless( True == module.set_flag( True, x ) ) @@ -35,11 +48,25 @@ b = module.base() self.failUnless( True == b.set_flag( True, x ) ) self.failUnless( False == b.set_flag( False, x ) ) + + self.failUnless( True == module.call_set_flag( b, True, x ) ) + self.failUnless( False == module.call_set_flag( b, False, x ) ) + inventor = module.inventor() self.failUnless( False == inventor.set_flag( True, x ) ) self.failUnless( True == inventor.set_flag( False, x ) ) + self.failUnless( False == module.call_set_flag( inventor, True, x ) ) + self.failUnless( True == module.call_set_flag( inventor, False, x ) ) + inventor = self.create_py_inventor( module ) + self.failUnless( False == inventor.set_flag( True, x ) ) + self.failUnless( True == inventor.set_flag( False, x ) ) + + self.failUnless( False == module.call_set_flag( inventor, True, x ) ) + self.failUnless( True == module.call_set_flag( inventor, False, x ) ) + + def create_suite(): suite = unittest.TestSuite() suite.addTest( unittest.makeSuite(tester_t)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |