aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlengine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/qml/qqmlengine.cpp')
-rw-r--r--src/qml/qml/qqmlengine.cpp106
1 files changed, 99 insertions, 7 deletions
diff --git a/src/qml/qml/qqmlengine.cpp b/src/qml/qml/qqmlengine.cpp
index d7542c09fc..64a0e48663 100644
--- a/src/qml/qml/qqmlengine.cpp
+++ b/src/qml/qml/qqmlengine.cpp
@@ -441,34 +441,126 @@ void QQmlData::flushPendingBinding(int coreIndex)
QQmlData::DeferredData::DeferredData() = default;
QQmlData::DeferredData::~DeferredData() = default;
+template<>
+int qmlRegisterType<void>(const char *uri, int versionMajor, int versionMinor, const char *qmlName)
+{
+ QQmlPrivate::RegisterType type = {
+ QQmlPrivate::RegisterType::CurrentVersion,
+ QMetaType(),
+ QMetaType(),
+ 0, nullptr, nullptr,
+ QString(),
+ nullptr,
+ uri,
+ QTypeRevision::fromVersion(versionMajor, versionMinor),
+ qmlName,
+ nullptr,
+ nullptr,
+ nullptr,
+ -1,
+ -1,
+ -1,
+ nullptr,
+ nullptr,
+ nullptr,
+ QTypeRevision::zero(),
+ -1,
+ QQmlPrivate::ValueTypeCreationMethod::None,
+ };
+
+ return QQmlPrivate::qmlregister(QQmlPrivate::TypeRegistration, &type);
+}
+
bool QQmlEnginePrivate::baseModulesUninitialized = true;
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);
- // required for the Compiler.
qmlRegisterType<QObject>("QML", 1, 0, "QtObject");
qmlRegisterType<QQmlComponent>("QML", 1, 0, "Component");
- qmlRegisterAnonymousSequentialContainer<QList<QVariant>>("QML", 1);
- qmlRegisterAnonymousSequentialContainer<QList<bool>>("QML", 1);
+
+ qmlRegisterType<int>("QML", 1, 0, "int");
qmlRegisterAnonymousSequentialContainer<QList<int>>("QML", 1);
- qmlRegisterAnonymousSequentialContainer<QList<float>>("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);
- qmlRegisterAnonymousSequentialContainer<QList<QUrl>>("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);
// No need to specifically register those.
static_assert(std::is_same_v<QStringList, QList<QString>>);
static_assert(std::is_same_v<QVariantList, QList<QVariant>>);
- qRegisterMetaType<QVariant>();
qRegisterMetaType<QQmlScriptString>();
- qRegisterMetaType<QJSValue>();
qRegisterMetaType<QQmlComponent::Status>();
qRegisterMetaType<QList<QObject*> >();
qRegisterMetaType<QQmlBinding*>();