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