[PyQt] kdebindings 4.4.4 build failure with sip-4.11.1 continues
Hans-Peter Jansen
hpj at urpla.net
Fri Sep 24 12:04:26 BST 2010
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
More information about the PyQt
mailing list