WIP: QtCore enabling

This commit is contained in:
Matthias Koefferlein 2021-11-28 16:31:37 +01:00
parent 88a4985d3d
commit 18fee75276
9 changed files with 164 additions and 52 deletions

View File

@ -53,55 +53,75 @@ drop_enum_const "Qt", /WindowType::WindowCancelButtonHint/ # only available on C
drop_class "QLocale", /Data/
# not implemented:
drop_class "QSequentialIterable", /const_iterator/
drop_class "QAssociativeIterable", /const_iterator/
drop_class "QEnableSharedFromThis"
drop_class "QAbstractConcatenable"
drop_class "QAbstractFileEngineHandler"
drop_class "QAbstractFileEngineIterator"
drop_class "QAbstractFileEngine" # read requires char *
drop_class "QAlgorithmsPrivate"
drop_class "QApplicationPermission"
drop_class "QArgument"
drop_class "QArrayData"
drop_class "QArrayDataOps"
drop_class "QArrayDataPointer"
drop_class "QArrayDataPointerRef"
drop_class "QArgument"
drop_class "QAssociativeConstIterator"
drop_class "QAssociativeIterable"
drop_class "QAssociativeIterableImpl"
drop_class "QSequentialIterableImpl"
drop_class "QAssociativeIterator"
drop_class "QAtomic"
drop_class "QAtomicAdditiveType"
drop_class "QAtomicInt"
drop_class "QAtomicInteger"
drop_class "QAtomicOps"
drop_class "QAtomicPointer"
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 "QBitArray"
drop_class "QBitRef"
drop_class "QBool"
drop_class "QByteArray"
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 "QChar"
drop_class "QCharRef"
drop_class "QConstIterator"
drop_class "QConstString"
drop_class "QContainerInfo"
drop_class "QContiguousCache"
drop_class "QContiguousCacheData"
drop_class "QContiguousCacheTypedData"
drop_class "QExplicitlySharedDataPointer"
drop_class "QEnableSharedFromThis"
drop_class "QException" # (TODO) no mapping yet
drop_class "QUnhandledException" # (TODO) no mapping yet
drop_class "QFileInfoPrivate"
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"
@ -110,7 +130,6 @@ drop_class "QFutureIterator"
drop_class "QFutureSynchronizer"
drop_class "QFutureWatcher"
drop_class "QFutureWatcherBase"
drop_class "QFSFileEngine"
drop_class "QGenericArgument"
drop_class "QGenericAtomicOps"
drop_class "QGenericReturnArgument"
@ -122,10 +141,15 @@ drop_class "QHashDummyNode"
drop_class "QHashDummyValue"
drop_class "QHashIterator"
drop_class "QHashNode"
drop_class "QHashPrivate"
drop_class "QHashSeed"
drop_class "QIncompatibleFlag"
drop_class "QInternal"
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"
@ -136,6 +160,8 @@ 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"
@ -147,48 +173,77 @@ 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 "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 "QProperty"
drop_class "QPropertyAlias"
drop_class "QPropertyBinding"
drop_class "QPropertyChangeHandler"
drop_class "QPropertyData"
drop_class "QQueue"
drop_class "QReturnArgument"
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 "QStringConverterBase"
drop_class "QStringDecoder", /EncodedData/
drop_class "QStringEncoder", /DecodedData/
drop_class "QStringListIterator"
drop_class "QStringList" # mapped otherwise
drop_class "QString" # mapped otherwise
drop_class "QStringRef"
drop_class "QStringBuilder"
drop_class "QStringBuilderBase"
drop_class "QStringBuilderCommon"
drop_class "QtStringBuilder"
drop_class "QStringTokenizerBase"
drop_class "QStringTokenizerBaseBase"
drop_class "QTaggedIterator"
drop_class "QTaggedPointer"
drop_class "QtAlgorithms"
drop_class "QtCleanUpFunction"
drop_class "QtContainerFwd"
@ -200,32 +255,49 @@ 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 "QtMetaTypePrivate"
drop_class "QtGlobalStatic"
drop_class "QtStringBuilder"
drop_class "QTypedArrayData"
drop_class "QTypeInfo"
drop_class "QTypeInfoMerger"
drop_class "QTypedArrayData"
drop_class "QUuid"
drop_class "QTypeTraits"
drop_class "QUnhandledException" # (TODO) no mapping yet
drop_class "QUntypedPropertyBinding"
drop_class "QUpdateLaterEvent"
drop_class "QVariantComparisonHelper"
drop_class "QVariantList"
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 "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
@ -427,6 +499,23 @@ add_native_impl_polygons
no_copy_ctor "QBasicMutex"
no_copy_ctor "QMapDataBase"
no_copy_ctor "QChildEvent"
no_copy_ctor "QDynamicPropertyChangeEvent"
no_copy_ctor "QDeferredDeleteEvent"
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"
drop_method "QMessageLogger", /QMessageLogger::critical.*\.\.\./ # does not support ...
drop_method "QMessageLogger", /QMessageLogger::debug.*\.\.\./ # does not support ...
@ -634,8 +723,8 @@ drop_class "QOpenGLWidget" # OpenGL native types not supported
drop_class "QOpenGLWindow" # OpenGL native types not supported
# depedencies from operators are not derived automatically currently:
include "QPoint", [ "<QPoint>", "<QMatrix>", "<QMatrix4x4>" ]
include "QPointF", [ "<QPointF>", "<QMatrix>", "<QMatrix4x4>" ]
include "QPoint", [ "<QPoint>", "<QMatrix4x4>" ]
include "QPointF", [ "<QPointF>", "<QMatrix4x4>" ]
include "QVector3D", [ "<QVector3D>", "<QVector2D>", "<QMatrix4x4>" ]
include "QVector4D", [ "<QVector4D>", "<QVector2D>", "<QMatrix4x4>" ]
include "QAction", [ "<QAction>", "<QGraphicsWidget>", "<QMenu>" ]

