aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlmetatypedata_p.h
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2020-06-17 15:43:30 +0200
committerUlf Hermann <ulf.hermann@qt.io>2020-06-18 10:28:56 +0200
commit91262f62b48df03eb50616a4ec3f14f5c0b85fdb (patch)
tree2bf9284ee4ae8bd1c80370e4d8e420797c740f13 /src/qml/qml/qqmlmetatypedata_p.h
parenta7a88483c61150f7b7d78dc97f4a521ef9f04899 (diff)
Refactor QQmlMetaTypeData::VersionedUri a bit
The hash function should take a seed, and properly combine the hashes, both operator== and qHash are better defined as friends. Change-Id: I770a725b72477689a654078da6f57f750a85abbd Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlmetatypedata_p.h')
-rw-r--r--src/qml/qml/qqmlmetatypedata_p.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/qml/qml/qqmlmetatypedata_p.h b/src/qml/qml/qqmlmetatypedata_p.h
index e7e086fb4c..9332d076ad 100644
--- a/src/qml/qml/qqmlmetatypedata_p.h
+++ b/src/qml/qml/qqmlmetatypedata_p.h
@@ -88,9 +88,17 @@ struct QQmlMetaTypeData
VersionedUri() : majorVersion(0) {}
VersionedUri(const QHashedString &uri, QTypeRevision version)
: uri(uri), majorVersion(version.majorVersion()) {}
- bool operator==(const VersionedUri &other) const {
- return other.majorVersion == majorVersion && other.uri == uri;
+
+ friend bool operator==(const VersionedUri &a, const VersionedUri &b)
+ {
+ return a.majorVersion == b.majorVersion && a.uri == b.uri;
+ }
+
+ friend size_t qHash(const VersionedUri &v, size_t seed = 0)
+ {
+ return qHashMulti(seed, v.uri, v.majorVersion);
}
+
QHashedString uri;
quint8 majorVersion;
};
@@ -136,11 +144,6 @@ private:
QStringList *m_typeRegistrationFailures = nullptr;
};
-inline size_t qHash(const QQmlMetaTypeData::VersionedUri &v)
-{
- return v.uri.hash() ^ qHash(v.majorVersion);
-}
-
QT_END_NAMESPACE
#endif // QQMLMETATYPEDATA_P_H