Revision: 183
Author: roman_yakovenko
Date: 2006-05-30 11:02:44 -0700 (Tue, 30 May 2006)
ViewCVS: http://svn.sourceforge.net/pygccxml/?rev=183&view=rev
Log Message:
-----------
fixing bug in module_t.replace_included_headers
function
Modified Paths:
--------------
pyplusplus_dev/pyplusplus/code_creators/module.py
pyplusplus_dev/pyplusplus/module_creator/creator.py
Modified: pyplusplus_dev/pyplusplus/code_creators/module.py
===================================================================
--- pyplusplus_dev/pyplusplus/code_creators/module.py 2006-05-29 19:43:29 UTC (rev 182)
+++ pyplusplus_dev/pyplusplus/code_creators/module.py 2006-05-30 18:02:44 UTC (rev 183)
@@ -21,8 +21,13 @@
def __init__(self):
"""Constructor.
"""
- compound.compound_t.__init__(self, None)
+ compound.compound_t.__init__(self, None)
+ self.__system_headers = []
+ def add_system_header( self, header ):
+ normalize = include_directories.include_directories_t.normalize
+ self.__system_headers.append( normalize( header ) )
+
def _get_include_dirs(self):
include_dirs = algorithm.creator_finder.find_by_class_instance(
what=include_directories.include_directories_t
@@ -111,7 +116,7 @@
else:
raise RuntimeError( "include_t creator has not been found." )
- def replace_included_headers( self, headers, leave_boost_python_header=True ):
+ def replace_included_headers( self, headers, leave_system_headers=True ):
to_be_removed = []
for creator in self.creators:
if isinstance( creator, include.include_t ):
@@ -119,16 +124,10 @@
elif isinstance( creator, module_body.module_body_t ):
break
- boost_python_header = include_directories.include_directories_t.normalize( 'boost/python.hpp' )
- boost_python_suite_header \
- = include_directories.include_directories_t.normalize( "boost/python/suite/indexing/vector_indexing_suite.hpp" )
for creator in to_be_removed:
- if boost_python_header in creator.header:
- if not leave_boost_python_header:
+ if creator.header in self.__system_headers:
+ if not leave_system_headers:
self.remove_creator( creator )
- elif boost_python_suite_header in creator.header:
- if not leave_boost_python_header:
- self.remove_creator( creator )
else:
self.remove_creator( creator )
map( lambda header: self.adopt_include( include.include_t( header=header ) )
Modified: pyplusplus_dev/pyplusplus/module_creator/creator.py
===================================================================
--- pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-05-29 19:43:29 UTC (rev 182)
+++ pyplusplus_dev/pyplusplus/module_creator/creator.py 2006-05-30 18:02:44 UTC (rev 183)
@@ -82,6 +82,7 @@
self.__types_db = types_database.types_database_t()
self.__extmodule = code_creators.module_t()
+ self.__extmodule.add_system_header( "boost/python.hpp" )
self.__extmodule.adopt_creator( code_creators.include_t( header="boost/python.hpp" ) )
self.__create_castinig_constructor = create_castinig_constructor
if boost_python_ns_name:
@@ -100,7 +101,7 @@
self.__cr_array_1_included = False
self.__array_1_registered = set() #(type.decl_string,size)
self.__free_operators = []
-
+
def _prepare_decls( self, decls ):
#leave only declarations defined under namespace, but remove namespaces
decls = filter( lambda x: not isinstance( x, declarations.namespace_t ) \
@@ -382,6 +383,7 @@
if not isinstance( cls, decl_wrappers.class_t ):
continue
if cls.indexing_suites:
+ self.__extmodule.add_system_header( "boost/python/suite/indexing/vector_indexing_suite.hpp" )
include = code_creators.include_t( header="boost/python/suite/indexing/vector_indexing_suite.hpp" )
self.__extmodule.adopt_include(include)
break
@@ -642,6 +644,7 @@
if declarations.is_array( self.curr_decl.type ):
if not self.__cr_array_1_included:
+ self.__extmodule.add_system_header( code_repository.array_1.file_name )
self.__extmodule.adopt_creator( code_creators.include_t( code_repository.array_1.file_name )
, self.__extmodule.first_include_index() + 1)
self.__cr_array_1_included = True
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|