View File

@ -157,7 +157,7 @@ grammar CPP
end
rule enum_type
"enum" ![a-zA-Z0-9_] a "class"? s id:id? ( s ":" s type )? bodyspec:( s "{" s body:enum_body s "}" )? <PEnumType>
"enum" ![a-zA-Z0-9_] a is_class:(s "class" )? s id:id? ( s ":" s type )? bodyspec:( s "{" s body:enum_body s "}" )? <PEnumType>
end
rule virtual_spec

View File

@ -122,10 +122,17 @@ def add_native_impl_QPersistentQModelIndex
# alternative implementation for QPersistentQModelIndex::operator const QModelIndex &
add_native_impl("QPersistentModelIndex", <<'CODE', <<'DECL')
#if QT_VERSION < 0x60000
static const QModelIndex &castToQModelIndex(const QPersistentModelIndex *m)
{
return m->operator const QModelIndex &();
}
#else
static QModelIndex castToQModelIndex(const QPersistentModelIndex *m)
{
return m->operator QModelIndex();
}
#endif
CODE
gsi::method_ext("castToQModelIndex", &castToQModelIndex, "@brief Binding for \"operator const QModelIndex &\".")
DECL
@ -215,25 +222,25 @@ def add_native_impl_streams
return v;
}
static qt_gsi::Converter<class QChar>::target_type f_QDataStream_read_qchar(QDataStream *s)
static qt_gsi::Converter<QChar>::target_type f_QDataStream_read_qchar(QDataStream *s)
{
QChar v = 0;
QChar v = QChar (0);
*s >> v;
return qt_gsi::Converter<class QChar>::toc (v);
return qt_gsi::Converter<QChar>::toc (v);
}
static qt_gsi::Converter<class QList<int> >::target_type f_QDataStream_read_int_list(QDataStream *s)
static qt_gsi::Converter<QList<int> >::target_type f_QDataStream_read_int_list(QDataStream *s)
{
QList<int> v;
*s >> v;
return qt_gsi::Converter<class QList<int> >::toc (v);
return qt_gsi::Converter<QList<int> >::toc (v);
}
static qt_gsi::Converter<class QVector<int> >::target_type f_QDataStream_read_int_vector(QDataStream *s)
static qt_gsi::Converter<QVector<int> >::target_type f_QDataStream_read_int_vector(QDataStream *s)
{
QVector<int> v;
*s >> v;
return qt_gsi::Converter<class QVector<int> >::toc (v);
return qt_gsi::Converter<QVector<int> >::toc (v);
}
static QString f_QDataStream_read_string(QDataStream *s)
@ -316,21 +323,21 @@ def add_native_impl_streams
return s;
}
static QDataStream *f_QDataStream_put_qchar(QDataStream *s, const qt_gsi::Converter<class QChar>::target_type &v)
static QDataStream *f_QDataStream_put_qchar(QDataStream *s, const qt_gsi::Converter<QChar>::target_type &v)
{
*s << qt_gsi::Converter<class QChar>::toq (v);
*s << qt_gsi::Converter<QChar>::toq (v);
return s;
}
static QDataStream *f_QDataStream_put_int_list(QDataStream *s, const qt_gsi::Converter<class QList<int> >::target_type &v)
static QDataStream *f_QDataStream_put_int_list(QDataStream *s, const qt_gsi::Converter<QList<int> >::target_type &v)
{
*s << qt_gsi::Converter<class QList<int> >::toq (v);
*s << qt_gsi::Converter<QList<int> >::toq (v);
return s;
}
static QDataStream *f_QDataStream_put_int_vector(QDataStream *s, const qt_gsi::Converter<class QVector<int> >::target_type &v)
static QDataStream *f_QDataStream_put_int_vector(QDataStream *s, const qt_gsi::Converter<QVector<int> >::target_type &v)
{
*s << qt_gsi::Converter<class QVector<int> >::toq (v);
*s << qt_gsi::Converter<QVector<int> >::toq (v);
return s;
}
@ -441,7 +448,7 @@ add_native_impl("QTextStream", <<'CODE', <<'DECL')
static qt_gsi::Converter<QChar>::target_type f_QTextStream_read_qchar(QTextStream *s)
{
QChar v = 0;
QChar v = QChar (0);
*s >> v;
return qt_gsi::Converter<QChar>::toc (v);
}

