[pygccxml-commit] SF.net SVN: pygccxml:[1755] pyplusplus_dev
Brought to you by:
mbaas,
roman_yakovenko
From: <rom...@us...> - 2009-08-18 18:03:03
|
Revision: 1755 http://pygccxml.svn.sourceforge.net/pygccxml/?rev=1755&view=rev Author: roman_yakovenko Date: 2009-08-18 18:02:47 +0000 (Tue, 18 Aug 2009) Log Message: ----------- adding adaptor for pure virtual member functions Modified Paths: -------------- pyplusplus_dev/pyplusplus/code_creators/calldef.py pyplusplus_dev/unittests/data/function_adaptor_to_be_exported.hpp pyplusplus_dev/unittests/function_adaptor_tester.py Modified: pyplusplus_dev/pyplusplus/code_creators/calldef.py =================================================================== --- pyplusplus_dev/pyplusplus/code_creators/calldef.py 2009-08-17 19:29:29 UTC (rev 1754) +++ pyplusplus_dev/pyplusplus/code_creators/calldef.py 2009-08-18 18:02:47 UTC (rev 1755) @@ -315,20 +315,26 @@ return 'typedef %s;' % ftype.create_typedef( self.function_type_alias, exported_class_alias ) def create_function_ref_code(self, use_function_alias=False): + result = '' fname = declarations.full_name( self.declaration, with_defaults=False ) if use_function_alias: - return '%s( %s(&%s) )' \ + result = '%s( %s(&%s) )' \ % ( self.pure_virtual_identifier() , self.function_type_alias , fname ) elif self.declaration.create_with_signature: - return '%s( (%s)(&%s) )' \ + result = '%s( (%s)(&%s) )' \ % ( self.pure_virtual_identifier() , self.declaration.function_type().partial_decl_string , fname ) else: - return '%s( &%s )' % ( self.pure_virtual_identifier(), fname) + result = '%s( &%s )' % ( self.pure_virtual_identifier(), fname) + if hasattr( self.declaration, 'adaptor' ) and self.declaration.adaptor: + result = "%s( %s )" % ( self.declaration.adaptor, result ) + + return result + class mem_fun_pv_wrapper_t( calldef_wrapper_t ): def __init__( self, function ): calldef_wrapper_t.__init__( self, function=function ) Modified: pyplusplus_dev/unittests/data/function_adaptor_to_be_exported.hpp =================================================================== --- pyplusplus_dev/unittests/data/function_adaptor_to_be_exported.hpp 2009-08-17 19:29:29 UTC (rev 1754) +++ pyplusplus_dev/unittests/data/function_adaptor_to_be_exported.hpp 2009-08-18 18:02:47 UTC (rev 1755) @@ -37,5 +37,10 @@ }; +struct base4_t{ + virtual int get_zero() const = 0; +}; + + #endif//__function_adaptor_to_be_exported_hpp__ Modified: pyplusplus_dev/unittests/function_adaptor_tester.py =================================================================== --- pyplusplus_dev/unittests/function_adaptor_tester.py 2009-08-17 19:29:29 UTC (rev 1754) +++ pyplusplus_dev/unittests/function_adaptor_tester.py 2009-08-18 18:02:47 UTC (rev 1755) @@ -29,6 +29,7 @@ mfuns.add_override_precall_code( '//add_override_precall_code' ) mfuns.add_override_native_precall_code( '//add_override_native_precall_code' ) mb.class_('base3_t' ).add_wrapper_code( '//just a comment to force Py++ create wrapper' ) + mb.mem_fun( '::derived_t::get_two' ).alias = 'get2' def run_tests( self, module): foo = module.foo_t() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |