[pygccxml-commit] SF.net SVN: pygccxml: [1324] pyplusplus_dev
Brought to you by:
mbaas,
roman_yakovenko
|
From: <rom...@us...> - 2008-06-03 05:20:11
|
Revision: 1324
http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1324&view=rev
Author: roman_yakovenko
Date: 2008-06-02 22:20:17 -0700 (Mon, 02 Jun 2008)
Log Message:
-----------
fixing small issue related to unions
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py
pyplusplus_dev/pyplusplus/messages/warnings_.py
pyplusplus_dev/unittests/data/classes_to_be_exported.hpp
pyplusplus_dev/unittests/test_all.py
Added Paths:
-----------
pyplusplus_dev/unittests/data/embeded_to_be_exported.hpp
pyplusplus_dev/unittests/embeded_tester.py
Modified: pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py
===================================================================
--- pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2008-06-02 21:19:07 UTC (rev 1323)
+++ pyplusplus_dev/pyplusplus/decl_wrappers/class_wrapper.py 2008-06-03 05:20:17 UTC (rev 1324)
@@ -337,6 +337,8 @@
if not self.name:
return messages.W1018
#it is possible to do so, but not for unnamed classes defined under namespace.
+ if self.class_type == declarations.CLASS_TYPES.UNION:
+ return messages.W1054
if isinstance( self.parent, declarations.namespace_t ):
return ''
if not self in self.parent.public_members:
Modified: pyplusplus_dev/pyplusplus/messages/warnings_.py
===================================================================
--- pyplusplus_dev/pyplusplus/messages/warnings_.py 2008-06-02 21:19:07 UTC (rev 1323)
+++ pyplusplus_dev/pyplusplus/messages/warnings_.py 2008-06-03 05:20:17 UTC (rev 1324)
@@ -216,6 +216,8 @@
W1053 = warning(
'Py++ will not expose function "%s" - the function has variable-argument list, spicified by ellipsis (...).' )
+W1054 = compilation_error( 'Py++ can not expose unions.' )
+
warnings = globals()
all_warning_msgs = []
Modified: pyplusplus_dev/unittests/data/classes_to_be_exported.hpp
===================================================================
--- pyplusplus_dev/unittests/data/classes_to_be_exported.hpp 2008-06-02 21:19:07 UTC (rev 1323)
+++ pyplusplus_dev/unittests/data/classes_to_be_exported.hpp 2008-06-03 05:20:17 UTC (rev 1324)
@@ -95,6 +95,15 @@
}
+union Word
+{
+ short word;
+ struct
+ {
+ char low, high;
+ };
+};
+
}//classes
namespace pyplusplus{ namespace aliases{
Added: pyplusplus_dev/unittests/data/embeded_to_be_exported.hpp
===================================================================
--- pyplusplus_dev/unittests/data/embeded_to_be_exported.hpp (rev 0)
+++ pyplusplus_dev/unittests/data/embeded_to_be_exported.hpp 2008-06-03 05:20:17 UTC (rev 1324)
@@ -0,0 +1,13 @@
+// Copyright 2004 Roman Yakovenko.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#ifndef __embeded_to_be_exported_hpp__
+#define __embeded_to_be_exported_hpp__
+
+struct item_t{
+ int i;
+};
+
+#endif//__embeded_to_be_exported_hpp__
Added: pyplusplus_dev/unittests/embeded_tester.py
===================================================================
--- pyplusplus_dev/unittests/embeded_tester.py (rev 0)
+++ pyplusplus_dev/unittests/embeded_tester.py 2008-06-03 05:20:17 UTC (rev 1324)
@@ -0,0 +1,64 @@
+# Copyright 2004 Roman Yakovenko.
+# Distributed under the Boost Software License, Version 1.0. (See
+# accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+import os
+import sys
+import unittest
+import fundamental_tester_base
+from pyplusplus import code_creators
+from pyplusplus.module_builder.call_policies import *
+
+clone_def_code = """
+
+namespace bpl = boost::python;
+
+bpl::object clone_item( const item_t& item ){
+ std::auto_ptr< item_t > new_item( new item_t() );
+ new_item->i = item.i;
+ return bpl::object( new_item );
+}
+
+"""
+
+clone_reg_code = """
+
+def("clone_item", &clone_item );
+
+ bp::register_ptr_to_python< std::auto_ptr< item_t > >();
+
+"""
+
+
+class tester_t(fundamental_tester_base.fundamental_tester_base_t):
+ EXTENSION_NAME = 'embeded'
+
+ def __init__( self, *args ):
+ fundamental_tester_base.fundamental_tester_base_t.__init__(
+ self
+ , tester_t.EXTENSION_NAME
+ , *args )
+
+ def customize(self, mb ):
+ mb.add_declaration_code( clone_def_code )
+ mb.add_registration_code( clone_reg_code, True )
+
+ def run_tests( self, module):
+ item = module.item_t()
+ item.i = 78
+
+ item2 = module.clone_item(item)
+ self.failUnless( item2.i == item.i )
+ self.failUnless( sys.getrefcount( item2 ) == 2 ) #one for boost.python second for current scope
+
+def create_suite():
+ suite = unittest.TestSuite()
+ suite.addTest( unittest.makeSuite(tester_t))
+ return suite
+
+def run_suite():
+ unittest.TextTestRunner(verbosity=2).run( create_suite() )
+
+if __name__ == "__main__":
+ run_suite()
Modified: pyplusplus_dev/unittests/test_all.py
===================================================================
--- pyplusplus_dev/unittests/test_all.py 2008-06-02 21:19:07 UTC (rev 1323)
+++ pyplusplus_dev/unittests/test_all.py 2008-06-03 05:20:17 UTC (rev 1324)
@@ -104,6 +104,7 @@
import split_module_indexing_suite_bug_tester
import inner_tmpl_class_tester
import bug_covariant_returns_tester
+import embeded_tester
testers = [
algorithms_tester
@@ -195,6 +196,7 @@
, split_module_indexing_suite_bug_tester
, inner_tmpl_class_tester
, bug_covariant_returns_tester
+ , embeded_tester
]
class module_runner_t( object ):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|