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