[pygccxml-commit] SF.net SVN: pygccxml: [987] pyplusplus_dev
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2007-04-15 10:45:53
|
Revision: 987 http://svn.sourceforge.net/pygccxml/?rev=987&view=rev Author: roman_yakovenko Date: 2007-04-15 03:45:52 -0700 (Sun, 15 Apr 2007) Log Message: ----------- improving generate code - removing system include files, that could not be included Modified Paths: -------------- pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py pyplusplus_dev/pyplusplus/file_writers/multiple_files.py pyplusplus_dev/unittests/algorithms_tester.py Modified: pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py =================================================================== --- pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py 2007-04-15 10:17:05 UTC (rev 986) +++ pyplusplus_dev/pyplusplus/file_writers/class_multiple_files.py 2007-04-15 10:45:52 UTC (rev 987) @@ -56,9 +56,13 @@ if self.extmodule.license: answer.append( self.extmodule.license.create() ) - answer.append( self.create_include_code( [class_creator] ) ) + creators = [class_creator] + if class_creator.wrapper: + creators.append( class_creator.wrapper ) + + answer.append( self.create_include_code( creators ) ) answer.append( '' ) - answer.append( self.create_namespaces_code( [class_creator] ) ) + answer.append( self.create_namespaces_code( creators ) ) if class_creator.wrapper: answer.append( class_creator.wrapper.create() ) Modified: pyplusplus_dev/pyplusplus/file_writers/multiple_files.py =================================================================== --- pyplusplus_dev/pyplusplus/file_writers/multiple_files.py 2007-04-15 10:17:05 UTC (rev 986) +++ pyplusplus_dev/pyplusplus/file_writers/multiple_files.py 2007-04-15 10:45:52 UTC (rev 987) @@ -12,6 +12,7 @@ from pygccxml import declarations from pyplusplus import decl_wrappers from pyplusplus import code_creators +from pyplusplus import code_repository #TODO: to add namespace_alias_t classes class multiple_files_t(writer.writer_t): @@ -143,16 +144,29 @@ def create_include_code( self, creators, head_headers=None, tail_headers=None ): answer = [] normalize = code_creators.include_directories_t.normalize + unique_headers = code_creators.code_creator_t.unique_headers + if head_headers: answer.extend( map( lambda header: '#include "%s"' % normalize( header ) , head_headers ) ) - # Include all 'global' include files... - includes = filter( lambda creator: isinstance( creator, code_creators.include_t ) - , self.extmodule.creators ) - answer.extend( map( lambda creator: creator.create(), includes ) ) - + dependend_on_headers = [] for creator in creators: + dependend_on_headers.extend( creator.get_system_headers( recursive=True ) ) + + dependend_on_headers = unique_headers( map( normalize, dependend_on_headers ) ) + + include_creators = filter( lambda creator: isinstance( creator, code_creators.include_t ) + , self.extmodule.creators ) + + for include_cc in include_creators: + if self.extmodule.is_system_header( include_cc.header ): + if include_cc.header in dependend_on_headers: + answer.append( include_cc.create() ) + else:# user header file - always include + answer.append( include_cc.create() ) + + for creator in creators: header = self.find_out_value_traits_header( creator ) if header: answer.append( '#include "%s"' % header ) Modified: pyplusplus_dev/unittests/algorithms_tester.py =================================================================== --- pyplusplus_dev/unittests/algorithms_tester.py 2007-04-15 10:17:05 UTC (rev 986) +++ pyplusplus_dev/unittests/algorithms_tester.py 2007-04-15 10:45:52 UTC (rev 987) @@ -13,6 +13,7 @@ from pyplusplus import module_creator from pyplusplus import module_builder from pyplusplus import utils as pypp_utils +from pyplusplus import function_transformers as ft class indent_tester_t(unittest.TestCase): def test( self ): @@ -150,6 +151,15 @@ int m_dummy; struct x_nested{}; + + float* get_rate(){ + return 0; + } + + virtual void get_size( int& i, int& j ){ + i = 0; + j = 0; + } }; } """ @@ -168,7 +178,9 @@ mb.calldefs( 'get_opaque' ).call_policies \ = module_builder.call_policies.return_value_policy( module_builder.call_policies.return_opaque_pointer ) mb.class_( 'op_struct' ).exclude() - + mb.mem_fun( 'get_rate' ).call_policies \ + = module_builder.call_policies.return_value_policy( module_builder.call_policies.return_pointee_value ) + mb.mem_fun( 'get_size' ).add_transformation( ft.output(0) ) mb.build_code_creator('x_class_multi') mb.split_module( autoconfig.build_dir , [ mb.class_( '::tester::x' ) ] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |