# 
# Copyright (C) 2006-2018 Matthias Koefferlein
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#

load(File.join(File.dirname(__FILE__), "common.conf"))

def add_native_operator_neq(engine, cls)
  cls_id = cls.gsub("::", "_")
  engine.drop_method cls, /::operator\s*==/
  engine.drop_method cls, /::operator\s*!=/
  engine.add_native_impl(cls, <<"CODE", <<"DECL")
  static bool #{cls_id}_operator_eq(const #{cls} *a, const #{cls} &b) {
    return *a == b;
  }
  static bool #{cls_id}_operator_ne(const #{cls} *a, const #{cls} &b) {
    return !(*a == b);
  }
CODE
  gsi::method_ext("==", &#{cls_id}_operator_eq, gsi::arg ("other"), "@brief Method bool #{cls}::operator==(const #{cls} &) const") +
  gsi::method_ext("!=", &#{cls_id}_operator_ne, gsi::arg ("other"), "@brief Method bool #{cls}::operator!=(const #{cls} &) const") 
DECL
end

def add_native_operator_neqlt(engine, cls)
  cls_id = cls.gsub("::", "_")
  engine.drop_method cls, /::operator\s*==/
  engine.drop_method cls, /::operator\s*!=/
  engine.drop_method cls, /::operator\s*</
  engine.add_native_impl(cls, <<"CODE", <<"DECL")
  static bool #{cls_id}_operator_eq(const #{cls} *a, const #{cls} &b) {
    return *a == b;
  }
  static bool #{cls_id}_operator_ne(const #{cls} *a, const #{cls} &b) {
    return !(*a == b);
  }
  static bool #{cls_id}_operator_lt(const #{cls} *a, const #{cls} &b) {
    return *a < b;
  }
CODE
  gsi::method_ext("==", &#{cls_id}_operator_eq, gsi::arg ("other"), "@brief Method bool #{cls}::operator==(const #{cls} &) const") +
  gsi::method_ext("!=", &#{cls_id}_operator_ne, gsi::arg ("other"), "@brief Method bool #{cls}::operator!=(const #{cls} &) const") +
  gsi::method_ext("<", &#{cls_id}_operator_lt, gsi::arg ("other"), "@brief Method bool #{cls}::operator<(const #{cls} &) const") 
DECL
end

def add_native_operator_cmp(engine, cls)
  cls_id = cls.gsub("::", "_")
  engine.drop_method cls, /::operator\s*==/
  engine.drop_method cls, /::operator\s*!=/
  engine.drop_method cls, /::operator\s*</
  engine.drop_method cls, /::operator\s*<=/
  engine.drop_method cls, /::operator\s*>/
  engine.drop_method cls, /::operator\s*>=/
  engine.add_native_impl(cls, <<"CODE", <<"DECL")
  static bool #{cls_id}_operator_eq(const #{cls} *a, const #{cls} &b) {
    return *a == b;
  }
  static bool #{cls_id}_operator_ne(const #{cls} *a, const #{cls} &b) {
    return *a != b;
  }
  static bool #{cls_id}_operator_le(const #{cls} *a, const #{cls} &b) {
    return *a <= b;
  }
  static bool #{cls_id}_operator_lt(const #{cls} *a, const #{cls} &b) {
    return *a < b;
  }
  static bool #{cls_id}_operator_ge(const #{cls} *a, const #{cls} &b) {
    return *a >= b;
  }
  static bool #{cls_id}_operator_gt(const #{cls} *a, const #{cls} &b) {
    return *a > b;
  }
