diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2023-11-08 14:20:17 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2023-11-24 04:26:56 +0100 |
commit | a021bd427328c495cf9969be820a3cfbd41996c6 (patch) | |
tree | 89c7a0a3c5121f62dce1dd661fa8196eb0f545a1 /src/qml/qml/qqmlengine.cpp | |
parent | b54f42c41eee9edc4e4b734822a882f5e703c215 (diff) |
Make builtins an actual module
This way we can eventually use the metatypes generated by the builtins
to validate other module using qmltyperegistrar, and throw informed
warnings if types are missing.
qmltyperegistrar automatically picks up the metatypes of any library
linked into a target. This means it always picks up the builtins
metatypes now when QtQml is linked in.
We now have to check more closely whether an object binding is actually
a group property. QVariant now has a value type metaobject and does not
pass as "unknown thing" anymore.
We also have to move the QML_FOREIGN macros to QQmlIntegration since we
want QML_FOREIGN to declare the builtins but we don't want to depend on
QtQml.
Task-number: QTBUG-101143
Change-Id: I9f1a2713797291b6624aef0ade599d19e0766907
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlengine.cpp')
-rw-r--r-- | src/qml/qml/qqmlengine.cpp | 87 |
1 files changed, 4 insertions, 83 deletions
diff --git a/src/qml/qml/qqmlengine.cpp b/src/qml/qml/qqmlengine.cpp index b547e2cf52..f232c0aaee 100644 --- a/src/qml/qml/qqmlengine.cpp +++ b/src/qml/qml/qqmlengine.cpp @@ -62,6 +62,8 @@ QT_BEGIN_NAMESPACE +void qml_register_types_QML(); + /*! \qmltype QtObject \instantiates QObject @@ -477,89 +479,8 @@ void QQmlEnginePrivate::init() Q_Q(QQmlEngine); if (baseModulesUninitialized) { - // Named builtins - qmlRegisterType<void>("QML", 1, 0, "void"); - - const int varId = qmlRegisterType<QVariant>("QML", 1, 0, "var"); - QQmlMetaType::registerTypeAlias(varId, QLatin1String("variant")); - qmlRegisterAnonymousSequentialContainer<QList<QVariant>>("QML", 1); - - qmlRegisterType<QObject>("QML", 1, 0, "QtObject"); - qmlRegisterType<QQmlComponent>("QML", 1, 0, "Component"); - - qmlRegisterType<int>("QML", 1, 0, "int"); - qmlRegisterAnonymousSequentialContainer<QList<int>>("QML", 1); - - const int realId = qmlRegisterType<double>("QML", 1, 0, "real"); - QQmlMetaType::registerTypeAlias(realId, QLatin1String("double")); - qmlRegisterAnonymousSequentialContainer<QList<double>>("QML", 1); - - qmlRegisterType<QString>("QML", 1, 0, "string"); - qmlRegisterAnonymousSequentialContainer<QList<QString>>("QML", 1); - - qmlRegisterType<bool>("QML", 1, 0, "bool"); - qmlRegisterAnonymousSequentialContainer<QList<bool>>("QML", 1); - - qmlRegisterType<QDateTime>("QML", 1, 0, "date"); - qmlRegisterAnonymousSequentialContainer<QList<QDateTime>>("QML", 1); - - qmlRegisterType<QUrl>("QML", 1, 0, "url"); - qmlRegisterAnonymousSequentialContainer<QList<QUrl>>("QML", 1); - -#if QT_CONFIG(regularexpression) - qmlRegisterType<QRegularExpression>("QML", 1, 0, "regexp"); - qmlRegisterAnonymousSequentialContainer<QList<QRegularExpression>>("QML", 1); -#else - qmlRegisterType<void>("QML", 1, 0, "regexp"); -#endif - - // Anonymous builtins - qmlRegisterAnonymousType<std::nullptr_t>("QML", 1); - qmlRegisterAnonymousType<QVariantMap>("QML", 1); - - qmlRegisterAnonymousType<QJSValue>("QML", 1); - qmlRegisterAnonymousSequentialContainer<QList<QJSValue>>("QML", 1); - - qmlRegisterAnonymousType<qint8>("QML", 1); - qmlRegisterAnonymousSequentialContainer<QList<qint8>>("QML", 1); - - qmlRegisterAnonymousType<quint8>("QML", 1); - qmlRegisterAnonymousSequentialContainer<QList<quint8>>("QML", 1); - - qmlRegisterAnonymousType<short>("QML", 1); - qmlRegisterAnonymousSequentialContainer<QList<short>>("QML", 1); - - qmlRegisterAnonymousType<ushort>("QML", 1); - qmlRegisterAnonymousSequentialContainer<QList<ushort>>("QML", 1); - - qmlRegisterAnonymousType<uint>("QML", 1); - qmlRegisterAnonymousSequentialContainer<QList<uint>>("QML", 1); - - qmlRegisterAnonymousType<qlonglong>("QML", 1); - qmlRegisterAnonymousSequentialContainer<QList<qlonglong>>("QML", 1); - - qmlRegisterAnonymousType<qulonglong>("QML", 1); - qmlRegisterAnonymousSequentialContainer<QList<qulonglong>>("QML", 1); - - qmlRegisterAnonymousType<float>("QML", 1); - qmlRegisterAnonymousSequentialContainer<QList<float>>("QML", 1); - - qmlRegisterAnonymousType<QChar>("QML", 1); - qmlRegisterAnonymousSequentialContainer<QList<QChar>>("QML", 1); - - qmlRegisterAnonymousType<QDate>("QML", 1); - qmlRegisterAnonymousSequentialContainer<QList<QDate>>("QML", 1); - - qmlRegisterAnonymousType<QTime>("QML", 1); - qmlRegisterAnonymousSequentialContainer<QList<QTime>>("QML", 1); - - qmlRegisterAnonymousType<QByteArray>("QML", 1); - qmlRegisterAnonymousSequentialContainer<QList<QByteArray>>("QML", 1); - - qmlRegisterType<QObject>("QML", 1, 0, "QtObject"); - - qmlRegisterAnonymousType<QQmlComponentAttached>("QML", 1); - qmlRegisterType<QQmlComponent>("QML", 1, 0, "Component"); + // Register builtins + qml_register_types_QML(); // No need to specifically register those. static_assert(std::is_same_v<QStringList, QList<QString>>); |