[PyQt] a subclass for a c++ object

Phil Thompson phil at riverbankcomputing.com
Tue Jun 29 18:51:03 BST 2010


On Sat, 26 Jun 2010 13:06:51 -0400, Blaine Bell
<blaine.bell at schrodinger.com> wrote:
> Ah, I see.  That is a very interesting problem.  I would think that it 
> could be solved by using pointers to member functions, but upon reading 
> up on those, it seems like it could be difficult to figure out whether 
> the subclass has implemented that function (the way member functions are 
> implemented could be compiler dependent as well).
> 
> Another way of potentially solving this issue would be to generate a 
> boolean member variable that detects whether the SIP's class function 
> has already been called (to avoid the recursion problem).  I think this 
> would take into account the issue where the base function might call the 
> same function, since its the same object, it would either always have a 
> base function or not.
> 
> This could be a good enhancement for SIP (i.e., to add a boolean member 
> variable for each member function, then check it before the subclass 
> function is called).
> 
> I think having to implement all functions in SIP that are used in C++ 
> has weird dependency issues.  If a programmer is working in just c++, 
> they can break the SIP implementation without knowing it.
>
> I would like to know what you think.  This enhancement could also be an 
> option for class implementations if you feel it is a significant 
> performance hit (it could be).  It could also be taken out for functions 
> that are used quite a bit (using Annotations in SIP)

The issue isn't detecting the recursion, it's knowing what C++
implementation to call. If it didn't use an explicit scope it would just
end up calling itself - it could detect that with a flag but it still
doesn't know what to do next.

Phil


More information about the PyQt mailing list