[pygccxml-commit] SF.net SVN: pygccxml:[1607] pyplusplus_dev
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2009-01-21 20:07:45
|
Revision: 1607 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1607&view=rev Author: roman_yakovenko Date: 2009-01-21 20:07:41 +0000 (Wed, 21 Jan 2009) Log Message: ----------- fix few bugs, related to code_repository functionality Modified Paths: -------------- pyplusplus_dev/pyplusplus/code_creators/bpmodule.py pyplusplus_dev/pyplusplus/code_creators/code_creator.py pyplusplus_dev/pyplusplus/code_creators/compound.py pyplusplus_dev/pyplusplus/code_creators/ctypes_module.py pyplusplus_dev/pyplusplus/code_creators/module.py pyplusplus_dev/pyplusplus/creators_factory/bpcreator.py pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py pyplusplus_dev/pyplusplus/file_writers/writer.py pyplusplus_dev/unittests/ctypes_tester.py Modified: pyplusplus_dev/pyplusplus/code_creators/bpmodule.py =================================================================== --- pyplusplus_dev/pyplusplus/code_creators/bpmodule.py 2009-01-21 14:42:56 UTC (rev 1606) +++ pyplusplus_dev/pyplusplus/code_creators/bpmodule.py 2009-01-21 20:07:41 UTC (rev 1607) @@ -11,9 +11,7 @@ import compound import algorithm import module_body -import declaration_based import include_directories -from pygccxml import utils class bpmodule_t(module.module_t): """This class represents the source code for the entire extension module. @@ -23,7 +21,7 @@ def __init__(self, global_ns): """Constructor. """ - module.module_t.__init__(self, global_ns) + module.module_t.__init__(self, global_ns, bpmodule_t.CODE_GENERATOR_TYPES.BOOST_PYTHON) self.__body = None def _get_include_dirs(self): @@ -157,19 +155,3 @@ def add_declaration_code( self, code, position ): self.adopt_declaration_creator( custom.custom_text_t( code ) ) - - @utils.cached - def specially_exposed_decls(self): - """list of exposed declarations, which were not ``included``, but still - were exposed. For example, std containers. - """ - decls = set() - #select all declaration based code creators - ccs = filter( lambda cc: isinstance( cc, declaration_based.declaration_based_t ) - , algorithm.make_flatten_list( self ) ) - #leave only "ignored" - ccs = filter( lambda cc: cc.declaration.ignore == True, ccs ) - - decls = map( lambda cc: cc.declaration, ccs ) - - return set( decls ) Modified: pyplusplus_dev/pyplusplus/code_creators/code_creator.py =================================================================== --- pyplusplus_dev/pyplusplus/code_creators/code_creator.py 2009-01-21 14:42:56 UTC (rev 1606) +++ pyplusplus_dev/pyplusplus/code_creators/code_creator.py 2009-01-21 20:07:41 UTC (rev 1607) @@ -41,6 +41,8 @@ @property def code_generator( self ): + if self._code_generator is None: + self._code_generator = self.top_parent.code_generator return self._code_generator def _get_works_on_instance(self): Modified: pyplusplus_dev/pyplusplus/code_creators/compound.py =================================================================== --- pyplusplus_dev/pyplusplus/code_creators/compound.py 2009-01-21 14:42:56 UTC (rev 1606) +++ pyplusplus_dev/pyplusplus/code_creators/compound.py 2009-01-21 20:07:41 UTC (rev 1607) @@ -78,8 +78,7 @@ return os.linesep.join( internals ) def get_system_files( self, recursive=False, unique=False, language='any' ): - files = [ "boost/python.hpp" ] - files.extend( self._get_system_files_impl() ) + files = super( compound_t, self ).get_system_files(recursive, unique=False, language=language) if recursive: for creator in self._creators: files.extend( creator.get_system_files(recursive, unique=False, language=language) ) Modified: pyplusplus_dev/pyplusplus/code_creators/ctypes_module.py =================================================================== --- pyplusplus_dev/pyplusplus/code_creators/ctypes_module.py 2009-01-21 14:42:56 UTC (rev 1606) +++ pyplusplus_dev/pyplusplus/code_creators/ctypes_module.py 2009-01-21 20:07:41 UTC (rev 1607) @@ -17,7 +17,7 @@ def __init__(self, global_ns): """Constructor. """ - module.module_t.__init__(self, global_ns) + module.module_t.__init__(self, global_ns, ctypes_module_t.CODE_GENERATOR_TYPES.CTYPES) def _create_impl(self): return self.create_internal_code( self.creators, indent_code=False ) Modified: pyplusplus_dev/pyplusplus/code_creators/module.py =================================================================== --- pyplusplus_dev/pyplusplus/code_creators/module.py 2009-01-21 14:42:56 UTC (rev 1606) +++ pyplusplus_dev/pyplusplus/code_creators/module.py 2009-01-21 20:07:41 UTC (rev 1607) @@ -7,18 +7,22 @@ import license import include import compound +import algorithm +import declaration_based +from pygccxml import utils class module_t(compound.compound_t): """This class represents the source code for the entire extension module. The root of the code creator tree is always a module_t object. """ - def __init__(self, global_ns): + def __init__(self, global_ns, code_generator_type): """Constructor. """ compound.compound_t.__init__(self) self.__global_ns = global_ns - + self._code_generator = code_generator_type + @property def global_ns(self): "reference to global_ns ( namespace_t ) declaration" @@ -43,3 +47,20 @@ def _get_system_files_impl( self ): return [] + + @utils.cached + def specially_exposed_decls(self): + """list of exposed declarations, which were not ``included``, but still + were exposed. For example, std containers. + """ + decls = set() + #select all declaration based code creators + ccs = filter( lambda cc: isinstance( cc, declaration_based.declaration_based_t ) + , algorithm.make_flatten_list( self ) ) + #leave only "ignored" + ccs = filter( lambda cc: cc.declaration.ignore == True, ccs ) + + decls = map( lambda cc: cc.declaration, ccs ) + + return set( decls ) + Modified: pyplusplus_dev/pyplusplus/creators_factory/bpcreator.py =================================================================== --- pyplusplus_dev/pyplusplus/creators_factory/bpcreator.py 2009-01-21 14:42:56 UTC (rev 1606) +++ pyplusplus_dev/pyplusplus/creators_factory/bpcreator.py 2009-01-21 20:07:41 UTC (rev 1607) @@ -81,6 +81,7 @@ self.__types_db = types_database.types_database_t() global_ns = declarations.get_global_namespace(decls) + self.__extmodule = code_creators.bpmodule_t( global_ns ) if boost_python_ns_name: bp_ns_alias = code_creators.namespace_alias_t( alias=boost_python_ns_name @@ -353,9 +354,6 @@ self.__dependencies_manager.inform_user() - for cc in code_creators.make_flatten( self.__extmodule ): - cc._code_generator = decl_wrappers.CODE_GENERATOR_TYPES.BOOST_PYTHON - return self.__extmodule def visit_member_function( self ): Modified: pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py =================================================================== --- pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py 2009-01-21 14:42:56 UTC (rev 1606) +++ pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py 2009-01-21 20:07:41 UTC (rev 1607) @@ -152,9 +152,6 @@ self.__dependencies_manager.inform_user() - for cc in code_creators.make_flatten( self.module ): - cc._code_generator = decl_wrappers.CODE_GENERATOR_TYPES.CTYPES - return self.module def visit_member_function( self ): Modified: pyplusplus_dev/pyplusplus/file_writers/writer.py =================================================================== --- pyplusplus_dev/pyplusplus/file_writers/writer.py 2009-01-21 14:42:56 UTC (rev 1606) +++ pyplusplus_dev/pyplusplus/file_writers/writer.py 2009-01-21 20:07:41 UTC (rev 1607) @@ -32,9 +32,8 @@ if None is files_sum_repository: self.__files_sum_repository = md5sum_repository.dummy_repository_t() self.__exposed_decls_db = utils.exposed_decls_db_t() - if isinstance( self.__extmodule, code_creators.bpmodule_t ): - self.__exposed_decls_db.register_decls( extmodule.global_ns - , extmodule.specially_exposed_decls ) + self.__exposed_decls_db.register_decls( extmodule.global_ns + , extmodule.specially_exposed_decls ) def makedirs_for_file( self, file_path ): destination_dir = os.path.dirname( file_path ) Modified: pyplusplus_dev/unittests/ctypes_tester.py =================================================================== --- pyplusplus_dev/unittests/ctypes_tester.py 2009-01-21 14:42:56 UTC (rev 1606) +++ pyplusplus_dev/unittests/ctypes_tester.py 2009-01-21 20:07:41 UTC (rev 1607) @@ -6,6 +6,7 @@ import os import sys import ctypes +import shutil import unittest import autoconfig from pyplusplus.module_builder import ctypes_module_builder_t @@ -58,6 +59,11 @@ if self.base_name in sys.modules: return sys.modules[ self.base_name ] + binaries_dir = os.path.dirname( self.symbols_file ) + if os.path.exists( binaries_dir ): + print '\nrmdir ', binaries_dir + shutil.rmtree( binaries_dir ) + autoconfig.scons_config.compile( self.__build_scons_cmd(), cwd=autoconfig.this_module_dir_path ) mb = ctypes_module_builder_t( [self.header], self.symbols_file, autoconfig.cxx_parsers_cfg.gccxml ) self.customize( mb ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |