aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlengine.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2023-11-08 14:20:17 +0100
committerUlf Hermann <ulf.hermann@qt.io>2023-11-24 04:26:56 +0100
commita021bd427328c495cf9969be820a3cfbd41996c6 (patch)
tree89c7a0a3c5121f62dce1dd661fa8196eb0f545a1 /src/qml/qml/qqmlengine.cpp
parentb54f42c41eee9edc4e4b734822a882f5e703c215 (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.cpp87
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>>);