4#ifndef QQMLTYPENAMECACHE_P_H
5#define QQMLTYPENAMECACHE_P_H
18#include <private/qqmlrefcount_p.h>
21#include <private/qstringhash_p.h>
22#include <private/qqmlimport_p.h>
23#include <private/qqmltypemoduleversion_p.h>
25#include <QtCore/qvector.h>
54 inline bool isEmpty()
const;
63 inline Result(
int scriptIndex);
65 inline bool isValid()
const;
76 template<QQmlImport::RecursionRestriction recursionRestriction = QQmlImport::PreventRecursion>
79 return doQuery<const QHashedStringRef &, recursionRestriction>(
key);
82 template<QueryNamespaced queryNamespaced = QueryNamespaced::Yes>
85 return doQuery<const QHashedStringRef &, queryNamespaced>(
key, importNamespace);
88 template<QQmlImport::RecursionRestriction recursionRestriction = QQmlImport::PreventRecursion>
91 return doQuery<const QV4::String *, recursionRestriction>(
key);
94 template<QueryNamespaced queryNamespaced = QueryNamespaced::Yes>
97 return doQuery<const QV4::String *, queryNamespaced>(
key, importNamespace);
124 template<
typename Key, QQmlImport::RecursionRestriction recursionRestriction>
127 Result
result = doQuery(m_namedImports,
name);
130 result = typeSearch(m_anonymousImports,
name);
133 result = doQuery(m_anonymousCompositeSingletons,
name);
142 bool typeRecursionDetected =
false;
143 const bool typeFound = m_imports->resolveType(
144 toHashedStringRef(
name), &
t,
nullptr, &typeNamespace, &errors,
147 ? &typeRecursionDetected
157 template<
typename Key, QueryNamespaced queryNamespaced>
162 if constexpr (queryNamespaced == QueryNamespaced::Yes) {
164 = m_namespacedImports.
constFind(importNamespace);
185 bool typeFound = m_imports->resolveType(
186 qualifiedTypeName, &
t,
nullptr, &typeNamespace, &errors);
194 template<
typename Key>
200 if (
i->scriptIndex != -1) {
201 return Result(
i->scriptIndex);
210 template<
typename Key>
222 template<
typename Key>
243: importNamespace(
nullptr), scriptIndex(-1)
248: importNamespace(importNamespace), scriptIndex(-1)
258: importNamespace(
nullptr), scriptIndex(scriptIndex)
264 return type.isValid() || importNamespace || scriptIndex != -1;
269 return m_namedImports.
isEmpty() && m_anonymousImports.isEmpty()
270 && m_anonymousCompositeSingletons.
isEmpty();
const_iterator constBegin() const noexcept
const_iterator constEnd() const noexcept
The QQmlEngine class provides an environment for instantiating QML components.
The QQmlImports class encapsulates one QML document's import statements.
QQmlTypeNameCache(const QQmlRefPointer< QQmlImports > &imports)
Result query(const QHashedStringRef &key, const QQmlImportRef *importNamespace) const
Result query(const QV4::String *key) const
Result query(const QHashedStringRef &key) const
Result query(const QV4::String *key, const QQmlImportRef *importNamespace) const
const_iterator constEnd() const noexcept
const_iterator constFind(const T &value) const
T * value(const K &) const
\macro QT_RESTRICTED_CAST_FROM_ASCII
qsizetype size() const
Returns the number of characters in this string.
QSet< QString >::iterator it
Combined button and popup list for selecting options.
static void add(QPainterPath &path, const QWingedEdge &list, int edge, QPathEdge::Traversal traversal)
QUrl url("example.com")
[constructor-url-reference]
QVector< QQmlTypeModuleVersion > modules
QStringHash< QUrl > compositeSingletons
const QQmlImportRef * importNamespace
QStringPrivate & text() const
void simplifyString() const