View File

@ -615,15 +615,15 @@ end
# @attribute specs the enum members (an array of CPPEnumSpec objects)
class CPPEnum < CPPObject
attr_accessor :name, :specs
def_initializer :name, :specs
attr_accessor :name, :specs, :is_class
def_initializer :name, :specs, :is_class
def to_s
"enum " + (self.name || "")
end
def dump(i)
l = i + self.to_s + " {\n"
l = i + self.to_s + (self.is_class ? " class" : "") + " {\n"
l += (self.specs || []).collect { |s| i + " " + s.to_s + "\n" }.join("")
l += i + "}"
end

View File

@ -128,7 +128,7 @@ module PEnumType
def cpp
name = id ? id.text_value : nil
specs = bodyspec.nonterminal? ? bodyspec.body.cpp : nil
CPPEnum::new(name, specs)
CPPEnum::new(name, specs, is_class.nonterminal?)
end
end

View File

@ -1677,7 +1677,11 @@ END
next
end
edecl << " gsi::enum_const (\"#{ei_name}\", #{cls}::#{ei}, \"@brief Enum constant #{cls}::#{ei}\")"
if ed.enum.is_class
edecl << " gsi::enum_const (\"#{ei_name}\", #{cls}::#{en}::#{ei}, \"@brief Enum constant #{cls}::#{en}::#{ei}\")"
else
edecl << " gsi::enum_const (\"#{ei_name}\", #{cls}::#{ei}, \"@brief Enum constant #{cls}::#{ei}\")"
end
end
@ -1689,8 +1693,6 @@ END
ofile.puts(" \"@qt\\n@brief This class represents the QFlags<#{cls}::#{en}> flag set\");")
ofile.puts("")
ofile.puts("// Inject the declarations into the parent")
# inject the declarations into the parent namespace or class
pdecl_obj = ed.parent
@ -1706,7 +1708,12 @@ END
pname = pcls + "_Namespace"
end
ofile.puts("static gsi::ClassExt<#{pname}> inject_#{clsn}_#{en}_Enum_in_parent (decl_#{clsn}_#{en}_Enum.defs ());")
if ! ed.enum.is_class
ofile.puts("// Inject the declarations into the parent")
ofile.puts("static gsi::ClassExt<#{pname}> inject_#{clsn}_#{en}_Enum_in_parent (decl_#{clsn}_#{en}_Enum.defs ());")
end
ofile.puts("static gsi::ClassExt<#{pname}> decl_#{clsn}_#{en}_Enum_as_child (decl_#{clsn}_#{en}_Enum, \"#{en}\");")
ofile.puts("static gsi::ClassExt<#{pname}> decl_#{clsn}_#{en}_Enums_as_child (decl_#{clsn}_#{en}_Enums, \"QFlags_#{en}\");")

View File

@ -2,11 +2,16 @@
TEMPLATE = subdirs
SUBDIRS = qtbasic
greaterThan(QT_MAJOR_VERSION, 4) {
SUBDIRS += qt5
qt5.depends += qtbasic
greaterThan(QT_MAJOR_VERSION, 5) {
SUBDIRS += qt6
qt6.depends += qtbasic
} else {
SUBDIRS += qt4
qt4.depends += qtbasic
greaterThan(QT_MAJOR_VERSION, 4) {
SUBDIRS += qt5
qt5.depends += qtbasic
} else {
SUBDIRS += qt4
qt4.depends += qtbasic
}
}

View File

@ -387,6 +387,7 @@ public:
static target_type toc (source_type qc) { return target_type (qc); }
};
#if QT_VERSION < 0x060000
template <>
struct Converter<Q_PID>
{
@ -396,6 +397,7 @@ public:
static source_type toq (target_type c) { return source_type (c); }
static target_type toc (source_type qc) { return target_type (qc); }
};
#endif
template <>
struct Converter<QChar>

View File

@ -32,6 +32,8 @@
#include <QScrollBar>
#include <QPainter>
#include <QHeaderView>
#include <QTreeView>
#include <QTreeWidget>
namespace gtf
{
@ -224,7 +226,7 @@ void
StripedBar::set_treeview (QTreeView *tv)
{
mp_tv = tv;
connect (mp_tv->verticalScrollBar () /*@@@ Qt4.2 only*/, SIGNAL (valueChanged (int)), this, SLOT (force_update (int)));
connect (mp_tv->verticalScrollBar () /* Qt4.2 only*/, SIGNAL (valueChanged (int)), this, SLOT (force_update (int)));
connect (mp_tv, SIGNAL (expanded (const QModelIndex &)), this, SLOT (force_update (const QModelIndex &)));
connect (mp_tv, SIGNAL (collapsed (const QModelIndex &)), this, SLOT (force_update (const QModelIndex &)));
}