aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmltypemodule_p.h
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-06-09 10:54:50 +0200
committerUlf Hermann <ulf.hermann@qt.io>2020-06-10 10:06:20 +0200
commit60c657e0878d359df6089af699ea671ccea0e143 (patch)
tree58f10bad5a5e7f031c5b4d49605c76ed9127faa2 /src/qml/qml/qqmltypemodule_p.h
parentcd9f15bc1a4f1294d3387fb6358ba5c809dbb150 (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.h51
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