[pygccxml-commit] SF.net SVN: pygccxml:[1784] pyplusplus_dev
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2009-12-26 19:21:59
|
Revision: 1784 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1784&view=rev Author: roman_yakovenko Date: 2009-12-26 19:21:49 +0000 (Sat, 26 Dec 2009) Log Message: ----------- fix ctypes - bit fields code generation Modified Paths: -------------- pyplusplus_dev/docs/history/history.rest pyplusplus_dev/pyplusplus/code_creators/member_variable.py pyplusplus_dev/unittests/ctypes_tester.py pyplusplus_dev/unittests/data/ctypes/variables/variables.cpp pyplusplus_dev/unittests/data/ctypes/variables/variables.h Modified: pyplusplus_dev/docs/history/history.rest =================================================================== --- pyplusplus_dev/docs/history/history.rest 2009-12-24 21:25:59 UTC (rev 1783) +++ pyplusplus_dev/docs/history/history.rest 2009-12-26 19:21:49 UTC (rev 1784) @@ -26,6 +26,7 @@ * Carsten( spom.spom ) * Pertti Kellomäki * Benoît Leveau +* Nikolaus Rath ----------- SVN Version @@ -66,6 +67,8 @@ Many thanks to Benoît Leveau. +10. Numerous bugs in "ctypes code generator" were fixed. Many thanks to Nikolaus Rath. + ----------- Version 1.0 ----------- Modified: pyplusplus_dev/pyplusplus/code_creators/member_variable.py =================================================================== --- pyplusplus_dev/pyplusplus/code_creators/member_variable.py 2009-12-24 21:25:59 UTC (rev 1783) +++ pyplusplus_dev/pyplusplus/code_creators/member_variable.py 2009-12-26 19:21:49 UTC (rev 1784) @@ -735,9 +735,14 @@ vars = vars.to_list() vars.sort( key=lambda d: d.location.line ) for v in vars: - result.append( self.indent( '("%(name)s", %(type)s),' - % dict( name=v.alias - ,type=ctypes_formatter.as_ctype( v.type ) ) ) ) + tmp = None + type_as_str = ctypes_formatter.as_ctype( v.type ) + if v.bits != None: + tmp = '("%(name)s", %(type)s, %(bits)d),' \ + % dict( name=v.alias, type=type_as_str, bits=v.bits ) + else: + tmp = '("%(name)s", %(type)s),' % dict( name=v.alias, type=type_as_str ) + result.append( self.indent( tmp ) ) result.append( ']' ) return os.linesep.join( result ) Modified: pyplusplus_dev/unittests/ctypes_tester.py =================================================================== --- pyplusplus_dev/unittests/ctypes_tester.py 2009-12-24 21:25:59 UTC (rev 1783) +++ pyplusplus_dev/unittests/ctypes_tester.py 2009-12-26 19:21:49 UTC (rev 1784) @@ -151,6 +151,8 @@ self.module_ref.init() self.failUnless( self.module_ref.j.value == 87 ) self.failUnless( self.module_ref.data.i == 1900 ) + + self.failUnless( self.module_ref.data.j == 7 ) self.failUnless( self.module_ref.data_ptr.contents.i == 11 ) self.module_ref.j.value = 78 @@ -158,7 +160,13 @@ self.module_ref.data.i = 987 self.failUnless( self.module_ref.get_value_data() == 987 ) + + self.module_ref.data.j = 8 + self.failUnless( self.module_ref.get_value_data_j() == 0 ) + self.module_ref.data.j = 5 + self.failUnless( self.module_ref.get_value_data_j() == 5 ) + self.module_ref.data_ptr.contents.i = 34 self.failUnless( self.module_ref.get_value_data_p() == 34 ) Modified: pyplusplus_dev/unittests/data/ctypes/variables/variables.cpp =================================================================== --- pyplusplus_dev/unittests/data/ctypes/variables/variables.cpp 2009-12-24 21:25:59 UTC (rev 1783) +++ pyplusplus_dev/unittests/data/ctypes/variables/variables.cpp 2009-12-26 19:21:49 UTC (rev 1784) @@ -1,7 +1,8 @@ #include "variables.h" EXPORT_SYMBOL void init(){ - data.i = 1900; + data.i = 1900; + data.j = 7; data_ptr = new data_t(); data_ptr->i = 11; j = 87; @@ -18,5 +19,9 @@ EXPORT_SYMBOL int get_value_data_p(){ return data_ptr->i; } + +EXPORT_SYMBOL int get_value_data_j(){ + return data.j; +} Modified: pyplusplus_dev/unittests/data/ctypes/variables/variables.h =================================================================== --- pyplusplus_dev/unittests/data/ctypes/variables/variables.h 2009-12-24 21:25:59 UTC (rev 1783) +++ pyplusplus_dev/unittests/data/ctypes/variables/variables.h 2009-12-26 19:21:49 UTC (rev 1784) @@ -1,7 +1,8 @@ #include "libconfig.h" struct EXPORT_SYMBOL data_t{ - int i; + int i; + unsigned int j : 3; }; EXPORT_SYMBOL int j; @@ -11,6 +12,7 @@ EXPORT_SYMBOL void init(); EXPORT_SYMBOL int get_value_j(); EXPORT_SYMBOL int get_value_data(); -EXPORT_SYMBOL int get_value_data_p(); +EXPORT_SYMBOL int get_value_data_p(); +EXPORT_SYMBOL int get_value_data_j(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |