Re: [pygccxml-development] special functions/operators
Brought to you by:
mbaas,
roman_yakovenko
|
From: Matthias B. <ba...@ir...> - 2006-08-25 17:09:02
|
Roman Yakovenko wrote:
> On 8/25/06, Neal Becker <ndb...@gm...> wrote:
>> Is there a way to add special functions/operators to a class?
>>
>> For example:
>>
>> struct X {};
>> X& addAssign (X& x1, X const& x2) { return x1; } // silly example
>>
>> I want this to do:
>> .def ("__iadd__", addAssign, return_self<>())
>
> I think that if you rename addAssign to __iadd__ this will work, but I
> am not sure.
>
> mb.free_function( 'addAssign' ).rename( '__iadd__' )
I think this would only work when addAssign() was a member of X.
I'm doing such things with the cdef() method of pypp_api which is
equivalent to adding a raw def() statement to the class (I just had to
name it something else because "def" is already a Python keyword). Usage
of cdef is almost identical to Boost.Python's def. The first argument is
the Python name, then comes the C/C++ function (as a string), followed
by optional policies, args and doc string in arbitrary order. In the
above example, it would look like this:
root.Class("X").cdef("__iadd__", "addAssign", return_self())
(see https://realityforge.vrsource.org/view/PyppApi/Pypp_decorating)
- Matthias -
|