[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    Re: [PyQt] SIP PyQT compilation issue
From:       emmanuel_mayssat () lynceantech ! com
Date:       2011-03-31 22:24:30
Message-ID: 20110331222430.GA17593 () carlsbad ! lynceantech ! com
[Download RAW message or body]

On 09:20 Thu 31 Mar     , Phil Thompson wrote:
> You can lie to SIP as much as you want. For example if B is derived from A
> in C++ you can tell SIP that it doesn't derive from anything and you won't
> get access to any of A's methods from Python. You could even say that B
> contained some of A's methods. The main problem area is virtuals (if you
> want to expose them) which really have to be in the right class (including
> all their reimplementations).

I understand. This means:
1/ I can remove superclass from a class definition
In which case, I can add methods to a class wich are actually in the superclass
2/ I can create custom methods which are not in the original C++ library
But of course the motivation should be to stay as close as possible to the C++ \
declaration. (Given that this is core concept, it may be useful to have a test case \
in the doc!) So I get it, with SIP we can lie through your teeth.

But as my wife once told me, I am not a very good liair.
And that's confirmed by SIP...

$ grep UserMessage * 
CaFramework.sip://sip %Include UserMessage.sip
QCaObject.sip://sip      QCaObject( const QString& recordName, QObject *eventObject, \
UserMessage* userMessageIn ); QCaObject.sip://sip      void setUserMessage( \
UserMessage* userMessageIn ); QCaObject.sip://sip      void initialise( const \
QString& newRecordName, QObject *newEventHandler, UserMessage* userMessageIn ); \
QCaWidget.sip://sip    UserMessage userMessage;        

but

g++ -c -pipe -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2  -fstack-protector \
--param=ssp-buffer-size=4 -m64 -mtune=generic -Wall -W -D_REENTRANT -DNDEBUG \
                -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_GUI_LIB -I.
-I/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//widgets/include \
-I/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//data/include
                
-I/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//api/include \
-I/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//plugins/include \
                -I/usr/include/QtCore
-I/usr/include/QtGui -I/usr/include/python2.6 -I/usr/lib64/qt4/mkspecs/default \
-I/usr/include -I/usr/X11R6/include -o sipCaFrameworkQCaWidget.o \
sipCaFrameworkQCaWidget.cpp In file included from \
/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//data/include/QCaObject.h:46,
                
                 from \
/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//data/include/QCaWidget.h:36,
  from QCaWidget.sip:4:
/usr/include/QtCore/qobject.h: In copy constructor 'UserMessage::UserMessage(const \
                UserMessage&)':
/usr/include/QtCore/qobject.h:309: error: 'QObject::QObject(const QObject&)' is \
                private
/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//data/include/UserMessage.h:38: \
error: within this context In file included from QCaWidget.sip:4:
/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//data/include/QCaWidget.h: \
                In copy constructor 'QCaWidget::QCaWidget(const QCaWidget&)':
/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//data/include/QCaWidget.h:43: \
note: synthesized method 'UserMessage::UserMessage(const UserMessage&)' first \
                required here 
sipCaFrameworkQCaWidget.cpp: In constructor 'sipQCaWidget::sipQCaWidget(const \
QCaWidget&)': sipCaFrameworkQCaWidget.cpp:59: note: synthesized method \
                'QCaWidget::QCaWidget(const QCaWidget&)' first required here 
sipCaFrameworkQCaWidget.cpp: In function 'void* init_QCaWidget(sipSimpleWrapper*, \
PyObject*, PyObject*, PyObject**, PyObject**, PyObject**)': \
sipCaFrameworkQCaWidget.cpp:281: error: cannot allocate an object of abstract type \
'sipQCaWidget' sipCaFrameworkQCaWidget.cpp:22: note:   because the following virtual \
                functions are pure within 'sipQCaWidget':
/home/cls1fs/epics/epics2//workspace/epicsqt/epicsqt-1.1.1-src//ca_framework//data/include/QCaWidget.h:60: \
note:    virtual qcaobject::QCaObject* QCaWidget::createQcaItem(unsigned int) \
sipCaFrameworkQCaWidget.cpp:296: error: cannot allocate an object of abstract type \
'sipQCaWidget' sipCaFrameworkQCaWidget.cpp:22: note:   since type 'sipQCaWidget' has \
                pure virtual functions
make: *** [sipCaFrameworkQCaWidget.o] Error 1
make: Leaving directory \
`/home/cls1fs/epics/epics2/workspace/epicsqt/epicsqt-1.1.1-src/ca_framework/sip/sipcode'


Well, it seems I have several different errors...

-- 
Emmanuel
_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
http://www.riverbankcomputing.com/mailman/listinfo/pyqt


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic