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