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