Add qHash(QStringView)

[ChangeLog][QtCore] Added qHash(QStringView).

Change-Id: I69c9203cf301fe586e924168381884aab2e19e5c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru>
This commit is contained in:
Marc Mutz 2017-03-29 18:16:09 +02:00
parent 35b897218c
commit 8d44bb2c54
2 changed files with 18 additions and 1 deletions

View File

@ -235,6 +235,7 @@ uint qHash(const QByteArray &key, uint seed) Q_DECL_NOTHROW
return hash(reinterpret_cast<const uchar *>(key.constData()), size_t(key.size()), seed); return hash(reinterpret_cast<const uchar *>(key.constData()), size_t(key.size()), seed);
} }
#if QT_STRINGVIEW_LEVEL < 2
uint qHash(const QString &key, uint seed) Q_DECL_NOTHROW uint qHash(const QString &key, uint seed) Q_DECL_NOTHROW
{ {
return hash(key.unicode(), size_t(key.size()), seed); return hash(key.unicode(), size_t(key.size()), seed);
@ -244,6 +245,12 @@ uint qHash(const QStringRef &key, uint seed) Q_DECL_NOTHROW
{ {
return hash(key.unicode(), size_t(key.size()), seed); return hash(key.unicode(), size_t(key.size()), seed);
} }
#endif
uint qHash(QStringView key, uint seed) Q_DECL_NOTHROW
{
return hash(key.data(), key.size(), seed);
}
uint qHash(const QBitArray &bitArray, uint seed) Q_DECL_NOTHROW uint qHash(const QBitArray &bitArray, uint seed) Q_DECL_NOTHROW
{ {
@ -1023,6 +1030,13 @@ uint qHash(long double key, uint seed) Q_DECL_NOTHROW
Returns the hash value for the \a key, using \a seed to seed the calculation. Returns the hash value for the \a key, using \a seed to seed the calculation.
*/ */
/*! \fn uint qHash(QStringView key, uint seed = 0)
\relates QStringView
\since 5.10
Returns the hash value for the \a key, using \a seed to seed the calculation.
*/
/*! \fn uint qHash(QLatin1String key, uint seed = 0) /*! \fn uint qHash(QLatin1String key, uint seed = 0)
\relates QHash \relates QHash
\since 5.0 \since 5.0

View File

@ -41,7 +41,7 @@
#ifndef QHASHFUNCTIONS_H #ifndef QHASHFUNCTIONS_H
#define QHASHFUNCTIONS_H #define QHASHFUNCTIONS_H
#include <QtCore/qchar.h> #include <QtCore/qstring.h>
#include <QtCore/qpair.h> #include <QtCore/qpair.h>
#include <numeric> // for std::accumulate #include <numeric> // for std::accumulate
@ -95,8 +95,11 @@ Q_CORE_EXPORT Q_DECL_CONST_FUNCTION uint qHash(long double key, uint seed = 0) Q
#endif #endif
Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline uint qHash(const QChar key, uint seed = 0) Q_DECL_NOTHROW { return qHash(key.unicode(), seed); } Q_DECL_CONST_FUNCTION Q_DECL_CONSTEXPR inline uint qHash(const QChar key, uint seed = 0) Q_DECL_NOTHROW { return qHash(key.unicode(), seed); }
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(const QByteArray &key, uint seed = 0) Q_DECL_NOTHROW; Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(const QByteArray &key, uint seed = 0) Q_DECL_NOTHROW;
#if QT_STRINGVIEW_LEVEL < 2
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(const QString &key, uint seed = 0) Q_DECL_NOTHROW; Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(const QString &key, uint seed = 0) Q_DECL_NOTHROW;
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(const QStringRef &key, uint seed = 0) Q_DECL_NOTHROW; Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(const QStringRef &key, uint seed = 0) Q_DECL_NOTHROW;
#endif
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(QStringView key, uint seed = 0) Q_DECL_NOTHROW;
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(const QBitArray &key, uint seed = 0) Q_DECL_NOTHROW; Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(const QBitArray &key, uint seed = 0) Q_DECL_NOTHROW;
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(QLatin1String key, uint seed = 0) Q_DECL_NOTHROW; Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qHash(QLatin1String key, uint seed = 0) Q_DECL_NOTHROW;
Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qt_hash(QStringView key) Q_DECL_NOTHROW; Q_CORE_EXPORT Q_DECL_PURE_FUNCTION uint qt_hash(QStringView key) Q_DECL_NOTHROW;