CODE
  gsi::method_ext("==", &#{cls_id}_operator_eq, gsi::arg ("other"), "@brief Method bool #{cls}::operator==(const #{cls} &) const") +
  gsi::method_ext("!=", &#{cls_id}_operator_ne, gsi::arg ("other"), "@brief Method bool #{cls}::operator!=(const #{cls} &) const") +
  gsi::method_ext("<=", &#{cls_id}_operator_le, gsi::arg ("other"), "@brief Method bool #{cls}::operator<=(const #{cls} &) const") +
  gsi::method_ext("<", &#{cls_id}_operator_lt, gsi::arg ("other"), "@brief Method bool #{cls}::operator<(const #{cls} &) const") +
  gsi::method_ext(">=", &#{cls_id}_operator_ge, gsi::arg ("other"), "@brief Method bool #{cls}::operator>=(const #{cls} &) const") +
  gsi::method_ext(">", &#{cls_id}_operator_gt, gsi::arg ("other"), "@brief Method bool #{cls}::operator>(const #{cls} &) const") 
DECL
end

# --------------------------------------------------------------
# all modules

drop_method :all_classes, /::metaObject/ # messes up the overload scheme since it can be overloaded but is required internally before overloading is effective (on attach). Use staticMetaObject instead.
drop_method :all_classes, /::qt_/ # internal use only
drop_method :all_classes, /::d_func/ # internal use only
drop_method :all_classes, /::connectNotify/ # messes up the overload scheme since it can be overloaded but is required internally before overloading is effective (on attach). Use staticMetaObject instead.
drop_method :all_classes, /\(\s*Qt::Initialization/ # special constructors
drop_method :all_classes, /::qt_check_for_QOBJECT_macro/ # don't include in API!
drop_method :all_classes, /::devType\(/ # not required
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 std::chrono
drop_method :all_classes, /^std::chrono::/ # no std::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
drop_method :all_classes, /.*QtPrivate::.*/ # no private stuff
drop_method :all_classes, /\(.*QStringView\W/ # no QStringView
drop_method :all_classes, /^QStringView\W/ # no QStringView
drop_method :all_classes, /\(.*QLatin1String\W/ # clashes usually with const char *

def_alias :all_classes, /::create\(/, "qt_create" # clashes with GSI/Ruby
def_alias :all_classes, /::destroy\(/, "qt_destroy" # clashes with GSI/Ruby
def_alias :all_classes, /::raise\(/, "qt_raise" # clashes with Ruby "raise" keyword

# --------------------------------------------------------------
# Qt

# drops enum members
drop_enum_const "Qt", /WindowType::WindowSoftkeysVisibleHint/
drop_enum_const "Qt", /WindowType::WindowSoftkeysRespondHint/
drop_enum_const "Qt", /WindowType::WindowOkButtonHint/ # only available on CE
drop_enum_const "Qt", /WindowType::WindowCancelButtonHint/ # only available on CE

# --------------------------------------------------------------
# QtCore

drop_class "QLocale", /Data/

# not implemented:
drop_class "QAbstractConcatenable"
drop_class "QAbstractFileEngineHandler"
drop_class "QAbstractFileEngineIterator"
drop_class "QAbstractFileEngine"   # read requires char *
drop_class "QAdoptSharedDataTag"   # not available on Qt 6.6
drop_class "QAlgorithmsPrivate"
drop_class "QApplicationPermission"
drop_class "QArgument"
drop_class "QArrayData"
drop_class "QArrayDataOps"
drop_class "QArrayDataPointer"
drop_class "QArrayDataPointerRef"
drop_class "QAssociativeConstIterator"
drop_class "QAssociativeIterable"
drop_class "QAssociativeIterableImpl"
drop_class "QAssociativeIterator"
drop_class "QAtomic"
drop_class "QAtomicAdditiveType"
drop_class "QAtomicInt"
drop_class "QAtomicInteger"
drop_class "QAtomicOps"
drop_class "QAtomicOpsSupport"
drop_class "QAtomicPointer"
drop_class "QAtomicTraits"
drop_class "QBaseIterator"
drop_class "QBasicAtomicInt"
drop_class "QBasicAtomicInteger"
drop_class "QBasicAtomicOps"
drop_class "QBasicAtomicPointer"
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
drop_class "QCborArray_ConstIterator"   # complex API & there are better alternatives
drop_class "QCborArray_Iterator"   # complex API & there are better alternatives
drop_class "QCborError"   # complex API & there are better alternatives
drop_class "QCborMap"   # complex API & there are better alternatives
drop_class "QCborMap_ConstIterator"   # complex API & there are better alternatives
drop_class "QCborMap_Iterator"   # complex API & there are better alternatives
drop_class "QCborParserError"   # complex API & there are better alternatives
drop_class "QCborStreamReader"   # complex API & there are better alternatives
drop_class "QCborStreamWriter"   # complex API & there are better alternatives
drop_class "QCborValue"   # complex API & there are better alternatives
drop_class "QCborValueRef"   # complex API & there are better alternatives
drop_class "QCborKnownTags"   # complex API & there are better alternatives
drop_class "QCborNegativeInteger"   # complex API & there are better alternatives
drop_class "QCborSimpleType"   # complex API & there are better alternatives
drop_class "QtMsgType"   # complex API & there are better alternatives
drop_class "QChar"
drop_class "QCharRef"
drop_class "QConstIterator"
drop_class "QConstOverload"
drop_class "QConstString"
drop_class "QContainerInfo"
drop_class "QContiguousCache"
drop_class "QContiguousCacheData"
drop_class "QContiguousCacheTypedData"
drop_class "QDeferredDeleteEvent" # was a mistake, I think
drop_class "QEnableSharedFromThis"
drop_class "QException"  # (TODO) no mapping yet
drop_class "QExplicitlySharedDataPointer"
drop_class "QFileInfoList"
drop_class "QFileInfoListIterator"
drop_class "QFileInfoPrivate"
drop_class "QFlag"
drop_class "QFlags"
drop_class "QForeachContainer"
drop_class "QForeachContainerBase"
drop_class "QFSFileEngine"
drop_class "QFuture"
drop_class "QFuture"
drop_class "QFutureInterface"
drop_class "QFutureInterfaceBase"
drop_class "QFutureIterator"
drop_class "QFutureSynchronizer"
drop_class "QFutureWatcher"
drop_class "QFutureWatcherBase"
drop_class "QGenericArgument"
drop_class "QGenericAtomicOps"
drop_class "QGenericReturnArgument"
drop_class "QGlobalStatic"
drop_class "QGlobalStaticDeleter"
drop_class "QHash"
drop_class "QHashData"
drop_class "QHashDummyNode"
drop_class "QHashDummyValue"
drop_class "QHashIterator"
drop_class "QHashNode"
drop_class "QHashPrivate"
drop_class "QHashSeed"
drop_class "QIncompatibleFlag"
drop_class "QIntegerForSizeof"
drop_class "QInternal"
drop_class "QIterable"
drop_class "QIterator"
drop_class "QJsonPrivate"
drop_class "QKeyValueIterator"
drop_class "QLatin1Char"
drop_class "QLatin1String"
drop_class "QLinkedList"
drop_class "QLinkedListData"
drop_class "QLinkedListIterator"
drop_class "QLinkedListNode"
drop_class "QList"
drop_class "QListData"
drop_class "QListIterator"
drop_class "QListSpecialMethods"
drop_class "QListSpecialMethodsBase"
drop_class "QLittleEndianStorageType"
drop_class "QMap"
drop_class "QMapData"
drop_class "QMapIterator"
drop_class "QMapNode"
drop_class "QMapPayloadNode"
drop_class "QMetaObjectExtraData"
drop_class "QMetaTypeId"
drop_class "QMetaTypeId2"
drop_class "QMetaTypeIdQObject"
drop_class "QModelIndexList"
drop_class "QMultiHash"
drop_class "QMultiHashIterator"
drop_class "QMultiMap"
drop_class "QMultiMapIterator"
drop_class "QMutableHashIterator"
drop_class "QMutableLinkedListIterator"
drop_class "QMutableListIterator"
drop_class "QMutableMapIterator"
drop_class "QMutableMultiHashIterator"
drop_class "QMutableMultiMapIterator"
drop_class "QMutableSetIterator"
drop_class "QMutableStringListIterator"
drop_class "QMutableVectorIterator"
drop_class "QMutexLocker"
drop_class "QNativeInterface"
drop_class "QNoImplicitBoolCast"
drop_class "QNonConstOverload"
drop_class "QObjectBindableProperty"
drop_class "QObjectCleanupHandler"
drop_class "QObjectComputedProperty"
drop_class "QObjectData"
drop_class "QObjectList"
drop_class "QObjectUserData"
drop_class "QOverload"
drop_class "QPair"
drop_class "QPointer"
drop_class "QPromise"
drop_class "QProperty"
drop_class "QPropertyAlias"
drop_class "QPropertyBinding"
drop_class "QPropertyBindingPrivatePtr"
drop_class "QPropertyChangeHandler"
drop_class "QPropertyData"
drop_class "QQueue"
drop_class "QReturnArgument"
drop_class "QRgbaFloat"
drop_class "QScopedArrayPointer"
drop_class "QScopedPointer"
drop_class "QScopedPointerArrayDeleter"
drop_class "QScopedPointerDeleter"
drop_class "QScopedPointerObjectDeleteLater"
drop_class "QScopedPointerPodDeleter"
drop_class "QScopedValueRollback"
drop_class "QSequentialConstIterator"
drop_class "QSequentialIterable"
drop_class "QSequentialIterableImpl"
drop_class "QSequentialIterator"
drop_class "QSet"
drop_class "QSetIterator"
drop_class "QSharedDataPointer"
drop_class "QSharedData"   # where to get QAtomic?
drop_class "QSharedPointer"
drop_class "QSpecialInteger"
drop_class "QStack"
drop_class "QStaticArrayData"
drop_class "QStaticByteArrayData"
drop_class "QStaticByteArrayMatcher"
drop_class "QStaticByteArrayMatcherBase"
drop_class "QStaticPlugin"  # needs function pointers
drop_class "QStaticStringData"
drop_class "QStdWString"
drop_class "QStringBuilder"
drop_class "QStringBuilder" 
drop_class "QStringBuilderBase"
drop_class "QStringBuilderCommon"
drop_class "QStringDecoder", /EncodedData/
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"
drop_class "QTaggedIterator"
drop_class "QTaggedPointer"
drop_class "QtAlgorithms"
drop_class "QtCleanUpFunction"
drop_class "QtContainerFwd"
drop_class "QtDebug"
drop_class "QtEndian"
drop_class "QTextCodecFactoryInterface"
drop_class "QTextCodecPlugin"
drop_class "QTextIStream"
drop_class "QTextOStream"
drop_class "QTextStreamFunction"
drop_class "QTextStreamManipulator"
drop_class "QtFuture"
drop_class "QtGlobal"
drop_class "QtGlobalStatic"
drop_class "QThreadStorage"
drop_class "QThreadStorageData"
drop_class "QtMetaContainerPrivate"
drop_class "QtMetaTypePrivate"
drop_class "QtMsgHandler"
drop_class "QtPlugin"
drop_class "QtPluginInstanceFunction"
drop_class "QtPrivate"
drop_class "QtSharedPointer"
drop_class "QtStringBuilder"
drop_class "QTypedArrayData"
drop_class "QTypeInfo"
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"
drop_class "QVariant"
drop_class "QVariantComparisonHelper"
drop_class "QVariantConstPointer"
drop_class "QVariantConstPointer"
drop_class "QVariantList"
drop_class "QVariantMap"
drop_class "QVariantPointer"
drop_class "QVariantRef"
drop_class "QVarLengthArray"
drop_class "QVector"
drop_class "QVectorData"
drop_class "QVectorIterator"
drop_class "QVectorTypedData"
drop_class "QWeakPointer"

drop_enum_const "QEvent", /CocoaRequestModal/ # not available on WIN

drop_method "QMetaType", /QMetaType::staticMetaObject/  # not available
drop_method "QMetaType", /QMetaType::register.*Function\(/  # std::function not available
drop_method "QDeadlineTimer", /QDeadlineTimer::_q_data/  # internal and QPair is not bound
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
drop_method "QMetaSequence", /QMetaSequence::QMetaSequence\(.*MetaSequenceInterface/ # interface class not available
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
drop_method "QJsonValue", /QJsonValue::QJsonValue\(\s*const\s+char\s*\*/ # clashes with QString version
drop_method "QJsonValue", /QJsonValue::QJsonValue\(\s*int\s+/ # clashes with long version
drop_method "QJsonValue", /QJsonValue::QJsonValue\(\s*QLatin1String/ # QLatin1String not available
drop_method "QJsonValue", /::operator\[\].*QLatin1String/  # clashes with QString version
drop_method "QJsonValue", /::operator\[\].*QStringView/  # clashes with QString version
drop_method "QJsonDocument", /::operator\[\].*QLatin1String/  # clashes with QString version
drop_method "QJsonDocument", /::operator\[\].*QStringView/  # clashes with QString version
drop_method "QTextBoundaryFinder", /QTextBoundaryFinder::QTextBoundaryFinder\(.*unsigned\s+char\s*\*/ # unsigned char * not available
drop_method "QMessageLogger", /QMessageLogger::critical\(.*catFunc/ # function pointers not supported currently
drop_method "QMessageLogger", /QMessageLogger::debug\(.*catFunc/ # function pointers not supported currently
drop_method "QMessageLogger", /QMessageLogger::info\(.*catFunc/ # function pointers not supported currently
drop_method "QMessageLogger", /QMessageLogger::warning\(.*catFunc/ # function pointers not supported currently
drop_method "QMessageLogContext", /QMessageLogContext::copy/ # unresolved in linker and not supported
drop_method "QAssociativeIterable", /QAssociativeIterable::QAssociativeIterable/ # No supportable constructor
drop_method "QAssociativeIterable", /QAssociativeIterable::find/ # (TODO): iterators not supported yet
drop_method "QAssociativeIterable", /QAssociativeIterable::begin/ # (TODO): iterators not supported yet
drop_method "QAssociativeIterable", /QAssociativeIterable::end/ # (TODO): iterators not supported yet
drop_method "QSequentialIterable", /QSequentialIterable::QSequentialIterable\(QtMetaTypePrivate::QSequentialIterableImpl/ # QSequentialIterableImpl not available
drop_method "QSequentialIterable", /QSequentialIterable::begin/ # (TODO): iterators not supported yet
drop_method "QSequentialIterable", /QSequentialIterable::end/ # (TODO): iterators not supported yet
drop_method "QFont", /QFont::initialize/ # Must not hide Ruby's initialize and is not public
drop_method "QColormap", /QColormap::initialize/ # Must not hide Ruby's initialize and is not public
drop_method "QAccessible", /QAccessible::initialize/ # Must not hide Ruby's initialize and is not public
drop_method "QEasingCurve", /QEasingCurve::setCustomType/ # requires function * 
drop_method "QEasingCurve", /QEasingCurve::customType/ # requires function * 
drop_method "QLibrary", /QLibrary::resolve/ # requires function * 
drop_method "QLoggingCategory", /QLoggingCategory::installFilter/ # requires function * 
drop_method "QMetaObject", /QMetaObject::cast\(/ # internal
drop_method "QMetaObject", /QMetaObject::d\(/ # invalid return value (struct)
drop_method "QMetaObject", /QMetaObject::invokeMethod/ # requires QGenericArgument which is a macro
drop_method "QMetaObject", /QMetaObject::metacall/ # requires void** 
drop_method "QMetaMethod", /QMetaMethod::invoke/ # requires QGenericArgument which is a macro
drop_method "QMetaMethod", /QMetaMethod::newInstance/ # requires QGenericArgument which is a macro
drop_method "QMetaObject", /QMetaObject::activate/ # requires void**
drop_method "QMetaObject", /QMetaObject::static_metacall/ # requires void**
drop_method "QMetaObject", /QMetaObject::addGuard/ # requires QObject**
drop_method "QMetaObject", /QMetaObject::changeGuard/ # requires QObject**
drop_method "QMetaObject", /QMetaObject::removeGuard/ # requires QObject**
drop_method "QMetaObject", /QMetaObject::newInstance/ # requires QGenericArgument
drop_method "QMetaType", /QMetaType::registerStreamOperators/ # requires callbacks
drop_method "QMetaType", /QMetaType::registerType/ # requires callbacks
drop_method "QMatrix4x4", /QMatrix4x4::QMatrix4x4.*GenericMatrix/ # GenericMatrix is a template
drop_method "QMatrix4x4", /QMatrix4x4::normalMatrix/ # return value GenericMatrix is a template
drop_method "QMatrix4x4", /QMatrix4x4::toGenericMatrix/ # return value GenericMatrix is a template
drop_method "QMimeType", /QMimeType::QMimeType\(const\s+QMimeTypePrivate\s+/ # no access to internal struct
drop_method "QCoreApplication", /QCoreApplication::setEventFilter/ # requires callbacks
drop_method "QCoreApplication", /QCoreApplication::argv/ # requires char **
drop_method "QCoreApplication", /QCoreApplication::argc/ # does not make sense without argv ..
drop_method "QCoreApplication", /QCoreApplication::compressEvent/ # QPostEventList is missing
drop_method "QCoreApplication", /QCoreApplication::watchUnixSignal/ # not available on WIN
keep_arg "QCoreApplication", /::postEvent/, 1    # will take ownership of event
drop_method "", /::operator\s*>>\(QDataStream\s*&/ # implemented through "read" below
drop_method "", /::operator\s*<<\(QDataStream\s*&/ # implemented through "put" below
drop_method "QDataStream", /::operator\s*>>/ # implemented through read
drop_method "QDataStream", /::operator\s*<</ # implemented through put
drop_method "QDataStream", /QDataStream::readBytes\s*\(\s*char\s*\*\s*&/ # requires "char *&"
drop_method "QStringMatcher", /QStringMatcher::QStringMatcher\(const\s+QChar\s+\*/ # requires "QChar *", alternative available
drop_method "QStringMatcher", /QStringMatcher::indexIn\(const\s+QChar\s+\*/ # requires "QChar *", alternative available
drop_method "QObject", /QObject::findChild/ # template member
drop_method "QObject", /QObject::findChildren/ # template member
drop_method "QObject", /QObject::setUserData/ # QObjectUserData not available
drop_method "QObject", /QObject::userData/ # QObjectUserData not available
drop_method "QFile", /QFile::setDecodingFunction/ # uses callbacks
drop_method "QFile", /QFile::setEncodingFunction/ # uses callbacks
drop_method "QFile", /QFile::open.*FILE/ # uses internal struct
drop_method "QFileInfo", /QFileInfo::QFileInfo\(QFileInfoPrivate\s+\*/ # uses internal struct
drop_method "QPrinter", /QPrinter::printerSelectionOption/ # not available on WIN
drop_method "QPrinter", /QPrinter::setPrinterSelectionOption/ # not available on WIN
drop_method "QSessionManager", /QSessionManager::handle/ # not available on WIN
drop_method "QPersistentModelIndex", /QPersistentModelIndex::operator\s+const\s+class\s+QModelIndex/ # implemented specially
drop_method "QSettings", /QSettings::registerFormat/ # uses callbacks
drop_method "QSettings", /QSettings::iniCodec/ # requires QTextCodec
drop_method "QSettings", /QSettings::setIniCodec/ # requires QTextCodec
drop_method "QAbstractFileEngine", /QAbstractFileEngine::supportsExtension/ # missing classes ExtensionOption etc.
drop_method "QAbstractFileEngine", /QAbstractFileEngine::extension/ # missing classes ExtensionOption etc.
drop_method "QUrl", /QUrl::data_ptr/ # QUrlPrivate not available
drop_method "QFile", /QFile::fileEngine\(\)/ # requires AbstractFileEngine
drop_method "QTemporaryFile", /QTemporaryFile::fileEngine\(\)/ # requires AbstractFileEngine
drop_method "QTemporaryFile", /QTemporaryFile::readData\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QTemporaryFile", /QTemporaryFile::readLineData\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QFile", /QFile::map\(/ # requires char * as address
drop_method "QFile", /QFile::unmap\(/ # requires char * as address
drop_method "QFile", /QFile::readData\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QFile", /QFile::readLineData\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QFileDevice", /QFileDevice::map\(/ # requires char * as address
drop_method "QFileDevice", /QFileDevice::unmap\(/ # requires char * as address
drop_method "QFileDevice", /QFileDevice::readData\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QFileDevice", /QFileDevice::readLineData\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QSaveFile", /QSaveFile::readData\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QSaveFile", /QSaveFile::readLineData\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QIODevice", /QIODevice::getChar\(/ # requires char *, TODO: provide alternative?
drop_method "QIODevice", /QIODevice::peek\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QIODevice", /QIODevice::read\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QIODevice", /QIODevice::readLine\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QIODevice", /QIODevice::readData\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QIODevice", /QIODevice::readLineData\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QIODevice", /QIODevice::write\(const\s+char\s*\*[^,]*\)/ # clashes with QByteArray version (because of handling of binary data containing 0 characters we prefer write(QByteArray))
drop_method "QProcess", /QProcess::readData\(/ # requires char * 
drop_method "QProcess", /QProcess::readLineData\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QDataStream", /QDataStream::readRawData\(char\s*\*/ # requires char *
drop_method "QFile", /QFile::open\(int/ # unsupported file descriptor
drop_method "QFile", /QFile::decodeName\(const\s+QByteArray/ # clashes with const char * version
drop_method "QTemporaryFile", /QTemporaryFile::open\(int/ # unsupported file descriptor
drop_method "QTextStream", /QTextStream::QTextStream\(QByteArray/ # clashes with QString variant
drop_method "QTextStream", /QTextStream::QTextStream\(const\s*QByteArray/ # clashes with QString variant
drop_method "QTextStream", /QTextStream::QTextStream\(.*FILE/ # unsupported FILE
drop_method "QTextStream", /QTextStream::QTextStream\(.*FILE/ # unsupported FILE
drop_method "", /::operator\s*>>\(QTextStream\s*&/ # implemented through read
drop_method "", /::operator\s*<<\(QTextStream\s*&/ # implemented through put
drop_method "QTextStream", /::operator\s*>>/ # implemented through read
drop_method "QTextStream", /::operator\s*<</ # implemented through put
drop_method "QTextStream", /QTextStream::readData\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QTextStream", /QTextStream::readLineData\(char\s*\*/ # requires char *, QByteArray alternative available
drop_method "QTextCodec", /QTextCodec::codecForName\(const\s+QByteArray/ # clashes with const char * variant
drop_method "QTextCodec", /QTextCodec::toUnicode\(const\s+QByteArray/ # clashes with const char * variant
drop_method "QTextCodec", /QTextCodec::fromUnicode\(const\s+QChar\s+\*/ # requires real QChar *
drop_method "QTextEncoder", /QTextEncoder::fromUnicode\(const\s+QChar\s+\*/ # requires real QChar *
drop_method "", /::operator\s*==\(const\s+QVariant\s*&\w+,\s*const\s+QVariantComparisonHelper/ # requires QVariantComparisonHelper
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::c?rbegin/ # iterator not available
drop_method "QRegion", /QRegion::c?rend/ # 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?)
drop_method "QNoDebug", /QNoDebug::operator<</ # nothing usable (TODO: how to map?)

# No longer supported operator== and operator!= in Qt 6.7/6.8/6.9
add_native_operator_neq(self, "QEasingCurve")
add_native_operator_neq(self, "QTimeZone")
add_native_operator_neq(self, "QDir")
add_native_operator_neq(self, "QFileInfo")
add_native_operator_neq(self, "QItemSelectionRange")
add_native_operator_neq(self, "QJsonArray")
add_native_operator_cmp(self, "QJsonArray::iterator")
add_native_operator_neq(self, "QJsonDocument")
add_native_operator_neq(self, "QJsonObject")
add_native_operator_cmp(self, "QJsonObject::iterator")
add_native_operator_neq(self, "QJsonValue")
add_native_operator_neq(self, "QJsonValueRef")
add_native_operator_neq(self, "QLine")
add_native_operator_neq(self, "QLineF")
add_native_operator_neq(self, "QMimeType")
add_native_operator_neqlt(self, "QModelIndex")
add_native_operator_neqlt(self, "QPersistentModelIndex")
add_native_operator_neq(self, "QProcessEnvironment")
add_native_operator_neq(self, "QRegularExpression")
add_native_operator_neqlt(self, "QUrl")
add_native_operator_neq(self, "QUrlQuery")
add_native_operator_neq(self, "QDomNodeList")
add_native_operator_neq(self, "QXmlStreamAttribute")
add_native_operator_neq(self, "QXmlStreamEntityDeclaration")
add_native_operator_neq(self, "QXmlStreamNamespaceDeclaration")
add_native_operator_neq(self, "QXmlStreamNotationDeclaration")

include "QCoreApplication", [ "<QCoreApplication>", "<QAbstractEventDispatcher>", "<QAbstractNativeEventFilter>", "<QTranslator>" ]
include "QThread", [ "<QThread>", "<QAbstractEventDispatcher>" ]

rename "QLocale", /QLocale::toString\(int i/, "toString_i"
rename "QLocale", /QLocale::toString\(unsigned int/, "toString_ui"
rename "QLocale", /QLocale::toString\(short i/, "toString_s"
rename "QLocale", /QLocale::toString\(unsigned short/, "toString_us"
rename "QLocale", /QLocale::toString\(qlonglong/, "toString_ll"
rename "QLocale", /QLocale::toString\(qulonglong/, "toString_ull"
rename "QLocale", /QLocale::toString\(float/, "toString_f"
rename "QLocale", /QLocale::toString\(double/, "toString_d"

rename "QResource", /QResource::registerResource\(const\s+unsigned\s+char\s+\*/, "registerResource_data"
rename "QResource", /QResource::registerResource\(const QString/, "registerResource_file"
rename "QResource", /QResource::unregisterResource\(const\s+unsigned\s+char\s+\*/, "unregisterResource_data"
rename "QResource", /QResource::unregisterResource\(const QString/, "unregisterResource_file"

rename "QProcess", /QProcess::error\(QProcess::ProcessError/, "error_sig" # disambiguator
rename "QProcess", /QProcess::finished\(int[\s\w]*\)/, "finished_int" # disambiguator finished(int) vs. finished(int, QProcess::ExitStatus)

# alternative implementation for QCoreApplication::QCoreApplication 
drop_method "QCoreApplication", /QCoreApplication::QCoreApplication/
add_native_qapp_ctor_impl("QCoreApplication")

# Reasoning: "notify" is hardly needed (use postEvent or sendEvent instead). Reimplementing remains as a use case.
# Reimplementing this method however is questionable: providing an reimplementation hook has severe consequences as even 
# Qt object constructors will route over this slot and invoke interpreter calls. This will for example lead to preliminary
# binding of Qt objects to Python objects, hence spoil their object identity.
drop_method "QCoreApplication", /QCoreApplication::notify/
drop_method "QApplication", /QApplication::notify/
drop_method "QGuiApplication", /QGuiApplication::notify/

# alternative implementation for QObject::findChild
add_native_impl_QObject_findChild

# alternative implementation for QRegion::setRects
add_native_impl_QRegion

# alternative implementation for QPersistentQModelIndex::operator const QModelIndex &
add_native_impl_QPersistentQModelIndex

# implementation of operator<< and operator>> for QDataStream
add_native_impl_streams

final_class "QIODevice"  # because readData cannot be reimplemented 
final_class "QBuffer"  # because readData cannot be reimplemented 
final_class "QFile"  # because readData cannot be reimplemented 
final_class "QTemporaryFile"  # because readData cannot be reimplemented 
final_class "QProcess"  # because readData cannot be reimplemented 

drop_method "QPolygon", /QPolygon::putPoints\(.*const\s+int\s+\*/ # requires const int *
drop_method "QPolygon", /QPolygon::setPoints\(.*const\s+int\s+\*/ # requires const int *
drop_method "QPolygon", /QPolygon::QPolygon\(.*const\s+int\s+\*/ # requires const int *
no_imports "QPolygon"  # base class is a template. Base methods are implemented specifically.
no_imports "QPolygonF"  # base class is a template. Base methods are implemented specifically.

# enhance QPolygon by some missing methods because we dropped the base class and 
# support for db methods
add_native_impl_polygons

no_copy_ctor "QBasicMutex"
no_copy_ctor "QMapDataBase"
no_copy_ctor "QChildEvent"
no_copy_ctor "QDynamicPropertyChangeEvent"
no_copy_ctor "QEvent"
no_copy_ctor "QPropertyNotifier"
no_copy_ctor "QPropertyObserver"
no_copy_ctor "QSemaphoreReleaser"
no_copy_ctor "QSemaphoreReleaser"
no_copy_ctor "QStringConverter"
no_copy_ctor "QStringDecoder"
no_copy_ctor "QStringEncoder"
no_copy_ctor "QTimerEvent"

no_default_ctor "QModelRoleData"
no_default_ctor "QPartialOrdering"
no_default_ctor "QOperatingSystemVersion"
no_default_ctor "QStringConverter"
no_default_ctor "QStringConverterBase"

drop_method "QMessageLogger", /QMessageLogger::critical.*\.\.\./ # does not support ...
drop_method "QMessageLogger", /QMessageLogger::debug.*\.\.\./ # does not support ...
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) {
    logger->critical("%s", msg);
  }
  static void critical2(QMessageLogger *logger, const QLoggingCategory &cat, const char *msg) {
    logger->critical(cat, "%s", msg);
  }
  static void debug1(QMessageLogger *logger, const char *msg) {
    logger->debug("%s", msg);
  }
  static void debug2(QMessageLogger *logger, const QLoggingCategory &cat, const char *msg) {
    logger->debug(cat, "%s", msg);
  }
  static void fatal1(QMessageLogger *logger, const char *msg) {
    logger->fatal("%s", msg);
  }
  static void info1(QMessageLogger *logger, const char *msg) {
    logger->info("%s", msg);
  }
  static void info2(QMessageLogger *logger, const QLoggingCategory &cat, const char *msg) {
    logger->info(cat, "%s", msg);
  }
  static void noDebug1(QMessageLogger *logger, const char *msg) {
    logger->noDebug("%s", msg);
  }
  static void warning1(QMessageLogger *logger, const char *msg) {
    logger->warning("%s", msg);
  }
  static void warning2(QMessageLogger *logger, const QLoggingCategory &cat, const char *msg) {
    logger->warning(cat, "%s", msg);
  }
CODE
  gsi::method_ext("critical", &critical1, gsi::arg ("msg"), "@brief Method void QMessageLogger::critical(const char *msg)") +
  gsi::method_ext("critical", &critical2, gsi::arg ("cat"), gsi::arg ("msg"), "@brief Method void QMessageLogger::critical(const QLoggingCategory &cat, const char *msg)") +
  gsi::method_ext("debug", &debug1, gsi::arg ("msg"), "@brief Method void QMessageLogger::debug(const char *msg)") +
  gsi::method_ext("debug", &debug2, gsi::arg ("cat"), gsi::arg ("msg"), "@brief Method void QMessageLogger::debug(const QLoggingCategory &cat, const char *msg)") +
  gsi::method_ext("fatal", &fatal1, gsi::arg ("msg"), "@brief Method void QMessageLogger::fatal(const char *msg)") +
  gsi::method_ext("info", &info1, gsi::arg ("msg"), "@brief Method void QMessageLogger::info(const char *msg)") +
  gsi::method_ext("info", &info2, gsi::arg ("cat"), gsi::arg ("msg"), "@brief Method void QMessageLogger::info(const QLoggingCategory &cat, const char *msg)") +
  gsi::method_ext("noDebug", &noDebug1, gsi::arg ("msg"), "@brief Method void QMessageLogger::noDebug(const char *msg)") +
  gsi::method_ext("warning", &warning1, gsi::arg ("msg"), "@brief Method void QMessageLogger::warning(const char *msg)") +
  gsi::method_ext("warning", &warning2, gsi::arg ("cat"), gsi::arg ("msg"), "@brief Method void QMessageLogger::warning(const QLoggingCategory &cat, const char *msg)")
DECL

drop_method("QStringDecoder", /::decode/)
drop_method("QStringDecoder", /::operator\(\)/)

add_native_impl("QStringDecoder", <<'CODE', <<'DECL')
  static QString decode (QStringDecoder *decoder, const QByteArray &ba)
  {
    return decoder->decode (ba); 
  }
CODE
  gsi::method_ext("decode", &decode, gsi::arg ("ba"), "@brief Method QStringDecoder::EncodedData<QByteArrayView> QStringDecoder::decode(QByteArrayView ba)\n") +
  gsi::method_ext("()", &decode, gsi::arg ("ba"), "@brief Method QStringDecoder::EncodedData<QByteArrayView> QStringDecoder::decode(QByteArrayView ba)\n")
DECL

drop_method("QStringEncoder", /::encode/)
drop_method("QStringEncoder", /::operator\(\)/)

add_native_impl("QStringEncoder", <<'CODE', <<'DECL')
  static QByteArray encode (QStringEncoder *encoder, const QString &in)
  {
    return encoder->encode (in); 
  }
CODE
  gsi::method_ext("encode", &encode, gsi::arg ("in"), "@brief Method QStringEncoder::DecodedData<QStringView> QStringEncoder::encode(QStringView in)\n") + 
  gsi::method_ext("()", &encode, gsi::arg ("in"), "@brief Method QStringEncoder::DecodedData<QStringView> QStringEncoder::operator()(QStringView in)\n")
DECL

drop_method("QStringEncoder", /::appendToBuffer/)  # needs char *
drop_method("QStringDecoder", /::appendToBuffer/)  # needs char *

# not compatible between Qt6.4 and 6.2 and not needed
drop_class("QJsonArray", /const_iterator/)
drop_method("QJsonArray", /::constBegin/)
drop_method("QJsonArray", /::constEnd/)
drop_method("QJsonArray", /::cbegin/)
drop_method("QJsonArray", /::cend/)
drop_method("QJsonArray", /::const_iterator.*::begin/)
drop_method("QJsonArray", /::const_iterator.*::end/)
drop_method("QJsonArray", /::const_iterator.*::end/)
drop_method("QJsonArray", /QJsonValue\s+QJsonArray::operator\[\]/)
drop_method("QJsonArray::iterator", /::operator!=.*const_iterator/)
drop_method("QJsonArray::iterator", /::operator<.*const_iterator/)
drop_method("QJsonArray::iterator", /::operator<=.*const_iterator/)
drop_method("QJsonArray::iterator", /::operator==.*const_iterator/)
drop_method("QJsonArray::iterator", /::operator>.*const_iterator/)
drop_method("QJsonArray::iterator", /::operator>=.*const_iterator/)

# not compatible between Qt6.4 and 6.2 and not needed
drop_class("QJsonObject", /const_iterator/)
drop_method("QJsonObject", /::constBegin/)
drop_method("QJsonObject", /::constEnd/)
drop_method("QJsonObject", /::cbegin/)
drop_method("QJsonObject", /::cend/)
drop_method("QJsonObject", /::constFind/)
drop_method("QJsonObject", /::const_iterator.*::begin/)
drop_method("QJsonObject", /::const_iterator.*::end/)
drop_method("QJsonObject", /::const_iterator.*::find/)
drop_method("QJsonObject", /QJsonValue\s+QJsonObject::operator\[\]/)
drop_method("QJsonObject", /::.*QLatin1String/)
drop_method("QJsonObject", /::.*QStringView/)
drop_method("QJsonObject::iterator", /::operator!=.*const_iterator/)
drop_method("QJsonObject::iterator", /::operator<.*const_iterator/)
drop_method("QJsonObject::iterator", /::operator<=.*const_iterator/)
drop_method("QJsonObject::iterator", /::operator==.*const_iterator/)
drop_method("QJsonObject::iterator", /::operator>.*const_iterator/)
drop_method("QJsonObject::iterator", /::operator>=.*const_iterator/)

# --------------------------------------------------------------
# QtGui

drop_class "QAccessible2"
drop_class "QAccessibleApplication"
drop_class "QAccessibleBridgePlugin"
drop_class "QAccessibleBridge" # QAccessibleBridge not supported on Windows:
drop_class "QAccessibleInterfaceEx"
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 "QBrushDataPointerDeleter"
drop_class "QColorConstants"  # features brace-initialized constexpr constants which are not supported yet
drop_class "QCopChannel"
drop_class "QCustomRasterPaintDevice"
drop_class "QDecoration"
drop_class "QDecorationDefault"
drop_class "QDecorationFactory"
drop_class "QDecorationPlugin"
drop_class "QDirectPainter"
drop_class "QDrawBorderPixmap"
drop_class "QDrawPixmaps"
drop_class "QFontEngineInfo"
drop_class "QFontEnginePlugin"
drop_class "QGenericMatrix"
drop_class "QGtkStyle"  # not available on WIN
drop_class "QIconEngineFactoryInterface"
drop_class "QIconEngineFactoryInterfaceV2"
drop_class "QIconEngineV2", /AvailableSizesArgument/
drop_class "QImageIOHandlerFactoryInterface"
drop_class "QInputContextFactoryInterface"
drop_class "QItemEditorCreator"   # is a template 
drop_class "QKbdDriverFactory"
drop_class "QKbdDriverPlugin"
drop_class "QKeyEventTransition"
drop_class "QMacCocoaViewContainer"
drop_class "QMacNativeWidget"
drop_class "QMacPasteboardMime"
drop_class "QMacStyle"
drop_class "QMdi"
drop_class "QMouseDriverFactory"
drop_class "QMouseDriverPlugin"
drop_class "QMouseEventTransition"
drop_class "QPainterPathPrivate"
drop_class "QPictureIO"
drop_class "QPixmapCache", /Key/
drop_class "QProxyScreen"
drop_class "QProxyScreenCursor"
drop_class "QProxyStyle"
drop_class "QRasterPaintEngine"
drop_class "QScreenCursor"
drop_class "QScreenDriverFactory"
drop_class "QScreenDriverPlugin"
drop_class "QStandardItemEditorCreator"  # is a template
drop_class "QStyleFactoryInterface"
drop_class "QStyleOptionDockWidgetV2"
drop_class "QStyleOptionTabWidgetFrameV2"
drop_class "QSymbianEvent"
drop_class "QTextFrameLayoutData"
drop_class "QTileRules"
drop_class "QWidgetData"
drop_class "QWidgetItemV2"
drop_class "QWindowsVistaStyle" # not available on Unix?
drop_class "QWindowsXPStyle" # not available on Unix?
drop_class "QWSCalibratedMouseHandler"
drop_class "QWSClient"
drop_class "QWSEmbedWidget"
drop_class "QWSEvent"
drop_class "QWSInputMethod"
drop_class "QWSKeyboardHandler"
drop_class "QWSMouseHandler"
drop_class "QWSPointerCalibrationData"
drop_class "QWSScreenSaver"
drop_class "QWSServer"
drop_class "QWSWindow"
drop_class "QAbstractOpenGLFunctions"  # OpenGL native types not supported
drop_class "QAbstractOpenGLFunctionsPrivate"  # OpenGL native types not supported
drop_class "QOpenGLBuffer"  # OpenGL native types not supported
drop_class "QOpenGLContext"  # OpenGL native types not supported
drop_class "QOpenGLContextGroup"  # OpenGL native types not supported
drop_class "QOpenGLDebugLogger"  # OpenGL native types not supported
drop_class "QOpenGLDebugMessage"  # OpenGL native types not supported
drop_class "QOpenGLFramebufferObject"  # OpenGL native types not supported
drop_class "QOpenGLFramebufferObjectFormat"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_0"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_0_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_0_DeprecatedBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_1"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_1_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_1_DeprecatedBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_2"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_2_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_2_DeprecatedBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_3"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_3_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_3_DeprecatedBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_4"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_4_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_4_DeprecatedBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_5"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_1_5_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_2_0"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_2_0_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_2_0_DeprecatedBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_2_1"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_2_1_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_3_0"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_3_0_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_3_0_DeprecatedBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_3_1"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_3_1_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_3_2_Compatibility"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_3_2_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_3_2_Core"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_3_3_Compatibility"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_3_3_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_3_3_Core"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_3_3_DeprecatedBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_0_Compatibility"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_0_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_0_Core"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_1_Compatibility"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_1_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_1_Core"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_2_Compatibility"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_2_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_2_Core"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_3_Compatibility"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_3_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_3_Core"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_4_Compatibility"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_4_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_4_Core"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_5_Compatibility"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_5_CoreBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_5_Core"  # OpenGL native types not supported
drop_class "QOpenGLFunctions_4_5_DeprecatedBackend"  # OpenGL native types not supported
drop_class "QOpenGLFunctions"  # OpenGL native types not supported
drop_class "QOpenGLFunctionsPrivate"  # OpenGL native types not supported
drop_class "QOpenGLPaintDevice"  # OpenGL native types not supported
drop_class "QOpenGLPixelTransferOptions"  # OpenGL native types not supported
drop_class "QOpenGLShader"  # OpenGL native types not supported
drop_class "QOpenGLShaderProgram"  # OpenGL native types not supported
drop_class "QOpenGLTexture"  # OpenGL native types not supported
drop_class "QOpenGLTimeMonitor"  # OpenGL native types not supported
drop_class "QOpenGLTimerQuery"  # OpenGL native types not supported
drop_class "QOpenGLVersionFunctionsBackend"  # OpenGL native types not supported
drop_class "QOpenGLVersionProfile"  # OpenGL native types not supported
drop_class "QOpenGLVersionStatus"  # OpenGL native types not supported
drop_class "QOpenGLVertexArrayObject_Binder"  # OpenGL native types not supported
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", [ "<QPoint>", "<QMatrix4x4>" ]
include "QPointF", [ "<QPointF>", "<QMatrix4x4>" ]
include "QVector3D", [ "<QVector3D>", "<QVector2D>", "<QMatrix4x4>" ]
include "QVector4D", [ "<QVector4D>", "<QVector2D>", "<QMatrix4x4>" ]
include "QAction", [ "<QAction>", "<QActionGroup>", "<QGraphicsWidget>", "<QMenu>" ]
include "QCursor", [ "<QCursor>", "<QScreen>", "<QBitmap>" ]
include "QGraphicsItem", [ "<QGraphicsItem>", "<QGraphicsTransform>", "<QGraphicsScene>", "<QStyleOptionGraphicsItem>", "<QGraphicsEffect>", "<QGraphicsWidget>", "<QGraphicsSceneContextMenuEvent>", "<QGraphicsSceneDragDropEvent>", "<QGraphicsSceneHoverEvent>", "<QGraphicsSceneMouseEvent>", "<QGraphicsSceneWheelEvent>", "<QPainter>" ]
include "QGraphicsObject", [ "<QGraphicsObject>", "<QChildEvent>", "<QCursor>", "<QEvent>", "<QFocusEvent>", "<QGraphicsEffect>", 
                             "<QGraphicsItem>", "<QGraphicsItemGroup>", "<QGraphicsScene>", "<QGraphicsSceneContextMenuEvent>", "<QGraphicsSceneDragDropEvent>", 
                             "<QGraphicsSceneHoverEvent>", "<QGraphicsSceneMouseEvent>", "<QGraphicsSceneWheelEvent>", "<QGraphicsWidget>", 
                             "<QInputMethodEvent>", "<QKeyEvent>", "<QMetaMethod>", "<QObject>", "<QPainter>", "<QPainterPath>", "<QPointF>", 
                             "<QPolygonF>", "<QRectF>", "<QRegion>", "<QSize>", "<QStyleOptionGraphicsItem>", "<QThread>", 
                             "<QTimerEvent>", "<QTransform>", "<QWidget>", 
                             "<QGraphicsTransform>" ]
include "QGraphicsScene", [ "<QGraphicsScene>", "<QGraphicsView>", "<QGraphicsItem>", "<QGraphicsWidget>", "<QGraphicsEllipseItem>", "<QGraphicsLineItem>", "<QGraphicsPathItem>", "<QGraphicsPixmapItem>", "<QGraphicsPolygonItem>", "<QGraphicsRectItem>", "<QGraphicsSimpleTextItem>", "<QGraphicsTextItem>", "<QGraphicsProxyWidget>", "<QGraphicsItemGroup>", "<QStyle>", "<QGraphicsSceneContextMenuEvent>", "<QGraphicsSceneDragDropEvent>", "<QGraphicsSceneHelpEvent>", "<QGraphicsSceneMouseEvent>", "<QGraphicsSceneWheelEvent>" ]
include "QGuiApplication", [ "<QGuiApplication>", "<QScreen>", "<QSessionManager>", "<QClipboard>", "<QWindow>", "<QStyleHints>", "<QFont>", "<QPalette>" ]
include "QApplication", [ "<QApplication>", "<QSessionManager>", "<QStyle>", "<QWindow>", "<QScreen>", "<QFont>", "<QFontMetrics>", "<QWidget>" ]
include "QWindow", [ "<QWindow>", "<QScreen>",
                     "<QAccessibleInterface>", "<QCloseEvent>", "<QExposeEvent>", "<QHideEvent>", "<QFocusEvent>", 
                     "<QKeyEvent>", "<QMouseEvent>", "<QMoveEvent>", "<QPaintEvent>", "<QResizeEvent>", 
                     "<QShowEvent>", "<QTabletEvent>", "<QTouchEvent>", "<QWheelEvent>" ]
include "QOffscreenSurface", [ "<QOffscreenSurface>", "<QScreen>" ]
include "QScreenOrientationChangeEvent", [ "<QScreenOrientationChangeEvent>", "<QScreen>" ]
include "QPointerEvent", [ "<QPointerEvent>", "<QEventPoint>", "<QInputDevice>", "<QObject>", 
                           "<QPointingDevice>", "<QPointer>" ]  # <QPointer> needed for Qt 6.7

drop_method "QWindow", /QWindow::handle/  # QPlatformWindow not available
drop_method "QScreen", /QScreen::handle/  # QPlatformScreen not available
drop_method "QSurface", /QSurface::surfaceHandle/  # QPlatformSurface not available
drop_method "QOffscreenSurface", /QOffscreenSurface::handle/  # QPlatformOffscreenSurface not available
drop_method "QGuiApplication", /QGuiApplication::compressEvent.*QPostEventList/  # QPostEventList not available
drop_method "QGuiApplication", /QGuiApplication::platformNativeInterface/  # QPlatformNativeInterface not available
drop_method "QGuiApplication", /QGuiApplication::platformFunction/  # (TODO) no function pointers available
drop_method "QPagedPaintDevice", /QPagedPaintDevice::dd/ # QPagedPaintDevicePrivate not available
drop_method "QPixmap", /QPixmap::QPixmap\(QPlatformPixmap/  # QPlatformPixmap not available
drop_method "QAbstractPageSetupDialog", /QAbstractPageSetupDialog::QAbstractPageSetupDialog\(QAbstractPageSetupDialogPrivate/ 
drop_method "QImage", /QImage::QImage\(.*cleanupFunction/   # (TODO) no function pointers available -> substitute by variant in add_native_impl_QImage
add_native_impl_QImage()
drop_method "QClipboardEvent", /QClipboardEvent::data/ 
drop_method "QClipboardEvent", /QClipboardEvent::QClipboardEvent\(QEventPrivate/ 
drop_method "QCursor", /QCursor::QCursor\s*\(\s*Qt::HANDLE/ # not available on WIN
drop_method "QApplication", /QApplication::compressEvent/ # QPostEventList is missing
drop_method "QWidget", /QWidget::painters/ # whatever that is, it's not a method ..
drop_method "QWidget", /QWidget::handle/ # not available on WIN
drop_method "QPixmap", /QPixmap::handle/ # not available on WIN
drop_method "QPixmap", /QPixmap::fromX11Pixmap/ # not available on WIN
drop_method "QTabletEvent", /QTabletEvent::QTabletEvent/ # TODO: too many arguments
drop_method "QGraphicsProxyWidget", /QGraphicsProxyWidget::setGeometry\(double/ # not available as override (private or protected inheritance?)
drop_method "QPixmap", /QPixmap::QPixmap\(const\s+char\s+\*\s*const\s*\w*\s*\[\s*\]/ # no const char *[] - TODO: provide differen implementation?
drop_method "QImage", /QImage::QImage\(const\s+char\s+\*\s*const\s*xpm\s*\[\s*\]/ # no const char *[] - TODO: provide differen implementation?
drop_method "QImage", /QImage::QImage\(const\s+char\s+\*\s*fileName/ # not available for QT_NO_CAST_TO_ASCII
drop_method "QAccessibleInterface", /QAccessibleInterface::imageInterface/ # Interface is not officially available 
drop_method "QAccessibleInterface", /QAccessibleInterface::actionInterface/ # Interface is not officially available 
drop_method "QAccessible", /QAccessible::installFactory/ # requires function ptr
drop_method "QAccessible", /QAccessible::removeFactory/ # requires function ptr
drop_method "QAccessible", /QAccessible::installRootObjectHandler/ # requires function ptr
drop_method "QAccessible", /QAccessible::installUpdateHandler/ # requires function ptr
drop_method "QPixmapCache", /QPixmapCache::find\s*\(\s*const\s+QPixmapCache::Key/ # requires Key subclass
drop_method "QPixmapCache", /QPixmapCache::insert\s*\(\s*const\s+QPixmap\s+\&pixmap\s*\)/ # requires Key subclass
drop_method "QPixmapCache", /QPixmapCache::remove\s*\(\s*const\s+QPixmapCache::Key/ # requires Key subclass
drop_method "QPixmapCache", /QPixmapCache::replace\s*\(\s*const\s+QPixmapCache::Key/ # requires Key subclass
drop_method "QGraphicsItem", /QGraphicsItem::isBlockedByModalPanel/  # requires QGraphicsItem **
drop_method "QGraphicsEffect", /QGraphicsEffect::source\s*\(\s*\)/  # requires QGraphicsEffectSource, not an official method
drop_method "QGraphicsScene", /QGraphicsScene::drawItems/  # requires QGraphicsItem *[], TODO: provide an alternative!
drop_method "QGraphicsView", /QGraphicsView::drawItems/  # requires QGraphicsItem *[], TODO: provide an alternative!
# drop_method "QGtkStyle", /QGtkStyle::QGtkStyle\s*\(\s*QGtkStylePrivate/  # requires QGtkStylePrivate
drop_method "QTextList", /QTextList::setFormat\(const\s+QTextFormat\s+/ # got mixed in somehow(?). Not part of API
drop_method "QTextTable", /QTextTable::setFormat\(const\s+QTextFormat\s+/ # got mixed in somehow(?). Not part of API
drop_method "QTextTableCell", /QTextTableCell::begin/ # requires template type return value (TODO: provide alternative?)
drop_method "QTextTableCell", /QTextTableCell::end/ # requires template type return value
drop_method "QRegion", /QRegion::handle/ # requires XRegion
drop_method "QFont", /QFont::freetypeFace/ # required FT_FACE struct
def_alias "QFont", /toString\(/, "to_s"
drop_method "QPixmap", /QPixmap::QPixmap\(QPixmapData/ # QPixmapData not available
drop_method "QPixmap", /QPixmap::pixmapData/ # QPixmapData not available
drop_method "QImage", /^\s*unsigned\s+char\s+\*\s*QImage::bits/ # TODO: requires non-const char *
drop_method "QImage", /^\s*unsigned\s+char\s+\*\s*QImage::scanLine/ # TODO: requires non-const char *
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 "QLabel", /QLabel::resourceProvider/ # needs std::function
drop_method "QLabel", /QLabel::setResourceProvider/ # 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
drop_method "QAccessibleInterface", /QAccessibleInterface::valueInterface/ # requires QAccessibleValueInterface which is not available
drop_method "QAccessibleObject", /QAccessibleObject::navigate/ # requires QAccessibleInterface **
drop_method "QAccessibleWidget", /QAccessibleWidget::navigate/ # requires QAccessibleInterface **
drop_method "QAccessibleInterface", /QAccessibleInterface::navigate/ # requires QAccessibleInterface **
drop_method "QAccessibleApplication", /QAccessibleApplication::navigate/ # requires QAccessibleInterface **
drop_method "QTextCursor", /QTextCursor::QTextCursor\(QTextCursorPrivate/ # Private data not available
drop_method "QTextCursor", /QTextCursor::QTextCursor\(QTextCursorPrivate/ # Private data not available
drop_method "QTextBlock", /QTextBlock::QTextBlock\(QTextDocumentPrivate/ # Private data not available
drop_method "QTextBlock", /QTextBlock::docHandle/ # Private data not available
drop_method "QTextCursor", /QTextCursor::QTextCursor\(QTextDocumentPrivate/ # Private data not available
drop_method "QTextDocument", /QTextDocument::docHandle/ # Private data not available
drop_method "QTextObject", /QTextObject::docHandle/ # Private data not available
drop_method "QTextFragment", /QTextFragment::QTextFragment\(const\s+QTextDocumentPrivate/ # Private data not available
drop_method "QTextInlineObject", /QTextInlineObject::QTextInlineObject\(int.*QTextEngine/ # QTextEngine not available
drop_method "QTextLayout", /QTextLayout::engine/ # QTextEngine not available
drop_method "QTextFrame", /QTextFrame::layoutData/ # QTextFrameLayoutData not available
drop_method "QTextFrame", /QTextFrame::begin/ # iterator not available
drop_method "QTextFrame", /QTextFrame::end/ # iterator not available
drop_method "QTextFrame", /QTextFrame::setLayoutData/ # QTextFrameLayoutData not available
drop_method "QWidget", /QWidget::windowSurface/ # QWindowSurface not available
drop_method "QWidget", /QWidget::setWindowSurface/ # QWindowSurface not available
drop_method "QFont", /QFont::resolve\s*\(\s*unsigned\s+int/ # internal? Messes up the generation (non-const?)
drop_method "QFont", /QFont::resolve\s*\(\s*\)/ # internal? Messes up the generation (non-const?)
drop_method "QPalette", /QPalette::resolve\s*\(\s*unsigned\s+int/ # internal? Messes up the generation (non-const?)
drop_method "QPalette", /QPalette::resolve\s*\(\s*\)/ # internal? Messes up the generation (non-const?)
drop_method "QMessageBox", /QMessageBox::warning.*int\s+\w+\s*,\s*int\s+\w+\s*\)/ # obsolete
drop_method "QMessageBox", /QMessageBox::question.*int\s+\w+\s*,\s*int\s+\w+\s*\)/ # obsolete
drop_method "QMessageBox", /QMessageBox::information.*int\s+\w+\s*,\s*int\s+\w+\s*\)/ # obsolete
drop_method "QMessageBox", /QMessageBox::critical.*int\s+\w+\s*,\s*int\s+\w+\s*\)/ # obsolete
drop_method "QMessageBox", /QMessageBox::standardIcon/ # obsolete
drop_method "QMessageBox", /QMessageBox::warning.*QMessageBox::StandardButton\s+\w+,\s*QMessageBox::StandardButton\s+\w+\s*\)/ # clashes with enum version
drop_method "QMessageBox", /QMessageBox::question.*QMessageBox::StandardButton\s+\w+,\s*QMessageBox::StandardButton\s+\w+\s*\)/ # clashes with enum version
drop_method "QMessageBox", /QMessageBox::critical.*QMessageBox::StandardButton\s+\w+,\s*QMessageBox::StandardButton\s+\w+\s*\)/ # clashes with enum version
drop_method "QMessageBox", /QMessageBox::information.*QMessageBox::StandardButton\s+\w+,\s*QMessageBox::StandardButton\s+\w+\s*\)/ # clashes with enum version
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?)
drop_method "QCloseEvent", /::clone\(/  # returns QCloseEvent *, not Event * (TODO: bug?)
drop_method "QIconDragEvent", /::clone\(/  # returns QIconDragEvent *, not Event * (TODO: bug?)
drop_method "QShowEvent", /::clone\(/  # returns QShowEvent *, not Event * (TODO: bug?)
drop_method "QHideEvent", /::clone\(/  # returns QHideEvent *, not Event * (TODO: bug?)
drop_method "QContextMenuEvent", /::clone\(/  # returns QContextMenuEvent *, not Event * (TODO: bug?)
drop_method "QInputMethodEvent", /::clone\(/  # returns QInputMethodEvent *, not Event * (TODO: bug?)
drop_method "QInputMethodQueryEvent", /::clone\(/  # returns QInputMethodQueryEvent *, not Event * (TODO: bug?)
drop_method "QDropEvent", /::clone\(/  # returns QDropEvent *, not Event * (TODO: bug?)
drop_method "QDragMoveEvent", /::clone\(/  # returns QDragMoveEvent *, not Event * (TODO: bug?)
drop_method "QDragEnterEvent", /::clone\(/  # returns QDragEnterEvent *, not Event * (TODO: bug?)
drop_method "QDragLeaveEvent", /::clone\(/  # returns QDragLeaveEvent *, not Event * (TODO: bug?)
drop_method "QHelpEvent", /::clone\(/  # returns QHelpEvent *, not Event * (TODO: bug?)
drop_method "QStatusTipEvent", /::clone\(/  # returns QStatusTipEvent *, not Event * (TODO: bug?)
drop_method "QWhatsThisClickedEvent", /::clone\(/  # returns QWhatsThisClickedEvent *, not Event * (TODO: bug?)
drop_method "QActionEvent", /::clone\(/  # returns QActionEvent *, not Event * (TODO: bug?)
drop_method "QFileOpenEvent", /::clone\(/  # returns QFileOpenEvent *, not Event * (TODO: bug?)
drop_method "QToolBarChangeEvent", /::clone\(/  # returns QToolBarChangeEvent *, not Event * (TODO: bug?)
drop_method "QShortcutEvent", /::clone\(/  # returns QShortcutEvent *, not Event * (TODO: bug?)
drop_method "QWindowStateChangeEvent", /::clone\(/  # returns QWindowStateChangeEvent *, not Event * (TODO: bug?)
drop_method "QWindowStateChangeEvent", /::clone\(/  # returns QWindowStateChangeEvent *, not Event * (TODO: bug?)
drop_method "QTouchEvent", /::clone\(/  # returns QTouchEvent *, not Event * (TODO: bug?)
drop_method "QScrollPrepareEvent", /::clone\(/  # returns QScrollPrepareEvent *, not Event * (TODO: bug?)
drop_method "QScrollEvent", /::clone\(/  # returns QScrollEvent *, not Event * (TODO: bug?)
drop_method "QScreenOrientationChangeEvent", /::clone\(/  # returns QScreenOrientationChangeEvent *, not Event * (TODO: bug?)
drop_method "QApplicationStateChangeEvent", /::clone\(/  # returns QApplicationStateChangeEvent *, not Event * (TODO: bug?)
drop_method "QInputEvent", /::clone\(/  # returns QInputEvent *, not Event * (TODO: bug?)
drop_method "QPointerEvent", /::clone\(/  # returns QPointerEvent *, not Event * (TODO: bug?)
drop_method "QSinglePointEvent", /::clone\(/  # returns QSinglePointEvent *, not Event * (TODO: bug?)
drop_method "QEnterEvent", /::clone\(/  # returns QEnterEvent *, not Event * (TODO: bug?)
drop_method "QMouseEvent", /::clone\(/  # returns QMouseEvent *, not Event * (TODO: bug?)
drop_method "QHoverEvent", /::clone\(/  # returns QHoverEvent *, not Event * (TODO: bug?)
drop_method "QWheelEvent", /::clone\(/  # returns QWheelEvent *, not Event * (TODO: bug?)
drop_method "QTabletEvent", /::clone\(/  # returns QTabletEvent *, not Event * (TODO: bug?)
drop_method "QNativeGestureEvent", /::clone\(/  # returns QNativeGestureEvent *, not Event * (TODO: bug?)
drop_method "QKeyEvent", /::clone\(/  # returns QKeyEvent *, not Event * (TODO: bug?)
drop_method "QFocusEvent", /::clone\(/  # returns QFocusEvent *, not Event * (TODO: bug?)
drop_method "QPaintEvent", /::clone\(/  # returns QPaintEvent *, not Event * (TODO: bug?)
drop_method "QMoveEvent", /::clone\(/  # returns QMoveEvent *, not Event * (TODO: bug?)
drop_method "QExposeEvent", /::clone\(/  # returns QExposeEvent *, not Event * (TODO: bug?)
drop_method "QPlatformSurfaceEvent", /::clone\(/  # returns QPlatformSurfaceEvent *, not Event * (TODO: bug?)
drop_method "QResizeEvent", /::clone\(/  # returns QResizeEvent *, not Event * (TODO: bug?)

include_enum "QTextDocument", /^ResourceType$/

rename "QRawFont", /QRawFont::supportsCharacter\(.*ucs4/, "supportsCharacter_ucs4"
drop_method "QTextLine", /QTextLine::cursorToX\(.*int\s*\*/  # clashes with int-only version
drop_method "QPainter", /QPainter::drawRects.*QRect\s+\*/  # requires pointers, alternative available
drop_method "QPainter", /QPainter::drawRects.*QRectF\s+\*/  # requires pointers, alternative available
drop_method "QPainter", /QPainter::drawConvexPolygon.*QPoint\s+\*/  # requires pointers, alternative available
drop_method "QPainter", /QPainter::drawConvexPolygon.*QPointF\s+\*/  # requires pointers, alternative available
drop_method "QPainter", /QPainter::drawPoints.*QPoint\s+\*/  # requires pointers, alternative available
drop_method "QPainter", /QPainter::drawPoints.*QPointF\s+\*/  # requires pointers, alternative available
drop_method "QPainter", /QPainter::drawPolygon.*QPoint\s+\*/  # requires pointers, alternative available
drop_method "QPainter", /QPainter::drawPolygon.*QPointF\s+\*/  # requires pointers, alternative available
drop_method "QPainter", /QPainter::drawPolyline.*QPoint\s+\*/  # requires pointers, alternative available
drop_method "QPainter", /QPainter::drawPolyline.*QPointF\s+\*/  # requires pointers, alternative available
drop_method "QPaintEngine", /QPaintEngine::drawRects.*QRect\s+\*/  # requires pointers, alternative available
drop_method "QPaintEngine", /QPaintEngine::drawRects.*QRectF\s+\*/  # requires pointers, alternative available
drop_method "QPaintEngine", /QPaintEngine::drawLines.*QLine\s+\*/  # requires pointers, alternative available
drop_method "QPaintEngine", /QPaintEngine::drawLines.*QLineF\s+\*/  # requires pointers, alternative available
drop_method "QPaintEngine", /QPaintEngine::drawPoints.*QPoint\s+\*/  # requires pointers, alternative available
drop_method "QPaintEngine", /QPaintEngine::drawPoints.*QPointF\s+\*/  # requires pointers, alternative available
drop_method "QPaintEngine", /QPaintEngine::drawPolygon.*QPoint\s+\*/  # requires pointers, alternative available
drop_method "QPaintEngine", /QPaintEngine::drawPolygon.*QPointF\s+\*/  # requires pointers, alternative available
drop_method "QPaintEngine", /QPaintEngine::fix_neg_rect/ # ?? 
rename "QPainter", /QPainter::drawRects.*QVector<QRect>/, "drawRects_i"
rename "QPainter", /QPainter::drawRects.*QVector<QRectF>/, "drawRects_f"
drop_method "QPainter", /QPainter::drawLines.*QLine\s+\*/
drop_method "QPainter", /QPainter::drawLines.*QLineF\s+\*/
drop_method "QPainter", /QPainter::drawLines.*QPoint\s+\*/
drop_method "QPainter", /QPainter::drawLines.*QPointF\s+\*/
rename "QPainter", /QPainter::drawLines.*QVector<QPoint>/, "drawLines_ip"
rename "QPainter", /QPainter::drawLines.*QVector<QPointF>/, "drawLines_fp"
rename "QPainter", /QPainter::drawLines.*QVector<QLine>/, "drawLines_i"
rename "QPainter", /QPainter::drawLines.*QVector<QLineF>/, "drawLines_f"
drop_method "QColor", /QColor::QColor\(const\s+QString/ # clashes with const char * version
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 "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"

# TODO: basically, the layout object only takes ownership over the objects when 
# it has a QWidget parent itself. This is not reflected in the following simple scheme
keep_arg "QBoxLayout", /::addLayout/, 0    # will take ownership of layout
keep_arg "QBoxLayout", /::addSpacerItem/, 0    # will take ownership of item
keep_arg "QBoxLayout", /::addWidget/, 0    # will take ownership of item
keep_arg "QBoxLayout", /::insertItem/, 1    # will take ownership of item
keep_arg "QBoxLayout", /::insertLayout/, 1    # will take ownership of item
keep_arg "QBoxLayout", /::insertSpacerItem/, 1    # will take ownership of item
keep_arg "QBoxLayout", /::insertWidget/, 1    # will take ownership of item
keep_arg "QFormLayout", /::addRow/, 1    # will take ownership of item
keep_arg "QFormLayout", /::addRow\(QWidget\s*\*/, 0    # will take ownership of item
keep_arg "QFormLayout", /::insertRow/, 2    # will take ownership of item
keep_arg "QFormLayout", /::insertRow\(QWidget\s*\*/, 1    # will take ownership of item
keep_arg "QFormLayout", /::setWidget/, 2    # will take ownership of item
keep_arg "QGridLayout", /::addLayout/, 0  # will take ownership of layout
keep_arg "QGridLayout", /::addItem/, 0  # will take ownership of layout
keep_arg "QGridLayout", /::addWidget/, 0  # will take ownership of layout
keep_arg "QLayout", /::addChildLayout/, 0  # will take ownership of layout
keep_arg "QLayout", /::addItem/, 0  # will take ownership of item
keep_arg "QLayout", /::addWidget/, 0  # will take ownership of item
keep_arg "QStackedLayout", /::addWidget/, 0  # will take ownership of item
keep_arg "QStackedLayout", /::insertWidget/, 1  # will take ownership of item

keep_arg "QWidget", /::setLayout\s*\(/, 0  # will take ownership of layout
keep_arg "QTreeWidgetItem", /::addChild\(/, 0  # will take ownership of the child
keep_arg "QTreeWidgetItem", /::addChildren\(/, 0  # will take ownership of the children
keep_arg "QTreeWidgetItem", /::insertChild\(/, 1  # will take ownership of the child
keep_arg "QTreeWidgetItem", /::insertChildren\(/, 1  # will take ownership of the children
keep_arg "QGraphicsScene", /::addItem\(/, 0  # will take ownership of the children
keep_arg "QListWidget", /::addItem\(QListWidgetItem/, 0  # will take ownership of the child
keep_arg "QListWidget", /::insertItem\(int.*QListWidgetItem/, 1  # will take ownership of the child
keep_arg "QTreeWidget", /::addTopLevelItem\(/, 0  # will take ownership of the child
keep_arg "QTreeWidget", /::addTopLevelItems\(/, 0  # will take ownership of the child
keep_arg "QTreeWidget", /::insertTopLevelItem\(/, 1  # will take ownership of the child
keep_arg "QTreeWidget", /::insertTopLevelItems\(/, 1  # will take ownership of the child
keep_arg "QTableWidget", /::setItem\(/, 2  # will take ownership of the child
keep_arg "QGraphicsItemGroup", /::addToGroup\(/, 0  # will take ownership of the child
keep_arg "QGraphicsScene", /::addItem\(/, 0 # will take ownership of the item
# constructors with "owner" arguments:
# (NOTE: QObject and QGraphicsItem is handled per specific base-class implementation)
owner_arg "QTreeWidgetItem", /::QTreeWidgetItem\(QTreeWidgetItem\s+\*/, 0 # will construct a new object owned by arg #0
owner_arg "QTreeWidgetItem", /::QTreeWidgetItem\(QTreeWidget\s+\*/, 0 # will construct a new object owned by arg #0
owner_arg "QListWidgetItem", /::QListWidgetItem\(QListWidget\s+\*/, 0 # will construct a new object owned by arg #0
owner_arg "QObject", /::setParent\(QObject\s+\*/, 0 # will make self owned by arg #0
owner_arg "QWidget", /::setParent\(QWidget\s+\*/, 0 # will make self owned by arg #0
# this would make sense, but the pointer is const: so how can setItemPrototype take
# over ownership of it?
# keep_arg "QTableWidget", /::setItemPrototype\(/, 0  # will take ownership of the child
return_new "QLayout", /::takeAt/   # returns a free object
return_new "QBoxLayout", /::takeAt/   # returns a free object
return_new "QFormLayout", /::takeAt/   # returns a free object
return_new "QGridLayout", /::takeAt/   # returns a free object
# TODO: QFormLayout: takeRow -> needs QFormLayout::TakeRowResult
return_new "QStackedLayout", /::takeAt/   # returns a free object
return_new "QStandardItem", /::take/   # returns a free object
return_new "QStandardItemModel", /::take/   # returns a free object
return_new "QTreeWidgetItem", /::take/   # returns a free object
return_new "QTableWidget", /::take/   # returns a free object
return_new "QTreeWidget", /::take/   # returns a free object
return_new "QListWidget", /::take/   # returns a free object
return_new "QScrollArea", /::takeWidget\(/   # returns a free object

rename "QPrintDialog", /QPrintDialog::accepted\(QPrinter/, "accepted_sig"

rename "QButtonGroup", /QButtonGroup::buttonToggled\(QAbstrac/, "buttonToggled_object" # disambiguator
rename "QButtonGroup", /QButtonGroup::buttonToggled\(int/, "buttonToggled_int" # disambiguator

# special implementations:

drop_method "QApplication", /QApplication::QApplication/ # does not work because of char** and isn't because of singleton
add_native_qapp_ctor_impl("QApplication")

drop_method "QGuiApplication", /QGuiApplication::QGuiApplication/ # does not work because of char** and isn't because of singleton
add_native_qapp_ctor_impl("QGuiApplication")

no_imports "QItemSelection"  # base class is a template. TODO: provide a solution (i.e. additional manual declarations)
no_imports "QPageSetupDialog"  # base class is a QAbstractPageSetupDialog which is not readily available
# QAccessibleBridge not supported on Windows
# no_imports "QAccessibleBridgePlugin","QAccessibleBridgeFactoryInterface" # base class is a QAbstractPageSetupDialog which is not readily available
# no_imports "QAccessiblePlugin","QAccessibleFactoryInterface" # base class is a QAbstractPageSetupDialog which is not readily available
no_imports "QIconEnginePlugin","QIconEngineFactoryInterface" # base class is not readily available
no_imports "QIconEnginePluginV2","QIconEngineFactoryInterfaceV2" # base class is not readily available
no_imports "QImageIOPlugin","QImageIOHandlerFactoryInterface" # base class is not readily available
no_imports "QInputContextPlugin","QInputContextFactoryInterface" # base class is not readily available
no_imports "QStylePlugin","QStyleFactoryInterface" # base class is not readily available

final_class "QAccessible"  # because navigate cannot be implemented
# QAccessibleBridge not supported on Windows
# final_class "QAccessibleBridge"  # because navigate cannot be implemented
# final_class "QAccessibleBridgePlugin"  # because navigate cannot be implemented
final_class "QAccessibleEvent"  # because navigate cannot be implemented
final_class "QAccessibleInterface"  # because navigate cannot be implemented
final_class "QAccessibleObject"  # because navigate cannot be implemented
# Strange inheritance (through a intermediate struct) and probably never needed:
# 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

include "QXmlFormatter", [ "<QXmlFormatter>", "<QXmlQuery>" ]
include "QXmlSerializer", [ "<QXmlSerializer>", "<QXmlQuery>" ]

no_imports "QXmlStreamAttributes"  # base class is a template.

drop_method "QXmlReader", /QXmlReader::parse\(.*QXmlInputSource\s*&/ # Clashes with pointer version
drop_method "QXmlStreamReader", /QXmlStreamReader::QXmlStreamReader\(.*const\s+char\s*\*/ # Clashes with QString version
drop_method "QXmlStreamReader", /QXmlStreamReader::addData\(.*const\s+char\s*\*/ # Clashes with QString version
drop_method "QXmlStreamStringRef", /QXmlStreamStringRef::QXmlStreamStringRef\(.*const\s+char\s*\*/ # Clashes with QString version
drop_method "QXmlStreamAttributes", /QXmlStreamAttributes::append\(const\s+QVector/ # QVector is a template
drop_method "QXmlStreamAttributes", /QXmlStreamAttributes::hasAttribute\(\s*QLatin1String/ # QLatin1String is not available
drop_method "QXmlStreamAttributes", /QXmlStreamAttributes::value\(.*QLatin1String/ # QLatin1String is not available
drop_method "QXmlSimpleReader", /QXmlSimpleReader::parse\(.*QXmlInputSource\s*&/ # clashes with QXmlInputSource * version
drop_method "QAbstractXmlNodeModel", /QAbstractXmlNodeModel::sequencedTypedValue/ # QExplicitlySharedDataPointer template not available
drop_method "QAbstractXmlNodeModel", /QAbstractXmlNodeModel::type/ # QExplicitlySharedDataPointer template not available
drop_method "QAbstractXmlNodeModel", /QAbstractXmlNodeModel::iterate/ # QExplicitlySharedDataPointer template not available
drop_method "QAbstractXmlReceiver", /QAbstractXmlReceiver::item/ # not resolved: QPatternist::Item
drop_method "QAbstractXmlReceiver", /QAbstractXmlReceiver::sendAsNode/ # not resolved: QPatternist::Item
drop_method "QXmlNodeModelIndex", /QXmlNodeModelIndex::iterate/ # QExplicitlySharedDataPointer template not available
drop_method "QXmlNodeModelIndex", /QXmlNodeModelIndex::sequencedTypedValue/ # QExplicitlySharedDataPointer template not available
drop_method "QXmlNodeModelIndex", /QXmlNodeModelIndex::type/ # QExplicitlySharedDataPointer not available
drop_method "QXmlSerializer", /QXmlSerializer::item/ # not resolved: QPatternist::Item
drop_method "QXmlFormatter", /QXmlFormatter::item\(const\s+QPatternist::Item/ # not resolved: QPatternist::Item
drop_method "QXmlAttributes", /QXmlAttributes::value\(\s*const\s+QLatin1String/ # QLatin1String not available
drop_method "QXmlAttributes", /QXmlAttributes::value\(\s*QLatin1String/ # QLatin1String not available
drop_method "QXmlAttributes", /QXmlAttributes::index\(\s*const\s+QLatin1String/ # QLatin1String not available
drop_method "QXmlAttributes", /QXmlAttributes::index\(\s*QLatin1String/ # QLatin1String not available
drop_method "QXmlInputSource", /QXmlInputSource::setData\(.*QByteArray/ # clashes with QString version
drop_method "QXmlEntityResolver", /QXmlEntityResolver::resolveEntity/ # requires pointer return value
drop_method "QXmlDefaultHandler", /QXmlDefaultHandler::resolveEntity/ # requires pointer return value
drop_method "QXmlNodeModelIndex", /QXmlNodeModelIndex::is\(const\s+QXmlNodeModelIndex\s*\&/ # because of inline function used by never defined
drop_method "QXmlNodeModelIndex", /QXmlNodeModelIndex::isDeepEqual\(const\s+QXmlNodeModelIndex\s*\&/ # because of inline function used by never defined
drop_method "QXmlNodeModelIndex", /QXmlNodeModelIndex::documentUri/ # because of inline function used by never defined
drop_method "QXmlNodeModelIndex", /QXmlNodeModelIndex::kind/ # because of inline function used by never defined
drop_method "QXmlNodeModelIndex", /QXmlNodeModelIndex::name/ # because of inline function used by never defined
drop_method "QXmlNodeModelIndex", /QXmlNodeModelIndex::baseUri/ # because of inline function used by never defined
drop_method "QXmlNodeModelIndex", /QXmlNodeModelIndex::root/ # because of inline function used by never defined
drop_method "QXmlNodeModelIndex", /QXmlNodeModelIndex::stringValue/ # because of inline function used by never defined
drop_method "QXmlNodeModelIndex", /QXmlNodeModelIndex::namespaceForPrefix\(short/ # because of inline function used by never defined
drop_method "QXmlNodeModelIndex", /QXmlNodeModelIndex::namespaceBindings/ # because of inline function used by never defined
drop_method "QXmlNodeModelIndex", /QXmlNodeModelIndex::compareOrder\(const\s+QXmlNodeModelIndex\s*\&/ # because of inline function used by never defined
drop_method "QXmlNodeModelIndex", /QXmlNodeModelIndex::sendNamespaces\(QAbstractXmlReceiver\s*\*/ # because of inline function used by never defined
drop_method "QXmlName", /QXmlName::code/ # because of inline function used by never defined
drop_method "QXmlName", /QXmlName::hasNamespace/ # because of inline function used by never defined
drop_method "QXmlName", /QXmlName::hasPrefix/ # because of inline function used by never defined
drop_method "QXmlName", /QXmlName::isLexicallyEqual/ # because of inline function used by never defined
drop_method "QXmlName", /QXmlName::localName/ # because of inline function used by never defined
drop_method "QXmlName", /QXmlName::namespaceURI/ # because of inline function used by never defined
drop_method "QXmlName", /QXmlName::prefix/ # because of inline function used by never defined
drop_method "QXmlName", /QXmlName::setLocalName/ # because of inline function used by never defined
drop_method "QXmlName", /QXmlName::setNamespaceURI/ # because of inline function used by never defined
drop_method "QXmlName", /QXmlName::setPrefix/ # because of inline function used by never defined
drop_method "QXmlName", /QXmlName::QXmlName\(const\s+qint16/ # because of inline function used by never defined

rename "QDomElement", /QDomElement::setAttribute\(.*qulonglong/, "setAttribute_ull|attribute_ull="
rename "QDomElement", /QDomElement::setAttribute\(.*qlonglong/, "setAttribute_ll|attribute_ll="
rename "QDomElement", /QDomElement::setAttribute\(.*unsigned int/, "setAttribute_ui|attribute_ui="
rename "QDomElement", /QDomElement::setAttribute\(.*int value/, "setAttribute_i|attribute_i="
rename "QDomElement", /QDomElement::setAttribute\(.*double value/, "setAttribute_d|attribute_d="
rename "QDomElement", /QDomElement::setAttribute\(.*float value/, "setAttribute_f|attribute_f="
rename "QDomElement", /QDomElement::setAttributeNS\(.*qulonglong/, "setAttributeNS_ull|attributeNS_ull="
rename "QDomElement", /QDomElement::setAttributeNS\(.*qlonglong/, "setAttributeNS_ll|attributeNS_ll="
rename "QDomElement", /QDomElement::setAttributeNS\(.*unsigned int/, "setAttributeNS_ui|attributeNS_ui="
rename "QDomElement", /QDomElement::setAttributeNS\(.*int value/, "setAttributeNS_i|attributeNS_i="
rename "QDomElement", /QDomElement::setAttributeNS\(.*double value/, "setAttributeNS_d|attributeNS_d="
rename "QDomElement", /QDomElement::setAttributeNS\(.*float value/, "setAttributeNS_f|attributeNS_f="

drop_method "QDomDocument", /QDomDocument::setContent\(const\s+QByteArray/ # clashes with QString version

drop_class "QPatternist"
drop_class "QPatternistSDK"

no_imports "QAbstractXmlNodeModel"  # base class is QSharedData which is not available

# --------------------------------------------------------------
# QtNetwork

include "QOcspRevocationReason", [ "<QOcspResponse>" ]  # global enum without own header
include "QOcspCertificateStatus", [ "<QOcspResponse>" ]  # global enum without own header
include "QDtlsError", [ "<QDtlsClientVerifier>" ] # global enum without own header

drop_class "QTlsPrivate"  # private data
drop_class "QOcspResponse"  # TODO: debug
drop_method "QSslSocket", /QSslSocket::ocspResponses\(/ # TODO: debug

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
drop_method "QHostAddress", /QHostAddress::QHostAddress\(\s*const\s+sockaddr/ # requires sockaddr struct, a string version is available for IPv6
drop_method "QHostAddress", /QHostAddress::setAddress\(\s*(const\s*)?quint8\s*\*/ # requires char *, a string version is available for IPv6
drop_method "QHostAddress", /QHostAddress::setAddress\(\s*const\s+QIPv6Address/ # requires QIPv6Address struct, a string version is available for IPv6
drop_method "QHostAddress", /QHostAddress::setAddress\(\s*const\s+sockaddr/ # requires sockaddr struct, a string version is available for IPv6
drop_method "QHostAddress", /QHostAddress::toIPv6Address\(/ # requires QIPv6Address struct
def_alias "QHostAddress", /toString\(/, "to_s"
drop_method "QNetworkCacheMetaData", /QNetworkCacheMetaData::attributes/ # requires Hash
drop_method "QNetworkCacheMetaData", /QNetworkCacheMetaData::setAttributes/ # requires Hash
drop_method "QSslCertificate", /QSslCertificate::alternateSubjectNames/ # requires MultiMap
drop_method "QSslCertificate", /QSslCertificate::subjectAlternativeNames/ # requires MultiMap
drop_method "QFtp", /QFtp::read\(/ # requires char * - readAll may be an alternative. TODO: implement a real alternative!
drop_method "QUdpSocket", /QUdpSocket::readDatagram/ # requires "char *" - TODO: provide an alternative, because otherwise there is none!

rename "QHostAddress", /::QHostAddress\(quint/, "new_ip4"  # disambiguator
rename "QHostAddress", /::QHostAddress\(QHostAddress::SpecialAddress/, "new_special"  # disambiguator
rename "QLocalSocket", /::error\(QLocalSocket::LocalSocketError/, "error_sig"  # disambiguator
rename "QNetworkReply", /::error\(QNetworkReply::NetworkError/, "error_sig"  # disambiguator
rename "QAbstractSocket", /::error\(QAbstractSocket::SocketError/, "error_sig"  # disambiguator
rename "QSslSocket", /::sslErrors\(const\s+QList/, "sslErrors_sig"  # disambiguator

final_class "QAbstractSocket"  # because readData cannot be reimplemented 
final_class "QTcpSocket"  # because readData cannot be reimplemented 
final_class "QUdpSocket"  # because readData cannot be reimplemented 
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

include "QSql", [ "<QtSql>" ]

drop_class "QSqlDriverCreator" # is a template
drop_class "QSqlDriverPlugin" # not required ?

drop_method "QSqlResult", /QSqlResult::boundValues/ # returns a reference, different types on different Qt versions

rename "QSqlDriver", /QSqlDriver::notification\(const\s+QString\s*\&\s*\w*\s*\)/, "notification" # disambiguator
rename "QSqlDriver", /QSqlDriver::notification\(const\s+QString\s*\&\s*\w*\s*,/, "notification_withData" # disambiguator

# --------------------------------------------------------------
# QtMultimedia

include "QCamera", [ "<QCamera>", "<QVideoWidget>", "<QGraphicsVideoItem>", "<QMediaCaptureSession>" ]
include "QAudioBuffer", [ "<QAudioBuffer>" ]
include "QBackingStore", [ "<QBackingStore>" ]
include "QMediaPlayer", [ "<QMediaPlayer>", "<QVideoWidget>", "<QGraphicsVideoItem>", "<QMediaMetaData>", "<QAudioOutput>", "<QVideoSink>", "<QMediaTimeRange>" ]

drop_class "QAudioBuffer", /StereoFrameDefault/
drop_class "QAudioBuffer", /StereoFrame/
drop_class "QAudioFrame"
drop_class "QAbstractPlanarVideoBuffer"
drop_class "QWaveDecoder"

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 "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 "QVideoFrame", /QVideoFrame::textureHandle\(/ # Not available on Qt 6.4.1
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 "QDebug"
no_default_ctor "QSequentialIterable"
no_default_ctor "QSystemSemaphore"
no_default_ctor "QMediaObject"
no_default_ctor "QInputMethodQueryEvent"
no_default_ctor "QAbstractPageSetupDialog"
no_default_ctor "QAbstractPrintDialog"
no_default_ctor "QAbstractSocket"
no_default_ctor "QAbstractTextDocumentLayout"
no_default_ctor "QAccessible"
no_default_ctor "QAccessibleEvent"
no_default_ctor "QAccessibleStateChangeEvent"
no_default_ctor "QAccessibleTableModelChangeEvent"
no_default_ctor "QAccessibleTextCursorEvent"
no_default_ctor "QAccessibleTextInsertEvent"
no_default_ctor "QAccessibleTextRemoveEvent"
no_default_ctor "QAccessibleTextSelectionEvent"
no_default_ctor "QAccessibleTextUpdateEvent"
no_default_ctor "QAccessibleValueChangeEvent"
no_default_ctor "QAccessibleWidget"
no_default_ctor "QAction"
no_default_ctor "QActionEvent"
no_default_ctor "QActionGroup"
no_default_ctor "QApplication"
no_default_ctor "QApplicationStateChangeEvent"
no_default_ctor "QAssociativeIterable"
no_default_ctor "QBackingStore"
no_default_ctor "QBoxLayout"
no_default_ctor "QCameraExposure"
no_default_ctor "QCameraFocus"
no_default_ctor "QCameraImageCapture"
no_default_ctor "QCameraImageProcessing"
no_default_ctor "QChildEvent"
no_default_ctor "QClipboard"
no_default_ctor "QClipboardEvent"
no_default_ctor "QCollatorSortKey"
no_default_ctor "QColormap"
no_default_ctor "QCommandLineOption"
no_default_ctor "QContextMenuEvent"
no_default_ctor "QCoreApplication"
no_default_ctor "QCryptographicHash"
no_default_ctor "QDebugStateSaver"
no_default_ctor "QDirIterator"
no_default_ctor "QDoubleValidator"
no_default_ctor "QDrag"
no_default_ctor "QDragEnterEvent"
no_default_ctor "QDragMoveEvent"
no_default_ctor "QDragResponseEvent"
no_default_ctor "QDropEvent"
no_default_ctor "QDynamicPropertyChangeEvent"
no_default_ctor "QEnterEvent"
no_default_ctor "QEvent"
no_default_ctor "QExposeEvent"
no_default_ctor "QFileDevice"
no_default_ctor "QFileOpenEvent"
no_default_ctor "QFocusEvent"
no_default_ctor "QFontInfo"
no_default_ctor "QFontMetrics"
no_default_ctor "QFontMetricsF"
no_default_ctor "QGestureEvent"
no_default_ctor "QGraphicsAnchor"
no_default_ctor "QGraphicsSceneEvent"
no_default_ctor "QGuiApplication"
no_default_ctor "QHeaderView"
no_default_ctor "QHelpEvent"
no_default_ctor "QHoverEvent"
no_default_ctor "QInputEvent"
no_default_ctor "QInputMethod"
no_default_ctor "QInputMethodEvent::Attribute"
no_default_ctor "QItemSelectionModel"
no_default_ctor "QJsonValuePtr"
no_default_ctor "QJsonValueRef"
no_default_ctor "QJsonValueRefPtr"
no_default_ctor "QJsonValueConstRef"
no_default_ctor "QKeyEvent"
no_default_ctor "QLibraryInfo"
no_default_ctor "QLockFile"
no_default_ctor "QLoggingCategory"
no_default_ctor "QMediaAudioProbeControl"
no_default_ctor "QMediaControl"
no_default_ctor "QMediaRecorder"
no_default_ctor "QMediaService"
no_default_ctor "QMediaVideoProbeControl"
no_default_ctor "QMessageAuthenticationCode"
no_default_ctor "QMouseEvent"
no_default_ctor "QMoveEvent"
no_default_ctor "QNativeGestureEvent"
no_default_ctor "QNetworkSession"
no_default_ctor "QPaintDeviceWindow"
no_default_ctor "QPaintEvent"
no_default_ctor "QPdfWriter"
no_default_ctor "QPlainTextDocumentLayout"
no_default_ctor "QPlatformSurfaceEvent"
no_default_ctor "QRadioData"
no_default_ctor "QReadLocker"
no_default_ctor "QRegExpValidator"
no_default_ctor "QResizeEvent"
no_default_ctor "QRubberBand"
no_default_ctor "QScreen"
no_default_ctor "QScreenOrientationChangeEvent"
no_default_ctor "QScroller"
no_default_ctor "QScrollEvent"
no_default_ctor "QScrollPrepareEvent"
no_default_ctor "QSessionManager"
no_default_ctor "QShortcut"
no_default_ctor "QShortcutEvent"
no_default_ctor "QSignalBlocker"
no_default_ctor "QSimpleXmlNodeModel"
no_default_ctor "QSizeGrip"
no_default_ctor "QSocketNotifier"
no_default_ctor "QSound"
no_default_ctor "QSpacerItem"
no_default_ctor "QSplitterHandle"
no_default_ctor "QSqlResult"
no_default_ctor "QStandardPaths"
no_default_ctor "QStateMachine::SignalEvent"
no_default_ctor "QStateMachine::WrappedEvent"
no_default_ctor "QStatusTipEvent"
no_default_ctor "QStyleHints"
no_default_ctor "QSurface"
no_default_ctor "QSyntaxHighlighter"
no_default_ctor "QTabletEvent"
no_default_ctor "QTextBlockGroup"
no_default_ctor "QTextDecoder"
no_default_ctor "QTextEncoder"
no_default_ctor "QTextFrame"
no_default_ctor "QTextList"
no_default_ctor "QTextObject"
no_default_ctor "QTextTable"
no_default_ctor "QTimerEvent"
no_default_ctor "QToolBarChangeEvent"
no_default_ctor "QToolTip"
no_default_ctor "QTouchEvent"
no_default_ctor "QTreeWidgetItemIterator"
no_default_ctor "QUnixPrintWidget"
no_default_ctor "QWhatsThis"
no_default_ctor "QWhatsThisClickedEvent"
no_default_ctor "QWheelEvent"
no_default_ctor "QWidgetAction"
no_default_ctor "QWidgetItem"
no_default_ctor "QWindowStateChangeEvent"
no_default_ctor "QWriteLocker"
no_default_ctor "QXmlFormatter"
no_default_ctor "QXmlSerializer"

no_copy_ctor "QApplication"
no_copy_ctor "QSystemSemaphore"
no_copy_ctor "QScreen"
no_copy_ctor "QAbstractPageSetupDialog"
no_copy_ctor "QAbstractTextDocumentLayout"
no_copy_ctor "QBackingStore"
no_copy_ctor "QCDEStyle"
no_copy_ctor "QCleanlooksStyle"
no_copy_ctor "QCoreApplication"
no_copy_ctor "QDateEdit"
no_copy_ctor "QDateTimeEdit"
no_copy_ctor "QDebugStateSaver"
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"
no_copy_ctor "QGraphicsSceneEvent"
no_copy_ctor "QGraphicsSceneHelpEvent"
no_copy_ctor "QGraphicsSceneHoverEvent"
no_copy_ctor "QGraphicsSceneMouseEvent"
no_copy_ctor "QGraphicsSceneMoveEvent"
no_copy_ctor "QGraphicsSceneResizeEvent"
no_copy_ctor "QGraphicsSceneWheelEvent"
# no_copy_ctor "QGtkStyle"
no_copy_ctor "QGuiApplication"
no_copy_ctor "QLayout"
no_copy_ctor "QLayout"
no_copy_ctor "QLockFile"
no_copy_ctor "QLoggingCategory"
no_copy_ctor "QMediaRecorder"
no_copy_ctor "QMessageAuthenticationCode"
no_copy_ctor "QMotifStyle"
no_copy_ctor "QNetworkAccessManager"
no_copy_ctor "QNetworkSession"
no_copy_ctor "QPageSetupDialog"
no_copy_ctor "QPaintDeviceWindow"
no_copy_ctor "QPainterPathStroker"
no_copy_ctor "QPdfWriter"
no_copy_ctor "QPlainTextDocumentLayout"
no_copy_ctor "QPrintDialog"
no_copy_ctor "QPrintPreviewDialog"
no_copy_ctor "QPrintPreviewWidget"
no_copy_ctor "QRadioData"
no_copy_ctor "QResource"
no_copy_ctor "QRubberBand"
no_copy_ctor "QScroller"
no_copy_ctor "QSessionManager"
no_copy_ctor "QShortcut"
no_copy_ctor "QSignalBlocker"
no_copy_ctor "QSound"
no_copy_ctor "QStandardItem"
no_copy_ctor "QSystemSemaphore"
no_copy_ctor "QThread"
no_copy_ctor "QTimeEdit"
no_copy_ctor "QWindowsStyle"
no_copy_ctor "QXmlParseException"

rename "QCameraExposure", /QCameraExposure::flashReady\(bool/, "flashReady_sig" # disambiguator
rename "QCameraImageCapture", /QCameraImageCapture::error\(int/, "error_sig" # disambiguator
rename "QMediaObject", /QMediaObject::availabilityChanged\(bool/, "availabilityChanged_bool" # disambiguator
rename "QMediaObject", /QMediaObject::availabilityChanged\(QMultimedia::AvailabilityStatus/, "availabilityChanged_status" # disambiguator
rename "QMediaObject", /QMediaObject::metaDataChanged\(\s*\)/, "metaDataChanged" # disambiguator
rename "QMediaObject", /QMediaObject::metaDataChanged\(const\s+QString/, "metaDataChanged_kv" # disambiguator
rename "QMediaPlayer", /QMediaPlayer::availabilityChanged\(bool/, "availabilityChanged_bool" # disambiguator
rename "QMediaPlayer", /QMediaPlayer::availabilityChanged\(QMultimedia::AvailabilityStatus/, "availabilityChanged_status" # disambiguator
rename "QMediaPlayer", /QMediaPlayer::metaDataChanged\(\s*\)/, "metaDataChanged" # disambiguator
rename "QMediaPlayer", /QMediaPlayer::metaDataChanged\(const\s+QString/, "metaDataChanged_kv" # disambiguator
rename "QMediaPlayer", /QMediaPlayer::error\(QMediaPlayer::/, "error_sig" # disambiguator
rename "QMediaRecorder", /QMediaRecorder::availabilityChanged\(bool/, "availabilityChanged_bool" # disambiguator
rename "QMediaRecorder", /QMediaRecorder::availabilityChanged\(QMultimedia::AvailabilityStatus/, "availabilityChanged_status" # disambiguator
rename "QMediaRecorder", /QMediaRecorder::metaDataChanged\(\s*\)/, "metaDataChanged" # disambiguator
rename "QMediaRecorder", /QMediaRecorder::metaDataChanged\(const\s+QString/, "metaDataChanged_kv" # disambiguator
rename "QMediaRecorder", /QMediaRecorder::error\(QMediaRecorder::/, "error_sig" # disambiguator
rename "QMetaDataReaderControl", /QMetaDataReaderControl::metaDataChanged\(\s*\)/, "metaDataChanged" # disambiguator
rename "QMetaDataReaderControl", /QMetaDataReaderControl::metaDataChanged\(const\s+QString/, "metaDataChanged_kv" # disambiguator
rename "QMetaDataWriterControl", /QMetaDataWriterControl::metaDataChanged\(\s*\)/, "metaDataChanged" # disambiguator
rename "QMetaDataWriterControl", /QMetaDataWriterControl::metaDataChanged\(const\s+QString/, "metaDataChanged_kv" # disambiguator
rename "QRadioData", /QRadioData::error\(QRadioData::/, "error_sig" # disambiguator
rename "QRadioDataControl", /QRadioData::error\(QRadioData::/, "error_sig" # disambiguator
rename "QRadioTuner", /QRadioTuner::availabilityChanged\(bool/, "availabilityChanged_bool" # disambiguator
rename "QRadioTuner", /QRadioTuner::availabilityChanged\(QMultimedia::AvailabilityStatus/, "availabilityChanged_status" # disambiguator
rename "QRadioTuner", /QRadioTuner::metaDataChanged\(\s*\)/, "metaDataChanged" # disambiguator
rename "QRadioTuner", /QRadioTuner::metaDataChanged\(const\s+QString/, "metaDataChanged_kv" # disambiguator
rename "QRadioTuner", /QRadioTuner::error\(QRadioTuner::/, "error_sig" # disambiguator
rename "QRadioTunerControl", /QRadioTunerControl::error\(QRadioTuner::/, "error_sig" # disambiguator
rename "QRadioDataControl", /QRadioDataControl::error\(QRadioData::/, "error_sig" # disambiguator
rename "QAudioDecoder", /QAudioDecoder::availabilityChanged\(bool/, "availabilityChanged_bool" # disambiguator
rename "QAudioDecoder", /QAudioDecoder::availabilityChanged\(QMultimedia::AvailabilityStatus/, "availabilityChanged_status" # disambiguator
rename "QAudioDecoder", /QAudioDecoder::metaDataChanged\(\s*\)/, "metaDataChanged" # disambiguator
rename "QAudioDecoder", /QAudioDecoder::metaDataChanged\(const\s+QString/, "metaDataChanged_kv" # disambiguator
rename "QAudioDecoder", /QAudioDecoder::error\(QAudioDecoder::/, "error_sig" # disambiguator
rename "QAudioRecorder", /QAudioRecorder::availabilityChanged\(bool/, "availabilityChanged_bool" # disambiguator
rename "QAudioRecorder", /QAudioRecorder::availabilityChanged\(QMultimedia::AvailabilityStatus/, "availabilityChanged_status" # disambiguator
rename "QAudioRecorder", /QAudioRecorder::metaDataChanged\(\s*\)/, "metaDataChanged" # disambiguator
rename "QAudioRecorder", /QAudioRecorder::metaDataChanged\(const\s+QString/, "metaDataChanged_kv" # disambiguator
rename "QCamera", /QCamera::availabilityChanged\(bool/, "availabilityChanged_bool" # disambiguator
rename "QCamera", /QCamera::availabilityChanged\(QMultimedia::AvailabilityStatus/, "availabilityChanged_status" # disambiguator
rename "QCamera", /QCamera::metaDataChanged\(\s*\)/, "metaDataChanged" # disambiguator
rename "QCamera", /QCamera::metaDataChanged\(const\s+QString/, "metaDataChanged_kv" # disambiguator
rename "QCamera", /QCamera::error\(QCamera::/, "error_sig" # disambiguator
rename "QCamera", /QCamera::lockStatusChanged\(QCamera::LockStatus/, "lockStatusChanged" # disambiguator
rename "QCamera", /QCamera::lockStatusChanged\(QCamera::LockType/, "lockStatusChanged_withType" # disambiguator
rename "QVideoDeviceSelectorControl", /QVideoDeviceSelectorControl::selectedDeviceChanged\(int/, "selectedDeviceChanged_int" # disambiguator
rename "QVideoDeviceSelectorControl", /QVideoDeviceSelectorControl::selectedDeviceChanged\(const\s+QString/, "selectedDeviceChanged_string" # disambiguator

rename "QNetworkSession", /QNetworkSession::error\(QNetworkSession::/, "error_sig" # disambiguator

# --------------------------------------------------------------
# QtUiTools

include "QUiLoader", [ "<QUiLoader>", "<QDir>", "<QAction>", "<QActionGroup>", "<QLayout>", "<QWidget>", "<QChildEvent>", "<QEvent>", "<QTimerEvent>" ]

# --------------------------------------------------------------
# events and properties
# NOTE: to generate these files use scripts/mkqtdecl/mkqtdecl_extract_props.rb
# and scripts/mkqtdecl/mkqtdecl_extract_signals.rb

load "mkqtdecl.events"
load "mkqtdecl.properties"

