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