There was a rogue enum in my sip file! I removed Reusability from PIPSocket.sip and it works as intended now.
Thanks Phil. Phil Thompson-5 wrote: > > On Fri, 2 Jul 2010 06:49:59 -0700 (PDT), Demetrius Cassidy > <[email protected]> wrote: >> Sorry Phil - corrected inheritance tree: >> >> PUDPSocket <- PIPDataGramSocket <- PIPSocket <- PSocket (ABC) >> PTCPSocket <- PIPSocket <- PSocket (ABC) >> >> PUDPSocket does not have a 'Listen' function in it, instead it just >> inherits >> it from PIPSocket, who overrides PSocket. > > No it doesn't. PIPSocket::Listen() has a different signature to > PSocket::Listen() because they refer to different enums (both called > Reusability). > >> PTCPSocket DOES include a 'Listen' function in it, and overrides it from >> PIPSocket and PSocket. >> >> I've attached the corresponding sip files and the generated .cpp files > from >> sip. >> >> Below I've also included a snippet of the generated code for both > classes. >> The weird thing is that SIP wraps the PIPSocket Listen function, along > with >> the one from PSocket. http://old.nabble.com/file/p29056623/ptlib.rar >> ptlib.rar >> >> >> class sipPUDPSocket : public PUDPSocket >> { >> public: >> .... >> >> /* >> * There is a protected method for every virtual method visible from >> * this class. >> */ >> protected: >> ... >> PBoolean Listen(unsigned,WORD,PIPSocket::Reusability); >> PBoolean Listen(const >> PIPSocket::Address&,unsigned,WORD,PIPSocket::Reusability); >> ... >> PBoolean Listen(unsigned,WORD,PSocket::Reusability); >> } >> >> class sipPTCPSocket : public PTCPSocket >> { >> public: >> ... >> /* >> * There is a protected method for every virtual method visible from >> * this class. >> */ >> protected: >> PBoolean Listen(unsigned,WORD,PIPSocket::Reusability); >> PBoolean Listen(const >> PIPSocket::Address&,unsigned,WORD,PIPSocket::Reusability); >> ... >> PBoolean Listen(unsigned,WORD,PSocket::Reusability); >> }; >> >> Both classes share the same exact inheritance bug when wrapped: > > Given your .sip files, the above generated code is correct. > > It looks like you have a bug in your C++ code - I'd remove the > PIPSocket::Reusability enum. > > Phil > _______________________________________________ > PyQt mailing list [email protected] > http://www.riverbankcomputing.com/mailman/listinfo/pyqt > > -- View this message in context: http://old.nabble.com/SIP-Bug%3A-virtual-function-wrapped-twice-due-to-deep-inheritance-from-base-class-and-ABC-tp28936011p29064613.html Sent from the PyQt mailing list archive at Nabble.com. _______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt
