From dfa1c0dbfde6af0ce917d9a92153e40e68620073 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 28 Nov 2021 23:53:58 +0100 Subject: [PATCH] WIP: Qt bindings almost compile --- scripts/mkqtdecl.sh | 2 +- scripts/mkqtdecl6/mkqtdecl.conf | 113 ++++++++++++++++++++++------ scripts/mkqtdecl_common/c++.treetop | 2 +- scripts/mkqtdecl_common/common.conf | 40 +++++----- scripts/mkqtdecl_common/produce.rb | 5 ++ 5 files changed, 119 insertions(+), 43 deletions(-) diff --git a/scripts/mkqtdecl.sh b/scripts/mkqtdecl.sh index a1459105b..9f091226c 100755 --- a/scripts/mkqtdecl.sh +++ b/scripts/mkqtdecl.sh @@ -55,7 +55,7 @@ src_name5=gsiqt/qt5 src_name6=gsiqt/qt6 qt_mods4="QtCore QtGui QtDesigner QtNetwork QtSql QtXml QtUiTools" qt_mods5="QtCore QtGui QtWidgets QtDesigner QtNetwork QtPrintSupport QtSql QtSvg QtXml QtXmlPatterns QtMultimedia QtUiTools" -qt_mods6="QtCore QtGui QtWidgets QtDesigner QtNetwork QtPrintSupport QtSql QtSvg QtXml QtMultimedia QtUiTools QtCore5Compat" +qt_mods6="QtCore QtGui QtWidgets QtNetwork QtPrintSupport QtSql QtSvg QtXml QtMultimedia QtUiTools QtCore5Compat" src_name=$src_name4 inst_dir=$inst_dir4 diff --git a/scripts/mkqtdecl6/mkqtdecl.conf b/scripts/mkqtdecl6/mkqtdecl.conf index 29a26c355..4bea2dfc9 100644 --- a/scripts/mkqtdecl6/mkqtdecl.conf +++ b/scripts/mkqtdecl6/mkqtdecl.conf @@ -580,6 +580,7 @@ drop_class "QAccessibleObjectEx" drop_class "QAccessiblePlugin" # difficult because of strange inheritance (through a intermediate struct) and probably never needed: drop_class "QAccessibleWidgetEx" drop_class "QBrushData" +drop_class "QColorConstants" # features brace-initialized constexpr constants which are not supported yet drop_class "QCopChannel" drop_class "QCustomRasterPaintDevice" drop_class "QDecoration" @@ -617,10 +618,10 @@ drop_class "QProxyScreen" drop_class "QProxyScreenCursor" drop_class "QProxyStyle" drop_class "QRasterPaintEngine" +drop_class "QRgba64" # some problem with quint64 type ... TODO: debug later drop_class "QScreenCursor" drop_class "QScreenDriverFactory" drop_class "QScreenDriverPlugin" -#drop_class "QSessionManager" # Not available always: drop_class "QStandardItemEditorCreator" # is a template drop_class "QStyleFactoryInterface" drop_class "QStyleOptionDockWidgetV2" @@ -721,18 +722,29 @@ drop_class "QOpenGLVertexArrayObject_Binder" # OpenGL native types not supporte drop_class "QOpenGLVertexArrayObject" # OpenGL native types not supported drop_class "QOpenGLWidget" # OpenGL native types not supported drop_class "QOpenGLWindow" # OpenGL native types not supported +drop_class "QOpenGLExtraFunctions" # OpenGL native types not supported +drop_class "QOpenGLExtraFunctionsPrivate" # OpenGL native types not supported +drop_class "QOpenGLExtraFunctionsPrivate_Functions" # OpenGL native types not supported +drop_class "QVulkanDeviceFunctions" # Complex API - not supported +drop_class "QVulkanExtension" # Complex API - not supported +drop_class "QVulkanFunctions" # Complex API - not supported +drop_class "QVulkanInfoVector" # Complex API - not supported +drop_class "QVulkanInstance" # Complex API - not supported +drop_class "QVulkanLayer" # Complex API - not supported +drop_class "QVulkanWindow" # Complex API - not supported +drop_class "QVulkanWindowRenderer" # Complex API - not supported # depedencies from operators are not derived automatically currently: include "QPoint", [ "", "" ] include "QPointF", [ "", "" ] include "QVector3D", [ "", "", "" ] include "QVector4D", [ "", "", "" ] -include "QAction", [ "", "", "" ] +include "QAction", [ "", "", "", "" ] include "QCursor", [ "", "", "" ] include "QGraphicsItem", [ "", "", "", "", "", "", "", "", "", "", "" ] include "QGraphicsScene", [ "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" ] include "QGuiApplication", [ "", "", "", "", "", "" ] -include "QApplication", [ "", "", "", "", "", "" ] +include "QApplication", [ "", "", "", "", "" ] include "QWindow", [ "", "" ] include "QOffscreenSurface", [ "", "" ] include "QScreenOrientationChangeEvent", [ "", "" ] @@ -831,6 +843,7 @@ drop_method "QMenu", /QMenu::platformMenu/ # QPlatformMenu not available drop_method "QMenu", /QMenu::setPlatformMenu/ # QPlatformMenu not available drop_method "QMenuBar", /QMenuBar::platformMenuBar/ # QPlatformMenu not available drop_method "QTreeWidgetItem", /::QTreeWidgetItem\(const\s+QTreeWidgetItem\s*&/ # will hide the parent-constructor otherwise. Use dup/copy protocol instead. +drop_method "QInputMethodEvent", /::clone\(/ # returns QInputMethodEvent *, not Event * (TODO: bug?) rename "QRawFont", /QRawFont::supportsCharacter\(.*ucs4/, "supportsCharacter_ucs4" drop_method "QTextLine", /QTextLine::cursorToX\(.*int\s*\*/ # clashes with int-only version @@ -867,9 +880,19 @@ drop_method "QColor", /QColor::QColor\(const\s+QString/ # clashes with const cha drop_method "QColor", /QColor::allowX11ColorNames/ # not available in WIN drop_method "QColor", /QColor::setAllowX11ColorNames/ # not available in WIN drop_method "Qimage", /Qimage::text\(const\s+QString/ # clashes with const char * version +drop_method "QOpenGLExtraFunctions", /QOpenGLExtraFunctions::glDebugMessageCallback\(/ # needs function * +drop_method "QWindow", /::vulkanInstance\(/ # no Vulkan support currently +drop_method "QWindow", /::setVulkanInstance\(/ # no Vulkan support currently +drop_method "QTransform", /::asAffineMatrix\(/ # auto return value not supported +drop_method "QIcon", /::operator==\(/ # deleted +drop_method "QIcon", /::operator!=\(/ # deleted +drop_method "QPixmap", /::operator==\(/ # deleted +drop_method "QPixmap", /::operator!=\(/ # deleted + rename "QDialogButtonBox", /QDialogButtonBox::QDialogButtonBox\(QFlags/, "new_buttons" rename "QIcon", /QIcon::pixmap\(int\s+extent/, "pixmap_ext" rename "QKeySequence", /QKeySequence::QKeySequence\(QKeySequence::StandardKey/, "new_std" + keep_arg "QBoxLayout", /::addLayout/, 0 # will take ownership of layout keep_arg "QGridLayout", /::addLayout/, 0 # will take ownership of layout keep_arg "QWidget", /::setLayout\s*\(/, 0 # will take ownership of layout @@ -947,7 +970,54 @@ final_class "QAccessibleObject" # because navigate cannot be implemented # final_class "QAccessiblePlugin" # because navigate cannot be implemented final_class "QAccessibleWidget" # because navigate cannot be implemented +no_default_ctor "QPagedPaintDevice" +no_default_ctor "QPointerEvent" +no_default_ctor "QSinglePointEvent" + no_copy_ctor "QIconEngine" +no_copy_ctor "QActionEvent" +no_copy_ctor "QApplicationStateChangeEvent" +no_copy_ctor "QCloseEvent" +no_copy_ctor "QContextMenuEvent" +no_copy_ctor "QDragEnterEvent" +no_copy_ctor "QDragLeaveEvent" +no_copy_ctor "QDragMoveEvent" +no_copy_ctor "QDropEvent" +no_copy_ctor "QExposeEvent" +no_copy_ctor "QEnterEvent" +no_copy_ctor "QFileOpenEvent" +no_copy_ctor "QFocusEvent" +no_copy_ctor "QHelpEvent" +no_copy_ctor "QHideEvent" +no_copy_ctor "QHoverEvent" +no_copy_ctor "QIconDragEvent" +no_copy_ctor "QInputDevice" +no_copy_ctor "QInputEvent" +no_copy_ctor "QInputMethodEvent" +no_copy_ctor "QInputMethodQueryEvent" +no_copy_ctor "QKeyEvent" +no_copy_ctor "QMouseEvent" +no_copy_ctor "QMoveEvent" +no_copy_ctor "QNativeGestureEvent" +no_copy_ctor "QPaintEvent" +no_copy_ctor "QPointingDevice" +no_copy_ctor "QPointingDevice_Adaptor" +no_copy_ctor "QPointerEvent" +no_copy_ctor "QPlatformSurfaceEvent" +no_copy_ctor "QResizeEvent" +no_copy_ctor "QScreenOrientationChangeEvent" +no_copy_ctor "QScrollEvent" +no_copy_ctor "QScrollPrepareEvent" +no_copy_ctor "QShortcutEvent" +no_copy_ctor "QShowEvent" +no_copy_ctor "QSinglePointEvent" +no_copy_ctor "QStatusTipEvent" +no_copy_ctor "QTabletEvent" +no_copy_ctor "QToolBarChangeEvent" +no_copy_ctor "QTouchEvent" +no_copy_ctor "QWhatsThisClickedEvent" +no_copy_ctor "QWheelEvent" +no_copy_ctor "QWindowStateChangeEvent" # -------------------------------------------------------------- # QtXml @@ -1029,6 +1099,8 @@ no_imports "QAbstractXmlNodeModel" # base class is QSharedData which is not ava # -------------------------------------------------------------- # QtNetwork +drop_class "QTlsPrivate" # private data + drop_method "QUrlInfo", /QUrlInfo::QUrlInfo\(.*permissions/ # too many arguments (13) drop_method "QHostAddress", /QHostAddress::QHostAddress\(\s*(const\s*)?quint8\s*\*/ # requires char *, a string version is available for IPv6 drop_method "QHostAddress", /QHostAddress::QHostAddress\(\s*const\s+QIPv6Address/ # requires QIPv6Address struct, a string version is available for IPv6 @@ -1059,6 +1131,9 @@ final_class "QLocalSocket" # because readData cannot be reimplemented final_class "QNetworkReply" # because readData cannot be reimplemented final_class "QSslSocket" # because readData cannot be reimplemented +no_default_ctor "QDtls" +no_default_ctor "QNetworkInformation" + # -------------------------------------------------------------- # QtSql @@ -1067,43 +1142,38 @@ include "QSql", [ "" ] drop_class "QSqlDriverCreator" # is a template drop_class "QSqlDriverPlugin" # not required ? -# -------------------------------------------------------------- -# QtDesigner - -drop_method "QFormBuilder", /QFormBuilder::customWidgets\(\s*\)/ # Requires QDesignerCustomWidgetInterface which is not (yet) available - -return_new "QAbstractFormBuilder", /::load/ # returns a free object - -no_copy_ctor "QAbstractFormBuilder" -no_copy_ctor "QFormBuilder" - -final_class "QAbstractFormBuilder" # requires a lot of Dom* classes -final_class "QFormBuilder" # requires a lot of Dom* classes - # -------------------------------------------------------------- # QtMultimedia -include "QCamera", [ "", "", "", "", "" ] +include "QCamera", [ "", "", "", "" ] include "QAudioBuffer", [ "" ] include "QBackingStore", [ "" ] -include "QMediaPlayer", [ "", "", "", "", "" ] +include "QMediaPlayer", [ "", "", "", "", "", "" ] drop_class "QAudioBuffer", /StereoFrameDefault/ drop_class "QAudioBuffer", /StereoFrame/ +drop_class "QAudioFrame" drop_class "QAbstractPlanarVideoBuffer" drop_method "QAudioBuffer", /QAudioBuffer::QAudioBuffer\(QAbstractAudioBuffer/ # QAbstractAudioBuffer not available +drop_method "QAudioDevice", /QAudioDevice::handle\(/ # Private data +drop_method "QMediaRecorder", /QMediaRecorder::platformRecoder\(/ # Private data +drop_method "QMediaCaptureSession", /QMediaCaptureSession::platformSession\(/ # Private data drop_method "QBackingStore", /QBackingStore::handle/ # QPlatformBackingStore not available -drop_method "QAbstractVideoBuffer", /QAbstractVideoBuffer::mapPlanes/ # int[] not available -drop_method "QAbstractVideoBuffer", /QAbstractVideoBuffer::map\(QAbstractVideoBuffer::MapMode/ # unsigned char * not available drop_method "QVideoFrame", /^unsigned\s+char\s*\*/ # unsigned char * not available +drop_method "QVideoFrame", /QVideoFrame::QVideoFrame\(QAbstractVideoBuffer/ # QAbstractVideoBuffer not available +drop_method "QVideoFrame", /QVideoFrame::videoBuffer\(/ # QAbstractVideoBuffer not available +drop_method "QVideoSink", /QVideoSink::rhi\(/ # QRhi not available +drop_method "QVideoSink", /QVideoSink::setRhi\(/ # QRhi not available +drop_method "QVideoSink", /QVideoSink::platformVideoSink\(/ # QPlatformVideoSink not available + +no_default_ctor "QWaveDecoder" # -------------------------------------------------------------- no_default_ctor "QRadioTunerControl" no_default_ctor "QRadioDataControl" no_default_ctor "QAbstractEventDispatcher::TimerInfo" -no_default_ctor "QAbstractVideoBuffer" no_default_ctor "QDebug" no_default_ctor "QSequentialIterable" no_default_ctor "QSystemSemaphore" @@ -1264,6 +1334,7 @@ no_copy_ctor "QDialog" no_copy_ctor "QEventLoop" no_copy_ctor "QFileSystemWatcher" no_copy_ctor "QFormLayout" +no_copy_ctor "QGestureEvent" no_copy_ctor "QGraphicsLayoutItem" no_copy_ctor "QGraphicsSceneContextMenuEvent" no_copy_ctor "QGraphicsSceneDragDropEvent" diff --git a/scripts/mkqtdecl_common/c++.treetop b/scripts/mkqtdecl_common/c++.treetop index fe850f5d9..26f1f3489 100644 --- a/scripts/mkqtdecl_common/c++.treetop +++ b/scripts/mkqtdecl_common/c++.treetop @@ -314,7 +314,7 @@ grammar CPP end rule init_spec - block_wo_comma / "delete" / "0" + block_wo_comma / "default" / "delete" / "0" end rule type diff --git a/scripts/mkqtdecl_common/common.conf b/scripts/mkqtdecl_common/common.conf index e90f83ffb..fe4f2da1f 100644 --- a/scripts/mkqtdecl_common/common.conf +++ b/scripts/mkqtdecl_common/common.conf @@ -624,52 +624,52 @@ def add_native_impl_polygons static void f_QPolygon_clear (QPolygon *m) { - return m->clear(); + m->clear(); } static void f_QPolygon_remove (QPolygon *m, int i) { - return m->remove (i); + m->remove (i); } static void f_QPolygon_insert (QPolygon *m, int i, const QPoint &p) { - return m->insert (i, p); + m->insert (i, p); } static void f_QPolygon_replace (QPolygon *m, int i, const QPoint &p) { - return m->replace (i, p); + m->replace (i, p); } static void f_QPolygon_pop_front (QPolygon *m) { - return m->pop_front (); + m->pop_front (); } static void f_QPolygon_pop_back (QPolygon *m) { - return m->pop_back (); + m->pop_back (); } static void f_QPolygon_push_front (QPolygon *m, const QPoint &p) { - return m->push_front (p); + m->push_front (p); } static void f_QPolygon_push_back (QPolygon *m, const QPoint &p) { - return m->push_back (p); + m->push_back (p); } static void f_QPolygon_reserve (QPolygon *m, int n) { - return m->reserve (n); + m->reserve (n); } static void f_QPolygon_resize (QPolygon *m, int n) { - return m->resize (n); + m->resize (n); } static void f_QPolygon_fill (QPolygon *m, const QPoint &p, int n) @@ -754,52 +754,52 @@ DECL static void f_QPolygonF_clear (QPolygonF *m) { - return m->clear(); + m->clear(); } static void f_QPolygonF_remove (QPolygonF *m, int i) { - return m->remove (i); + m->remove (i); } static void f_QPolygonF_insert (QPolygonF *m, int i, const QPointF &p) { - return m->insert (i, p); + m->insert (i, p); } static void f_QPolygonF_replace (QPolygonF *m, int i, const QPointF &p) { - return m->replace (i, p); + m->replace (i, p); } static void f_QPolygonF_pop_front (QPolygonF *m) { - return m->pop_front (); + m->pop_front (); } static void f_QPolygonF_pop_back (QPolygonF *m) { - return m->pop_back (); + m->pop_back (); } static void f_QPolygonF_push_front (QPolygonF *m, const QPointF &p) { - return m->push_front (p); + m->push_front (p); } static void f_QPolygonF_push_back (QPolygonF *m, const QPointF &p) { - return m->push_back (p); + m->push_back (p); } static void f_QPolygonF_reserve (QPolygonF *m, int n) { - return m->reserve (n); + m->reserve (n); } static void f_QPolygonF_resize (QPolygonF *m, int n) { - return m->resize (n); + m->resize (n); } static void f_QPolygonF_fill (QPolygonF *m, const QPointF &p, int n) diff --git a/scripts/mkqtdecl_common/produce.rb b/scripts/mkqtdecl_common/produce.rb index b05989f29..77cc53dac 100755 --- a/scripts/mkqtdecl_common/produce.rb +++ b/scripts/mkqtdecl_common/produce.rb @@ -1195,6 +1195,11 @@ class Configurator # replace assignment operator if name == "=" + # drop assignment if the class does not have a copy ctor ("no copy semantics") + # (required because otherwise operator= is exposed for adaptor classes) + if !has_copy_ctor?(cls) + return nil + end name = "assign" end