diff options
| author | Ulf Hermann <ulf.hermann@qt.io> | 2018-06-28 15:09:23 +0200 |
|---|---|---|
| committer | Ulf Hermann <ulf.hermann@qt.io> | 2018-08-27 13:06:19 +0000 |
| commit | 231273b130d4cc213158ce858262b7f1b7b6fcdd (patch) | |
| tree | ec650d5879a488bfea0860938ac27a083e5436e3 /src/corelib/serialization/qjsonvalue.cpp | |
| parent | 112c0632d944114ba2b4eb4875c4f65cd0c261eb (diff) | |
JSON: Add qHash functions for JSON and CBOR types
This way we can easily use them as keys in QHash and QSet.
Change-Id: Ie744c3b5ad1176ba2ab035c7e650af483757a0c9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/serialization/qjsonvalue.cpp')
| -rw-r--r-- | src/corelib/serialization/qjsonvalue.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/corelib/serialization/qjsonvalue.cpp b/src/corelib/serialization/qjsonvalue.cpp index 4469302e31e..2c04da48853 100644 --- a/src/corelib/serialization/qjsonvalue.cpp +++ b/src/corelib/serialization/qjsonvalue.cpp @@ -876,6 +876,28 @@ QJsonValue QJsonValueRef::toValue() const return o->valueAt(index); } +uint qHash(const QJsonValue &value, uint seed) +{ + switch (value.type()) { + case QJsonValue::Null: + return qHash(nullptr, seed); + case QJsonValue::Bool: + return qHash(value.toBool(), seed); + case QJsonValue::Double: + return qHash(value.toDouble(), seed); + case QJsonValue::String: + return qHash(value.toString(), seed); + case QJsonValue::Array: + return qHash(value.toArray(), seed); + case QJsonValue::Object: + return qHash(value.toObject(), seed); + case QJsonValue::Undefined: + return seed; + } + Q_UNREACHABLE(); + return 0; +} + #if !defined(QT_NO_DEBUG_STREAM) && !defined(QT_JSON_READONLY) QDebug operator<<(QDebug dbg, const QJsonValue &o) { |
