diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-06-17 15:43:30 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-06-18 10:28:56 +0200 |
commit | 91262f62b48df03eb50616a4ec3f14f5c0b85fdb (patch) | |
tree | 2bf9284ee4ae8bd1c80370e4d8e420797c740f13 /src/qml | |
parent | a7a88483c61150f7b7d78dc97f4a521ef9f04899 (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')
-rw-r--r-- | src/qml/qml/qqmlmetatypedata_p.h | 17 |
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 |