diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-02-26 09:48:43 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-03-12 10:38:40 +0100 |
commit | f78e542053cfc1d5c1b26d6fa4d18ef1698359a0 (patch) | |
tree | 6786ce197dbf98f54e321c357e74bb3d5c29b8b3 /src/qml/qml/qqmlprivate.h | |
parent | 547b4d2c2d9424fdcc694e291fe543a4f52cb684 (diff) |
Clean up type registration structs
* reset all structVersions to 0, removing checks for higher versions
* add structVerions where they are missing
* consistently check for compatibility in qqmlmetatype.cpp
* remove unused members
* rename RegisterSingletonFunctor
Fixes: QTBUG-82241
Change-Id: I74f1876b3298dbb60ff7cfab8c13e8ad4f9f8cdc
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlprivate.h')
-rw-r--r-- | src/qml/qml/qqmlprivate.h | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/qml/qml/qqmlprivate.h b/src/qml/qml/qqmlprivate.h index 968811e602..259deb5f32 100644 --- a/src/qml/qml/qqmlprivate.h +++ b/src/qml/qml/qqmlprivate.h @@ -400,7 +400,7 @@ namespace QQmlPrivate }; struct RegisterAutoParent { - int version; + int structVersion; AutoParentFunction function; }; @@ -413,12 +413,11 @@ namespace QQmlPrivate const char *typeName; QJSValue (*scriptApi)(QQmlEngine *, QJSEngine *); - QObject *(*qobjectApi)(QQmlEngine *, QJSEngine *); - const QMetaObject *instanceMetaObject; // new in version 1 - QMetaType typeId; // new in version 2 - QTypeRevision revision; // new in version 2 - std::function<QObject*(QQmlEngine *, QJSEngine *)> generalizedQobjectApi; // new in version 3 - // If this is extended ensure "version" is bumped!!! + std::function<QObject*(QQmlEngine *, QJSEngine *)> qObjectApi; + + const QMetaObject *instanceMetaObject; + QMetaType typeId; + QTypeRevision revision; }; struct RegisterSingletonTypeAndRevisions { @@ -426,16 +425,17 @@ namespace QQmlPrivate const char *uri; QTypeRevision version; - QJSValue (*scriptApi)(QQmlEngine *, QJSEngine *); + std::function<QObject*(QQmlEngine *, QJSEngine *)> qObjectApi; + const QMetaObject *instanceMetaObject; const QMetaObject *classInfoMetaObject; QMetaType typeId; - std::function<QObject*(QQmlEngine *, QJSEngine *)> generalizedQobjectApi; // new in version 3 QVector<int> *qmlTypeIds; }; struct RegisterCompositeType { + int structVersion; QUrl url; const char *uri; QTypeRevision version; @@ -443,6 +443,7 @@ namespace QQmlPrivate }; struct RegisterCompositeSingletonType { + int structVersion; QUrl url; const char *uri; QTypeRevision version; @@ -475,7 +476,7 @@ namespace QQmlPrivate int Q_QML_EXPORT qmlregister(RegistrationType, void *); void Q_QML_EXPORT qmlunregister(RegistrationType, quintptr); - struct Q_QML_EXPORT RegisterSingletonFunctor + struct Q_QML_EXPORT SingletonFunctor { QObject *operator()(QQmlEngine *, QJSEngine *); @@ -593,13 +594,12 @@ namespace QQmlPrivate uri, QTypeRevision::fromMajorVersion(versionMajor), - nullptr, + Constructors<T>::createSingletonInstance, &T::staticMetaObject, classInfoMetaObject, QMetaType::fromType<T *>(), - Constructors<T>::createSingletonInstance, qmlTypeIds }; |