5#ifndef QQMLTYPELOADERDATA_P_H
6#define QQMLTYPELOADERDATA_P_H
19#include <private/qqmlrefcount_p.h>
20#include <private/qqmltypeloaderqmldircontent_p.h>
21#include <private/qqmltypeloaderthread_p.h>
22#include <private/qv4engine_p.h>
24#include <QtQml/qtqmlglobal.h>
25#include <QtQml/qqmlengine.h>
27#include <QtCore/qcache.h>
28#include <QtCore/qthread.h>
50 bool fileExists(
const QString &path,
const QString &file);
52 void clear() { content.clear(); }
100#if QT_CONFIG(qml_network)
118#if QT_CONFIG(qml_debug)
128#if QT_CONFIG(qml_network)
129class QQmlTypeLoaderNetworkAccessManagerData
131 Q_DISABLE_COPY_MOVE(QQmlTypeLoaderNetworkAccessManagerData)
133 QQmlTypeLoaderNetworkAccessManagerData() =
default;
135 QQmlNetworkAccessManagerFactory *networkAccessManagerFactory =
nullptr;
140 mutable QMutex networkAccessManagerMutex;
146 template<
typename Data,
typename LockedData>
149 template<
typename Data,
typename LockedData>
152 template<
typename Data,
typename LockedData>
155 template<
typename Data,
typename LockedData>
157 friend class QQmlNetworkAccessManagerFactoryPtr;
167 Q_ASSERT(isCurrentJsEngineThread());
168 m_thread =
new QQmlTypeLoaderThread(loader);
174 Q_ASSERT(isCurrentJsEngineThread());
180 m_thread->shutdown();
181 delete std::exchange(m_thread,
nullptr);
186 Q_ASSERT(isCurrentJsEngineThread());
191 bool isCurrentJsEngineThread()
const
193 if (QJSEngine *jsEngine = m_engine->jsEngine())
194 return jsEngine->thread()->isCurrentThread();
204#if QT_CONFIG(qml_network)
208 QV4::ExecutionEngine *m_engine =
nullptr;
209 QQmlTypeLoaderThread *m_thread =
nullptr;
212template<
typename Data,
typename LockedData>
243using QQmlTypeLoaderSharedDataConstPtr
246template<
typename Data,
typename LockedData>
267using QQmlTypeLoaderThreadDataPtr
269using QQmlTypeLoaderThreadDataConstPtr
273template<
typename Data,
typename LockedData>
310 bool wasShutDown =
false;
313using QQmlTypeLoaderConfiguredDataPtr
315using QQmlTypeLoaderConfiguredDataConstPtr
318#if QT_CONFIG(qml_network)
319class QQmlEnginePublicAPIToken;
320template<
typename Data,
typename LockedData>
321class QQmlNetworkAccessManagerFactoryPtrBase
323 Q_DISABLE_COPY_MOVE(QQmlNetworkAccessManagerFactoryPtrBase)
325 Q_NODISCARD_CTOR QQmlNetworkAccessManagerFactoryPtrBase(LockedData *data) : data(data)
328 data->m_networkAccessManagerData.networkAccessManagerMutex.lock();
331 ~QQmlNetworkAccessManagerFactoryPtrBase()
334 data->m_networkAccessManagerData.networkAccessManagerMutex.unlock();
337 QQmlNetworkAccessManagerFactory &operator*()
const
339 return *data->m_networkAccessManagerData.networkAccessManagerFactory;
342 QQmlNetworkAccessManagerFactory *operator->()
const
344 return data->m_networkAccessManagerData.networkAccessManagerFactory;
347 operator
bool()
const
349 return data->m_networkAccessManagerData.networkAccessManagerFactory !=
nullptr;
354 QQmlNetworkAccessManagerFactory *get(
const QQmlEnginePublicAPIToken &)
const
356 return data->m_networkAccessManagerData.networkAccessManagerFactory;
360 LockedData *data =
nullptr;
366using QQmlNetworkAccessManagerFactoryPtrConst
367 = QQmlNetworkAccessManagerFactoryPtrBase<
const QQmlTypeLoaderNetworkAccessManagerData,
const QQmlTypeLoaderLockedData>;
369class QQmlNetworkAccessManagerFactoryPtr
370 :
public QQmlNetworkAccessManagerFactoryPtrBase<QQmlTypeLoaderNetworkAccessManagerData, QQmlTypeLoaderLockedData>
372 Q_DISABLE_COPY(QQmlNetworkAccessManagerFactoryPtr)
374 Q_NODISCARD_CTOR QQmlNetworkAccessManagerFactoryPtr(QQmlTypeLoaderLockedData *lockedData)
375 : QQmlNetworkAccessManagerFactoryPtrBase<QQmlTypeLoaderNetworkAccessManagerData, QQmlTypeLoaderLockedData>(lockedData)
379 void reset(QQmlNetworkAccessManagerFactory *factory)
381 data->m_networkAccessManagerData.networkAccessManagerFactory = factory;
friend class QQmlNetworkAccessManagerFactoryPtrBase
friend class QQmlTypeLoaderThreadDataPtrBase
friend class QQmlTypeLoaderConfiguredDataPtrBase
QQmlTypeLoaderThread * thread() const
void createThread(QQmlTypeLoader *loader)
QV4::ExecutionEngine * engine() const
bool fileExists(const QString &path, const QString &file)
bool directoryExists(const QString &dirPath)
ImportDirCache importDirCache
QQmlTypeLoaderSharedData()=default
int typeCacheTrimThreshold
ImportQmlDirCache importQmlDirCache
QSet< QString > modulesForWhichPluginsHaveBeenProcessed
QSet< QString > initializedPlugins
QQmlTypeLoaderThreadData()=default
QStringHash< QmldirInfo * > qmldirInfo
ChecksumCache checksumCache
Combined button and popup list for selecting options.
static FileSetPopulateResult populateFileSet(QCache< QString, bool > *fileSet, const QString &path, const QString &file)
static QT_BEGIN_NAMESPACE constexpr QDirListing::IteratorFlags dirListingFlags()
QQmlTypeLoaderSharedDataPtrBase< QQmlTypeLoaderSharedData, QQmlTypeLoaderLockedData > QQmlTypeLoaderSharedDataPtr