diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2021-05-01 18:03:41 +0200 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2021-05-11 13:22:44 +0200 |
commit | ddee595d583c251d4016332c9e3906bb1483c010 (patch) | |
tree | d9edf3d17b1dabefce71d684af3946e7c8590e46 /src | |
parent | e906bb84fba0311b5bc1ec1344dc70ca34981194 (diff) |
QFlags: add qHash overload
Stop going through the implicit int conversion.
[ChangeLog][QtCore][QFlags] QFlags now has a qHash() overload.
Change-Id: Id380ed252695f24af2e8c239b650dcb6f44e2893
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/global/qglobal.cpp | 9 | ||||
-rw-r--r-- | src/corelib/tools/qhashfunctions.h | 4 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index dea3b30a29..8753ac65f4 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -516,6 +516,15 @@ static_assert(sizeof(qint64) == 8, "Internal error, qint64 is misdefined"); */ /*! + \fn template <typename Enum> size_t qHash(QFlags<Enum> flags, size_t seed = 0) noexcept + \since 6.2 + \relates QFlags + + Calculates the hash for the flags \a flags, using \a seed + to seed the calcualtion. +*/ + +/*! \macro Q_DISABLE_COPY(Class) \relates QObject diff --git a/src/corelib/tools/qhashfunctions.h b/src/corelib/tools/qhashfunctions.h index 018c317834..835fed9589 100644 --- a/src/corelib/tools/qhashfunctions.h +++ b/src/corelib/tools/qhashfunctions.h @@ -175,6 +175,10 @@ Q_DECL_CONST_FUNCTION constexpr inline size_t qHash(QKeyCombination key, size_t { return qHash(key.toCombined(), seed); } Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qt_hash(QStringView key, uint chained = 0) noexcept; +template <typename Enum> +Q_DECL_CONST_FUNCTION constexpr inline size_t qHash(QFlags<Enum> flags, size_t seed = 0) noexcept +{ return qHash(flags.toInt(), seed); } + template <typename T, std::enable_if_t<QHashPrivate::HasQHashSingleArgOverload<T>, bool> = true> size_t qHash(const T &t, size_t seed) noexcept(noexcept(qHash(t))) { return qHash(t) ^ seed; } |