[pygccxml-commit] SF.net SVN: pygccxml:[1539] pyplusplus_dev
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2009-01-06 08:55:13
|
Revision: 1539 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1539&view=rev Author: roman_yakovenko Date: 2009-01-06 08:55:13 +0000 (Tue, 06 Jan 2009) Log Message: ----------- small refactoring, which allows to merge information from binary files to the declarations tree Modified Paths: -------------- pyplusplus_dev/pyplusplus/code_creators/declaration_based.py pyplusplus_dev/pyplusplus/code_creators/name_mappings.py pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py pyplusplus_dev/pyplusplus/module_builder/ctypes_builder.py pyplusplus_dev/unittests/autoconfig.py pyplusplus_dev/unittests/ctypes_pof_tester.py Modified: pyplusplus_dev/pyplusplus/code_creators/declaration_based.py =================================================================== --- pyplusplus_dev/pyplusplus/code_creators/declaration_based.py 2009-01-06 08:38:32 UTC (rev 1538) +++ pyplusplus_dev/pyplusplus/code_creators/declaration_based.py 2009-01-06 08:55:13 UTC (rev 1539) @@ -43,8 +43,7 @@ @utils.cached def undecorated_decl_name( self ): - from pygccxml import binary_parsers #prevent import on Linux - return binary_parsers.undecorate_decl( self.declaration ) + return str( self.declaration ) @utils.cached def complete_py_name( self ): Modified: pyplusplus_dev/pyplusplus/code_creators/name_mappings.py =================================================================== --- pyplusplus_dev/pyplusplus/code_creators/name_mappings.py 2009-01-06 08:38:32 UTC (rev 1538) +++ pyplusplus_dev/pyplusplus/code_creators/name_mappings.py 2009-01-06 08:55:13 UTC (rev 1539) @@ -18,9 +18,9 @@ tmpl = '"%s" : "%s", ' items_decorated = [] items_undecorated = [] - for blob, undecorated in self._exported_symbols.iteritems(): - items_decorated.append( tmpl % ( blob, undecorated ) ) - items_undecorated.append( tmpl % ( undecorated, blob ) ) + for blob, decl in self._exported_symbols.iteritems(): + items_decorated.append( tmpl % ( blob, str(decl) ) ) + items_undecorated.append( tmpl % ( str(decl), blob ) ) result = [] result.append( '%s.undecorated_names = {#mapping between decorated and undecorated names' Modified: pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py =================================================================== --- pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py 2009-01-06 08:38:32 UTC (rev 1538) +++ pyplusplus_dev/pyplusplus/creators_factory/ctypes_creator.py 2009-01-06 08:55:13 UTC (rev 1539) @@ -218,11 +218,7 @@ def visit_free_function( self ): self.__dependencies_manager.add_exported( self.curr_decl ) - if self.curr_decl.name in self.__exported_symbols \ - and self.curr_decl.name == self.__exported_symbols[ self.curr_decl.name ]: - return #it is notpossible to call C function from CPPDLL - else: - self.curr_code_creator.adopt_creator( code_creators.function_definition_t( self.curr_decl ) ) + self.curr_code_creator.adopt_creator( code_creators.function_definition_t( self.curr_decl ) ) def visit_free_operator( self ): self.__dependencies_manager.add_exported( self.curr_decl ) Modified: pyplusplus_dev/pyplusplus/module_builder/ctypes_builder.py =================================================================== --- pyplusplus_dev/pyplusplus/module_builder/ctypes_builder.py 2009-01-06 08:38:32 UTC (rev 1538) +++ pyplusplus_dev/pyplusplus/module_builder/ctypes_builder.py 2009-01-06 08:55:13 UTC (rev 1539) @@ -55,8 +55,9 @@ """ module_builder.module_builder_t.__init__( self, global_ns=None, encoding=encoding ) - self.__blob2undecorated = binary_parsers.exported_symbols.load_from_file( exported_symbols_file ) self.global_ns = self.__parse_declarations( files, gccxml_config ) + self.__blob2decl = binary_parsers.merge_information( self.global_ns, exported_symbols_file ) + self.__include_declarations() self.__code_creator = None @@ -80,14 +81,8 @@ def __include_declarations( self ): self.global_ns.exclude() - b2u = self.__blob2undecorated - undecorated = set( b2u.values() ) - is_exported = lambda d: binary_parsers.undecorate_decl( d ) in undecorated \ - or d.name in b2u and b2u[d.name] == d.name #treatment of C functions #include exported declarations - included_decls = set() - included_decls.update( self.global_ns.calldefs( is_exported, allow_empty=True, recursive=True ) ) - included_decls.update( self.global_ns.variables( is_exported, allow_empty=True, recursive=True ) ) + included_decls = set( self.__blob2decl.itervalues() ) they_depend_on_me = decls_package.dependency_info_t.they_depend_on_me for d in included_decls: @@ -116,7 +111,7 @@ def build_code_creator( self, library_path, doc_extractor=None ): creator = creators_factory.ctypes_creator_t( self.global_ns , library_path - , self.__blob2undecorated + , self.__blob2decl , doc_extractor) self.__code_creator = creator.create() return self.__code_creator Modified: pyplusplus_dev/unittests/autoconfig.py =================================================================== --- pyplusplus_dev/unittests/autoconfig.py 2009-01-06 08:38:32 UTC (rev 1538) +++ pyplusplus_dev/unittests/autoconfig.py 2009-01-06 08:55:13 UTC (rev 1539) @@ -23,6 +23,7 @@ import pygccxml compiler = pygccxml.utils.native_compiler.get_gccxml_compiler() +compiler = "msvc71" print 'GCCXML configured to simulate compiler ', compiler gccxml_version = '__GCCXML_09__' class cxx_parsers_cfg: Modified: pyplusplus_dev/unittests/ctypes_pof_tester.py =================================================================== --- pyplusplus_dev/unittests/ctypes_pof_tester.py 2009-01-06 08:38:32 UTC (rev 1538) +++ pyplusplus_dev/unittests/ctypes_pof_tester.py 2009-01-06 08:55:13 UTC (rev 1539) @@ -31,6 +31,10 @@ @property def symbols_file( self ): + return os.path.join( self.project_dir, 'binaries', self.base_name + '.map' ) + + @property + def library_file( self ): return os.path.join( self.project_dir, 'binaries', self.base_name + '.dll' ) def setUp( self ): @@ -40,7 +44,7 @@ #~ pdb.set_trace() autoconfig.scons_config.compile( autoconfig.scons.cmd_build + ' ' + self.base_name ) mb = ctypes_module_builder_t( [self.header], self.symbols_file, autoconfig.cxx_parsers_cfg.gccxml ) - mb.build_code_creator( self.symbols_file ) + mb.build_code_creator( self.library_file ) mb.write_module( os.path.join( self.project_dir, 'binaries', self.base_name + '.py' ) ) sys.path.insert( 0, os.path.join( self.project_dir, 'binaries' ) ) __import__( self.base_name ) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |