diff options
Diffstat (limited to 'src/qml/qml/qqmlimport_p.h')
-rw-r--r-- | src/qml/qml/qqmlimport_p.h | 51 |
1 files changed, 24 insertions, 27 deletions
diff --git a/src/qml/qml/qqmlimport_p.h b/src/qml/qml/qqmlimport_p.h index 6a9d207a6b..ef9b4b3422 100644 --- a/src/qml/qml/qqmlimport_p.h +++ b/src/qml/qml/qqmlimport_p.h @@ -15,7 +15,6 @@ #include <private/qqmldirparser_p.h> #include <private/qqmltype_p.h> #include <private/qstringhash_p.h> -#include <private/qv4compileddata_p.h> #include <private/qfieldlist_p.h> // @@ -38,6 +37,7 @@ class QQmlImportNamespace; class QQmlImportDatabase; class QQmlTypeLoader; class QQmlTypeLoaderQmldirContent; +class QTypeRevision; const QLoggingCategory &lcQmlImport(); @@ -55,7 +55,6 @@ struct QQmlImportInstance QString uri; // e.g. QtQuick QString url; // the base path of the import - QQmlType containingType; // points to the containing type for inline components QTypeRevision version; // the version imported bool isLibrary; // true means that this is not a file import @@ -115,7 +114,7 @@ public: } }; -class Q_QML_PRIVATE_EXPORT QQmlImports : public QQmlRefCount +class Q_QML_EXPORT QQmlImports final : public QQmlRefCounted<QQmlImports> { Q_DISABLE_COPY_MOVE(QQmlImports) public: @@ -127,7 +126,7 @@ public: }; Q_DECLARE_FLAGS(ImportFlags, ImportFlag) - QQmlImports(QQmlTypeLoader *loader) : m_typeLoader(loader) {} + QQmlImports() = default; ~QQmlImports() { while (QQmlImportNamespace *ns = m_qualifiedSets.takeFirst()) @@ -138,13 +137,14 @@ public: QUrl baseUrl() const { return m_baseUrl; } bool resolveType( - const QHashedStringRef &type, QQmlType *type_return, QTypeRevision *version_return, - QQmlImportNamespace **ns_return, QList<QQmlError> *errors = nullptr, + QQmlTypeLoader *typeLoader, const QHashedStringRef &type, QQmlType *type_return, + QTypeRevision *version_return, QQmlImportNamespace **ns_return, + QList<QQmlError> *errors = nullptr, QQmlType::RegistrationType registrationType = QQmlType::AnyRegistrationType, bool *typeRecursionDetected = nullptr) const; QTypeRevision addImplicitImport( - QQmlImportDatabase *importDb, QString *localQmldir, QList<QQmlError> *errors) + QQmlTypeLoader *typeLoader, QString *localQmldir, QList<QQmlError> *errors) { Q_ASSERT(errors); qCDebug(lcQmlImport) << "addImplicitImport:" << qPrintable(baseUrl().toString()); @@ -152,26 +152,25 @@ public: const ImportFlags flags = ImportFlags(!isLocal(baseUrl()) ? ImportIncomplete : ImportNoFlag); return addFileImport( - importDb, QLatin1String("."), QString(), QTypeRevision(), - flags, QQmlImportInstance::Implicit, localQmldir, errors); + typeLoader, QLatin1String("."), QString(), QTypeRevision(), flags, + QQmlImportInstance::Implicit, localQmldir, errors); } bool addInlineComponentImport( - QQmlImportInstance *const importInstance, const QString &name, const QUrl importUrl, - QQmlType containingType); + QQmlImportInstance *const importInstance, const QString &name, const QUrl importUrl); QTypeRevision addFileImport( - QQmlImportDatabase *importDb, const QString &uri, const QString &prefix, + QQmlTypeLoader *typeLoader, const QString &uri, const QString &prefix, QTypeRevision version, ImportFlags flags, quint16 precedence, QString *localQmldir, QList<QQmlError> *errors); QTypeRevision addLibraryImport( - QQmlImportDatabase *importDb, const QString &uri, const QString &prefix, + QQmlTypeLoader *typeLoader, const QString &uri, const QString &prefix, QTypeRevision version, const QString &qmldirIdentifier, const QString &qmldirUrl, ImportFlags flags, quint16 precedence, QList<QQmlError> *errors); QTypeRevision updateQmldirContent( - QQmlImportDatabase *importDb, const QString &uri, const QString &prefix, + QQmlTypeLoader *typeLoader, const QString &uri, const QString &prefix, const QString &qmldirIdentifier, const QString &qmldirUrl, QList<QQmlError> *errors); void populateCache(QQmlTypeNameCache *cache) const; @@ -213,14 +212,17 @@ public: static void setDesignerSupportRequired(bool b); + static QTypeRevision validVersion(QTypeRevision version = QTypeRevision()); + private: friend class QQmlImportDatabase; QQmlImportNamespace *importNamespace(const QString &prefix); bool resolveType( - const QHashedStringRef &type, QTypeRevision *version_return, QQmlType *type_return, - QList<QQmlError> *errors, QQmlType::RegistrationType registrationType, + QQmlTypeLoader *typeLoader, const QHashedStringRef &type, QTypeRevision *version_return, + QQmlType *type_return, QList<QQmlError> *errors, + QQmlType::RegistrationType registrationType, bool *typeRecursionDetected = nullptr) const; QQmlImportNamespace *findQualifiedNamespace(const QHashedStringRef &) const; @@ -230,20 +232,17 @@ private: QTypeRevision version, QList<QQmlError> *errors); QTypeRevision importExtension( - const QString &uri, QTypeRevision version, QQmlImportDatabase *database, + QQmlTypeLoader *typeLoader, const QString &uri, QTypeRevision version, const QQmlTypeLoaderQmldirContent *qmldir, QList<QQmlError> *errors); + QString redirectQmldirContent(QQmlTypeLoader *typeLoader, QQmlTypeLoaderQmldirContent *qmldir); + bool getQmldirContent( - const QString &qmldirIdentifier, const QString &uri, QQmlTypeLoaderQmldirContent *qmldir, - QList<QQmlError> *errors); + QQmlTypeLoader *typeLoader, const QString &qmldirIdentifier, const QString &uri, + QQmlTypeLoaderQmldirContent *qmldir, QList<QQmlError> *errors); QString resolvedUri(const QString &dir_arg, QQmlImportDatabase *database); - QQmlImportInstance *addImportToNamespace( - QQmlImportNamespace *nameSpace, const QString &uri, const QString &url, - QTypeRevision version, QV4::CompiledData::Import::ImportType type, - QList<QQmlError> *errors, quint16 precedence); - QUrl m_baseUrl; QString m_base; @@ -255,13 +254,11 @@ private: // storage of data related to imports with a namespace QFieldList<QQmlImportNamespace, &QQmlImportNamespace::nextNamespace> m_qualifiedSets; - - QQmlTypeLoader *m_typeLoader = nullptr; }; Q_DECLARE_OPERATORS_FOR_FLAGS(QQmlImports::ImportFlags) -class Q_QML_PRIVATE_EXPORT QQmlImportDatabase +class Q_QML_EXPORT QQmlImportDatabase { Q_DECLARE_TR_FUNCTIONS(QQmlImportDatabase) public: |