From bc26fd6333b4ae5c3430fd192e7063d503b710de Mon Sep 17 00:00:00 2001
From: Matthias Koefferlein
Date: Thu, 2 Dec 2021 01:08:42 +0100
Subject: [PATCH] WIP: some more patches for Qt6 Qt binding.
---
scripts/mkqtdecl6/mkqtdecl.conf | 28 ++++++++++++++++++++++
src/lay/lay/doc/programming/qt_binding.xml | 2 +-
2 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/scripts/mkqtdecl6/mkqtdecl.conf b/scripts/mkqtdecl6/mkqtdecl.conf
index af859b78d..0706912dd 100644
--- a/scripts/mkqtdecl6/mkqtdecl.conf
+++ b/scripts/mkqtdecl6/mkqtdecl.conf
@@ -32,7 +32,15 @@ drop_method :all_classes, /::data_ptr/ # no private data
drop_method :all_classes, /::x11/ # no X11 stuff
drop_method :all_classes, /\(.*&&.*\)/ # no move semantics
drop_method :all_classes, /.*\s+&&$/ # no move semantics
+drop_method :all_classes, /\(.*std::nullptr_t.*\)/ # no nullptr arguments
+drop_method :all_classes, /\(.*std::experimental.*\)/ # no experimental stuff
+drop_method :all_classes, /\(.*std::chrono.*\)/ # no chrono
+drop_method :all_classes, /^std::chrono::/ # no chrono as return value
+drop_method :all_classes, /\(.*std::filesystem.*\)/ # no filesystem
+drop_method :all_classes, /^std::filesystem::/ # no filesystem as return value
drop_method :all_classes, /\(.*std::initializer_list.*\)/ # no brace initialization
+drop_method :all_classes, /\(.*std::function.*\)/ # std::function not bindable
+drop_method :all_classes, /^std::function # std::function not bindable as return value
drop_method :all_classes, /::bindable/ # no QBindable available
rename :all_classes, /::create\(/, "qt_create" # clashes with GSI/Ruby
@@ -86,10 +94,12 @@ drop_class "QBasicUtf8StringView"
drop_class "QBBSystemLocaleData"
drop_class "QBigEndianStorageType"
drop_class "QBindable"
+drop_class "QBindingStorage"
drop_class "QBitArray"
drop_class "QBitRef"
drop_class "QBool"
drop_class "QByteArray"
+drop_class "QByteArrayView"
drop_class "QByteRef"
drop_class "QCache"
drop_class "QCborArray" # complex API & there are better alternatives
@@ -241,6 +251,7 @@ drop_class "QStringEncoder", /DecodedData/
drop_class "QStringListIterator"
drop_class "QStringList" # mapped otherwise
drop_class "QString" # mapped otherwise
+drop_class "QStringView" # mapped otherwise
drop_class "QStringRef"
drop_class "QStringTokenizerBase"
drop_class "QStringTokenizerBaseBase"
@@ -276,6 +287,8 @@ drop_class "QTypeInfoMerger"
drop_class "QTypeTraits"
drop_class "QUnhandledException" # (TODO) no mapping yet
drop_class "QUntypedPropertyBinding"
+drop_class "QUntypedBindable"
+drop_class "QUntypedPropertyData"
drop_class "QUpdateLaterEvent"
drop_class "QUrlTwoFlags"
drop_class "QUuid"
@@ -296,6 +309,8 @@ drop_class "QWeakPointer"
drop_enum_const "QEvent", /CocoaRequestModal/ # not available on WIN
+drop_method "QObject", /QObject::bindingStorage/ # no QBindingStorage
+drop_method "QPluginLoader", /QPluginLoader::staticPlugins/ # no QStaticPlugin
drop_method "QKeyCombination", /QKeyCombination::operator<\(/ # deleted
drop_method "QMetaAssociation", /QMetaAssociation::QMetaAssociation\(.*MetaAssociationInterface/ # interface class not available
drop_method "QMetaContainer", /QMetaContainer::QMetaContainer\(.*MetaContainerInterface/ # interface class not available
@@ -303,6 +318,12 @@ drop_method "QMetaSequence", /QMetaSequence::QMetaSequence\(.*MetaSequenceInterf
drop_method "QCollator", /QCollator::compare\(.*QStringRef/ # clashes with QString version
drop_method "QLocale", /QLocale::(toDouble|toFloat|toInt|toLongLong|toShort|quoteString|toUInt|toULongLong|toUShort)\(.*QStringRef/ # clashes with QString version
drop_method "QRegularExpression", /QRegularExpression::(match|globalMatch)\(.*QStringRef/ # clashes with QString version
+drop_method "QRandomGenerator", /QRandomGenerator::QRandomGenerator\(.*quint32\s+\*/ # no pointers
+drop_method "QRandomGenerator", /QRandomGenerator::QRandomGenerator\(.*std::seed_seq/ # no std::seed_seq
+drop_method "QRandomGenerator", /QRandomGenerator::seed\(.*std::seed_seq/ # no std::seed_seq
+drop_method "QRandomGenerator64", /QRandomGenerator64::QRandomGenerator64\(.*quint32\s+\*/ # no pointers
+drop_method "QRandomGenerator64", /QRandomGenerator64::QRandomGenerator64\(.*std::seed_seq/ # no std::seed_seq
+drop_method "QRandomGenerator64", /QRandomGenerator64::seed\(.*std::seed_seq/ # no std::seed_seq
drop_method "QSignalBlocker", /QSignalBlocker::QSignalBlocker\(.*&/ # clashes with pointer version
drop_method "QQuaternion", /QQuaternion::toRotationMatrix\(/ # GenericMatrix not available
drop_method "QQuaternion", /QQuaternion::fromRotationMatrix\(/ # GenericMatrix not available
@@ -423,6 +444,8 @@ drop_method "", /::operator\s*==\(const\s+QVariant\s*&\w+,\s*const\s+QVariantCom
drop_method "", /::operator\s*!=\(const\s+QVariant\s*&\w+,\s*const\s+QVariantComparisonHelper/ # requires QVariantComparisonHelper
drop_method "QByteArrayMatcher", /QByteArrayMatcher::indexIn\(const\s+QByteArray/ # clashes with const char * variant
drop_method "QRegion", /QRegion::setRects/ # gets a new implementation
+drop_method "QRegion", /QRegion::crbegin/ # iterator not available
+drop_method "QRegion", /QRegion::crend/ # iterator not available
drop_method "QTimer", /static\s+void\s+QTimer::singleShot\(/ # requires slots, alternative impl?
drop_method "QDebug", /QDebug::operator\s*<<\((?!const\s+QString\s*&)/ # don't map the others right now - too many (TODO: how to map?)
drop_method "", /::operator\s*<<\(QDebug\s*\w*\s*,\s*(?!const\s+QString\s*&)/ # don't map the others right now - too many (TODO: how to map?)
@@ -525,6 +548,7 @@ drop_method "QMessageLogger", /QMessageLogger::fatal.*\.\.\./ # does not support
drop_method "QMessageLogger", /QMessageLogger::info.*\.\.\./ # does not support ...
drop_method "QMessageLogger", /QMessageLogger::noDebug.*\.\.\./ # does not support ...
drop_method "QMessageLogger", /QMessageLogger::warning.*\.\.\./ # does not support ...
+drop_method "QPropertyObserver", /QPropertyObserver::setSource/ # needs private data
add_native_impl("QMessageLogger", <<'CODE', <<'DECL')
static void critical1(QMessageLogger *logger, const char *msg) {
@@ -808,6 +832,10 @@ drop_method "QImage", /^\s*unsigned\s+char\s+\*\s*QImage::scanLine/ # TODO: requ
drop_method "QImage", /QImage::QImage\(unsigned\s+char\s+\*data/ # TODO: requires non-const char *
drop_method "QImage", /QImage::text\(const\s+QString/ # clashes with const char *version
drop_method "QTextDocument", /QTextDocument::appendUndoItem/ # requires QAbstractUndoItem which is not available
+drop_method "QTextDocument", /QTextDocument::resourceProvider/ # needs std::function
+drop_method "QTextDocument", /QTextDocument::setResourceProvider/ # needs std::function
+drop_method "QTextDocument", /QTextDocument::defaultResourceProvider/ # needs std::function
+drop_method "QTextDocument", /QTextDocument::setDefaultResourceProvider/ # needs std::function
drop_method "QAccessibleInterface", /QAccessibleInterface::editableTextInterface/ # requires QAccessibleEditableTextInterface which is not available
drop_method "QAccessibleInterface", /QAccessibleInterface::tableInterface/ # requires QAccessibleTableInterface which is not available
drop_method "QAccessibleInterface", /QAccessibleInterface::textInterface/ # requires QAccessibleTextInterface which is not available
diff --git a/src/lay/lay/doc/programming/qt_binding.xml b/src/lay/lay/doc/programming/qt_binding.xml
index ccb07a4e5..4d298d922 100644
--- a/src/lay/lay/doc/programming/qt_binding.xml
+++ b/src/lay/lay/doc/programming/qt_binding.xml
@@ -114,7 +114,7 @@ end
- - Methods that return or require unsupported containers, for example QBitArray
+ - Methods that return or require unsupported containers
- Methods that return or require function pointers
- Methods that return or require pointers to pointers or references to pointers
- Methods that require pointers to pass arrays (i.e. QPolygon::putPoints)