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