On Wednesday 22 September 2010, 11:25:21 Hans-Peter Jansen wrote: > > Unfurtunately, here's the next stumbling point: > > /usr/include/kio/tcpslavebase.h: In function 'PyObject* > slot_KIO_TCPSlaveBase_SslResult___xor__(PyObject*, PyObject*)': > /usr/include/kio/tcpslavebase.h:63: error: 'enum > KIO::TCPSlaveBase::SslResultDetail' is protected > /usr/share/sip/PyQt4/QtCore/qglobal.sip:320: error: within this context > /usr/include/kio/tcpslavebase.h: In function 'PyObject* > slot_KIO_TCPSlaveBase_SslResult___or__(PyObject*, PyObject*)': > /usr/include/kio/tcpslavebase.h:63: error: 'enum > KIO::TCPSlaveBase::SslResultDetail' is protected > /usr/share/sip/PyQt4/QtCore/qglobal.sip:315: error: within this context > > Phil, this one is due to the logic operator changes. It's not obvious, > what's going wrong, but related to the friend class QFlags declararation, > where qglobal.sip got pulled in.. > > Here's the KDE class excerpt: > > class KIO_EXPORT TCPSlaveBase : public SlaveBase > { > public: > /** > * Constructor. > * > * @param autoSsl if true, will automatically invoke startSsl() right > after * connecting. In the absence of errors the use of > SSL will * therefore be transparent to higher layers. */ > TCPSlaveBase(const QByteArray &protocol, > const QByteArray &poolSocket, const QByteArray > &appSocket, bool autoSsl = false); > > virtual ~TCPSlaveBase(); > > protected: > enum SslResultDetail { > ResultOk = 1, > ResultOverridden = 2, > ResultFailed = 4, > ResultFailedEarly = 8 > }; > friend class QFlags<KIO::TCPSlaveBase::SslResultDetail>; > public: > Q_DECLARE_FLAGS(SslResult, SslResultDetail) > protected: > [...] > > and the related sip file excerpt: > > %ModuleHeaderCode > //ctscc > #include <forwardingslavebase.h> > #include <slavebase.h> > #include <tcpslavebase.h> > %End > > namespace KIO > { > > class TCPSlaveBase : KIO::SlaveBase > { > %TypeHeaderCode > #include <tcpslavebase.h> > %End > > > public: > TCPSlaveBase (const QByteArray& protocol, const QByteArray& > poolSocket, const QByteArray& appSocket, bool autoSsl = 0); > > > protected: > enum SslResultDetail > { > ResultOk, > ResultOverridden, > ResultFailed, > ResultFailedEarly > }; > [...] > > Both attached.
And here's the offending sip generated code (for the __xor__ method): extern "C" {static PyObject *slot_KIO_TCPSlaveBase_SslResult___xor__(PyObject *,PyObject *);} static PyObject *slot_KIO_TCPSlaveBase_SslResult___xor__(PyObject *sipArg0,PyObject *sipArg1) { PyObject *sipParseErr = NULL; { KIO::TCPSlaveBase::SslResult * a0; int a0State = 0; KIO::TCPSlaveBase::SslResult * a1; int a1State = 0; if (sipParsePair(&sipParseErr, sipArg0, sipArg1, "J1J1", sipType_KIO_TCPSlaveBase_SslResult, &a0, &a0State, sipT ype_KIO_TCPSlaveBase_SslResult, &a1, &a1State)) { KIO::TCPSlaveBase::SslResult *sipRes; Py_BEGIN_ALLOW_THREADS sipRes = new KIO::TCPSlaveBase::SslResult((*a0 ^ *a1)); Py_END_ALLOW_THREADS sipReleaseType(a0,sipType_KIO_TCPSlaveBase_SslResult,a0State); sipReleaseType(a1,sipType_KIO_TCPSlaveBase_SslResult,a1State); return sipConvertFromNewType(sipRes,sipType_KIO_TCPSlaveBase_SslResult,NULL); } } { KIO::TCPSlaveBase::SslResult * a0; int a0State = 0; int a1; if (sipParsePair(&sipParseErr, sipArg0, sipArg1, "J1i", sipType_KIO_TCPSlaveBase_SslResult, &a0, &a0State, &a1)) { KIO::TCPSlaveBase::SslResult *sipRes = 0; #line 320 "/usr/share/sip/PyQt4/QtCore/qglobal.sip" sipRes = new KIO::TCPSlaveBase::SslResult(*a0 ^ (KIO::TCPSlaveBase::SslResultDetail(a1))); #line 7221 "sipkiopart0.cpp" sipReleaseType(a0,sipType_KIO_TCPSlaveBase_SslResult,a0State); return sipConvertFromNewType(sipRes,sipType_KIO_TCPSlaveBase_SslResult,NULL); } } Py_XDECREF(sipParseErr); if (sipParseErr == Py_None) return NULL; return sipPySlotExtend(&sipModuleAPI_kio,xor_slot,NULL,sipArg0,sipArg1); } The question is, why can't this method access the protected enum KIO::TCPSlaveBase::SslResultDetail(a1) Does it have to be declared as friend class or some such? Any ideas anyone? Pete _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt