[PyQt] SIP: exposing C++ shift operators

Phil Thompson phil at riverbankcomputing.co.uk
Thu Jul 9 21:49:02 BST 2009


On Thu, 09 Jul 2009 20:14:07 +0200, Giovanni Bajo <rasky at develer.com>
wrote:
> Hi Phil,
> 
> I'm trying to expose a global operator function through SIP. The first 
> argument is not an object wrapped by SIP, but I don't really care: it 
> would be sufficient if it was possible to call it from Python as a 
> normal function call. I tried this:
> 
> void operator<<(A& a, B& b) /PyName=foobar/;
> 
> but it doesn't work because SIP generates this code:
> 
>    __lshift__(*a0, *a1);

Actually it should display an error message.

> It would work if it generated this:
> 
>    operator<<(*a0, *a1);
> 
> Does this make sense? Is it a simple fix that I can do myself?

Global operators are supported but only if the first argument is a wrapped
class.

Instead just define...

void foobar(A& a, B& b);
%MethodCode
    operator<<(*a0, *a1);
%End

Phil


More information about the PyQt mailing list