diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-06-09 10:54:50 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-06-10 10:06:20 +0200 |
commit | 60c657e0878d359df6089af699ea671ccea0e143 (patch) | |
tree | 58f10bad5a5e7f031c5b4d49605c76ed9127faa2 /src/qml/qml/qqmltypemodule_p.h | |
parent | cd9f15bc1a4f1294d3387fb6358ba5c809dbb150 (diff) |
Un-pimpl QQmlModuleImport
There is no point in having that pimpl'd.
Change-Id: I9e3f6671ca178ea3f58fd0488dbb291a38656685
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/qml/qqmltypemodule_p.h')
-rw-r--r-- | src/qml/qml/qqmltypemodule_p.h | 51 |
1 files changed, 39 insertions, 12 deletions
diff --git a/src/qml/qml/qqmltypemodule_p.h b/src/qml/qml/qqmltypemodule_p.h index a4c319e32e..28cf070a95 100644 --- a/src/qml/qml/qqmltypemodule_p.h +++ b/src/qml/qml/qqmltypemodule_p.h @@ -52,6 +52,8 @@ // #include <QtQml/qtqmlglobal.h> +#include <QtQml/private/qstringhash_p.h> +#include <QtCore/qmutex.h> #include <QtCore/qstring.h> #include <QtCore/qversionnumber.h> @@ -62,32 +64,40 @@ QT_BEGIN_NAMESPACE class QQmlType; class QQmlTypePrivate; struct QQmlMetaTypeData; -class QHashedString; -class QHashedStringRef; namespace QV4 { struct String; } -class QQmlTypeModulePrivate; class QQmlTypeModule { public: - QQmlTypeModule(const QString &uri = QString(), quint8 majorVersion = 0); - ~QQmlTypeModule(); + QQmlTypeModule() = default; + QQmlTypeModule(const QString &uri, quint8 majorVersion) + : m_module(uri), m_majorVersion(majorVersion) + {} void add(QQmlTypePrivate *); void remove(const QQmlTypePrivate *type); - bool isLocked() const; - void lock(); + bool isLocked() const { return m_locked.loadRelaxed() != 0; } + void lock() { m_locked.storeRelaxed(1); } - QString module() const; - quint8 majorVersion() const; + QString module() const + { + // No need to lock. m_module is const + return m_module; + } + + quint8 majorVersion() const + { + // No need to lock. d->majorVersion is const + return m_majorVersion; + } void addMinorVersion(quint8 minorVersion); - quint8 minimumMinorVersion() const; - quint8 maximumMinorVersion() const; + quint8 minimumMinorVersion() const { return m_minMinorVersion.loadRelaxed(); } + quint8 maximumMinorVersion() const { return m_maxMinorVersion.loadRelaxed(); } QQmlType type(const QHashedStringRef &, QTypeRevision version) const; QQmlType type(const QV4::String *, QTypeRevision version) const; @@ -99,7 +109,24 @@ public: QStringList imports() const; private: - QQmlTypeModulePrivate *d; + const QString m_module; + const quint8 m_majorVersion = 0; + + QStringList m_imports; + + // Can only ever decrease + QAtomicInt m_minMinorVersion = std::numeric_limits<quint8>::max(); + + // Can only ever increase + QAtomicInt m_maxMinorVersion = 0; + + // Bool. Can only be set to 1 once. + QAtomicInt m_locked = 0; + + using TypeHash = QStringHash<QList<QQmlTypePrivate *>>; + TypeHash m_typeHash; + + mutable QMutex m_mutex; }; QT_END_NAMESPACE |