4#ifndef QQMLTYPELOADERDATA_P_H
5#define QQMLTYPELOADERDATA_P_H
18#include <private/qqmlrefcount_p.h>
19#include <private/qqmltypeloaderqmldircontent_p.h>
20#include <private/qqmltypeloaderthread_p.h>
21#include <private/qv4engine_p.h>
23#include <QtQml/qtqmlglobal.h>
24#include <QtQml/qqmlengine.h>
26#include <QtCore/qcache.h>
27#include <QtCore/qthread.h>
90#if QT_CONFIG(qml_network)
108#if QT_CONFIG(qml_debug)
118#if QT_CONFIG(qml_network)
119class QQmlTypeLoaderNetworkAccessManagerData
121 Q_DISABLE_COPY_MOVE(QQmlTypeLoaderNetworkAccessManagerData)
123 QQmlTypeLoaderNetworkAccessManagerData() =
default;
125 QQmlNetworkAccessManagerFactory *networkAccessManagerFactory =
nullptr;
130 mutable QMutex networkAccessManagerMutex;
136 template<
typename Data,
typename LockedData>
139 template<
typename Data,
typename LockedData>
142 template<
typename Data,
typename LockedData>
145 template<
typename Data,
typename LockedData>
147 friend class QQmlNetworkAccessManagerFactoryPtr;
157 Q_ASSERT(isCurrentJsEngineThread());
158 m_thread =
new QQmlTypeLoaderThread(loader);
164 Q_ASSERT(isCurrentJsEngineThread());
170 m_thread->shutdown();
171 delete std::exchange(m_thread,
nullptr);
176 Q_ASSERT(isCurrentJsEngineThread());
181 bool isCurrentJsEngineThread()
const
183 if (QJSEngine *jsEngine = m_engine->jsEngine())
184 return jsEngine->thread()->isCurrentThread();
194#if QT_CONFIG(qml_network)
198 QV4::ExecutionEngine *m_engine =
nullptr;
199 QQmlTypeLoaderThread *m_thread =
nullptr;
202template<
typename Data,
typename LockedData>
233using QQmlTypeLoaderSharedDataConstPtr
236template<
typename Data,
typename LockedData>
257using QQmlTypeLoaderThreadDataPtr
259using QQmlTypeLoaderThreadDataConstPtr
263template<
typename Data,
typename LockedData>
288using QQmlTypeLoaderConfiguredDataPtr
290using QQmlTypeLoaderConfiguredDataConstPtr
293#if QT_CONFIG(qml_network)
294class QQmlEnginePublicAPIToken;
295template<
typename Data,
typename LockedData>
296class QQmlNetworkAccessManagerFactoryPtrBase
298 Q_DISABLE_COPY_MOVE(QQmlNetworkAccessManagerFactoryPtrBase)
300 Q_NODISCARD_CTOR QQmlNetworkAccessManagerFactoryPtrBase(LockedData *data) : data(data)
303 data->m_networkAccessManagerData.networkAccessManagerMutex.lock();
306 ~QQmlNetworkAccessManagerFactoryPtrBase()
309 data->m_networkAccessManagerData.networkAccessManagerMutex.unlock();
312 QQmlNetworkAccessManagerFactory &operator*()
const
314 return *data->m_networkAccessManagerData.networkAccessManagerFactory;
317 QQmlNetworkAccessManagerFactory *operator->()
const
319 return data->m_networkAccessManagerData.networkAccessManagerFactory;
322 operator
bool()
const
324 return data->m_networkAccessManagerData.networkAccessManagerFactory !=
nullptr;
329 QQmlNetworkAccessManagerFactory *get(
const QQmlEnginePublicAPIToken &)
const
331 return data->m_networkAccessManagerData.networkAccessManagerFactory;
335 LockedData *data =
nullptr;
341using QQmlNetworkAccessManagerFactoryPtrConst
342 = QQmlNetworkAccessManagerFactoryPtrBase<
const QQmlTypeLoaderNetworkAccessManagerData,
const QQmlTypeLoaderLockedData>;
344class QQmlNetworkAccessManagerFactoryPtr
345 :
public QQmlNetworkAccessManagerFactoryPtrBase<QQmlTypeLoaderNetworkAccessManagerData, QQmlTypeLoaderLockedData>
347 Q_DISABLE_COPY(QQmlNetworkAccessManagerFactoryPtr)
349 Q_NODISCARD_CTOR QQmlNetworkAccessManagerFactoryPtr(QQmlTypeLoaderLockedData *lockedData)
350 : QQmlNetworkAccessManagerFactoryPtrBase<QQmlTypeLoaderNetworkAccessManagerData, QQmlTypeLoaderLockedData>(lockedData)
354 void reset(QQmlNetworkAccessManagerFactory *factory)
356 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
ImportDirCache importDirCache
QQmlTypeLoaderSharedData()=default
int typeCacheTrimThreshold
ImportQmlDirCache importQmlDirCache
QSet< QString > modulesForWhichPluginsHaveBeenProcessed
QSet< QString > initializedPlugins
QQmlTypeLoaderThreadData()=default
QStringHash< QmldirInfo * > qmldirInfo
ChecksumCache checksumCache
QQmlTypeLoaderSharedDataPtrBase< QQmlTypeLoaderSharedData, QQmlTypeLoaderLockedData > QQmlTypeLoaderSharedDataPtr