diff options
Diffstat (limited to 'src/qml/qml/qqmltypenamecache_p.h')
-rw-r--r-- | src/qml/qml/qqmltypenamecache_p.h | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/src/qml/qml/qqmltypenamecache_p.h b/src/qml/qml/qqmltypenamecache_p.h index 6b3f9094f1..1ec0a65fa0 100644 --- a/src/qml/qml/qqmltypenamecache_p.h +++ b/src/qml/qml/qqmltypenamecache_p.h @@ -45,7 +45,7 @@ struct QQmlImportRef { class QQmlType; class QQmlEngine; -class Q_QML_PRIVATE_EXPORT QQmlTypeNameCache : public QQmlRefCount +class Q_QML_EXPORT QQmlTypeNameCache final : public QQmlRefCounted<QQmlTypeNameCache> { public: QQmlTypeNameCache(const QQmlRefPointer<QQmlImports> &imports) : m_imports(imports) {} @@ -74,27 +74,29 @@ public: // Restrict the types allowed for key. We don't want QV4::ScopedString, for example. template<QQmlImport::RecursionRestriction recursionRestriction = QQmlImport::PreventRecursion> - Result query(const QHashedStringRef &key) const + Result query(const QHashedStringRef &key, QQmlTypeLoader *typeLoader) const { - return doQuery<const QHashedStringRef &, recursionRestriction>(key); + return doQuery<const QHashedStringRef &, recursionRestriction>(key, typeLoader); } template<QueryNamespaced queryNamespaced = QueryNamespaced::Yes> - Result query(const QHashedStringRef &key, const QQmlImportRef *importNamespace) const + Result query(const QHashedStringRef &key, const QQmlImportRef *importNamespace, + QQmlTypeLoader *typeLoader) const { - return doQuery<const QHashedStringRef &, queryNamespaced>(key, importNamespace); + return doQuery<const QHashedStringRef &, queryNamespaced>(key, importNamespace, typeLoader); } template<QQmlImport::RecursionRestriction recursionRestriction = QQmlImport::PreventRecursion> - Result query(const QV4::String *key) const + Result query(const QV4::String *key, QQmlTypeLoader *typeLoader) const { - return doQuery<const QV4::String *, recursionRestriction>(key); + return doQuery<const QV4::String *, recursionRestriction>(key, typeLoader); } template<QueryNamespaced queryNamespaced = QueryNamespaced::Yes> - Result query(const QV4::String *key, const QQmlImportRef *importNamespace) const + Result query(const QV4::String *key, const QQmlImportRef *importNamespace, + QQmlTypeLoader *typeLoader) const { - return doQuery<const QV4::String *, queryNamespaced>(key, importNamespace); + return doQuery<const QV4::String *, queryNamespaced>(key, importNamespace, typeLoader); } private: @@ -122,7 +124,7 @@ private: static QString toQString(const QV4::String *key) { return key->toQStringNoThrow(); } template<typename Key, QQmlImport::RecursionRestriction recursionRestriction> - Result doQuery(Key name) const + Result doQuery(Key name, QQmlTypeLoader *typeLoader) const { Result result = doQuery(m_namedImports, name); @@ -141,9 +143,9 @@ private: QQmlType t; bool typeRecursionDetected = false; const bool typeFound = m_imports->resolveType( - toHashedStringRef(name), &t, nullptr, &typeNamespace, &errors, - QQmlType::AnyRegistrationType, - recursionRestriction == QQmlImport::AllowRecursion + typeLoader, toHashedStringRef(name), &t, nullptr, &typeNamespace, &errors, + QQmlType::AnyRegistrationType, + recursionRestriction == QQmlImport::AllowRecursion ? &typeRecursionDetected : nullptr); if (typeFound) @@ -155,7 +157,7 @@ private: } template<typename Key, QueryNamespaced queryNamespaced> - Result doQuery(Key name, const QQmlImportRef *importNamespace) const + Result doQuery(Key name, const QQmlImportRef *importNamespace, QQmlTypeLoader *typeLoader) const { Q_ASSERT(importNamespace && importNamespace->scriptIndex == -1); @@ -183,7 +185,7 @@ private: QList<QQmlError> errors; QQmlType t; bool typeFound = m_imports->resolveType( - qualifiedTypeName, &t, nullptr, &typeNamespace, &errors); + typeLoader, qualifiedTypeName, &t, nullptr, &typeNamespace, &errors); if (typeFound) return Result(t); } |