[PyQt] SIP newbie question (%MethodCode oddity)

Phil Thompson phil at riverbankcomputing.co.uk
Thu Jan 10 12:00:30 GMT 2008


On Tuesday 08 January 2008, Jim Crowell wrote:
> Hi all,
>
> I'm fiddling with SIP 4.7.3 on XP for a non-Qt-related project. As a
> learning exercise I tried porting the Fraction example at
> <http://www.panix.com/~elflord/unix/siptute/> to SIP 4. Got it working
> to a first approximation, but there's a bit that puzzles me: sipCpp
> doesn't always get defined in %MethodCode blocks where it looks like it
> should.
>
> Here's the working .sip code for two methods:
>
> float __float__();
> %MethodCode
> 	sipRes = (double)sipCpp->numerator() / sipCpp->denominator();
> %End
>
> Fraction __add__( Fraction );
> %MethodCode
> 	sipRes = new Fraction(*a0 + *a1);
> %End
>
> i.e. in the latter case sipCpp is not defined, but that same
> self-as-c++-object pointer resides in a0. Can anyone tell me why?

It's an artifact of the way global operators (eg. operator+()) are 
implemented. I've fixed the documentation to describe the inconsistency.

Phil


More information about the PyQt mailing list