summaryrefslogtreecommitdiffstats
path: root/src/corelib/serialization/qcborvalue.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2021-11-12 14:15:23 -0800
committerThiago Macieira <thiago.macieira@intel.com>2022-02-15 17:00:04 -0800
commit832fcbf37f41160947955421522bb4f783059817 (patch)
tree733d3fa131cfd4d9400f35f9f18e949bd4834b97 /src/corelib/serialization/qcborvalue.cpp
parent072f0d5717eefeffea3fe72135f9f05135eece71 (diff)
QCborValue: merge the const operator[] into a template
Change-Id: I5e52dc5b093c43a3b678fffd16b6ec4b7d841955 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/corelib/serialization/qcborvalue.cpp')
-rw-r--r--src/corelib/serialization/qcborvalue.cpp16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/corelib/serialization/qcborvalue.cpp b/src/corelib/serialization/qcborvalue.cpp
index a4ebf31d5e..36d09b05f7 100644
--- a/src/corelib/serialization/qcborvalue.cpp
+++ b/src/corelib/serialization/qcborvalue.cpp
@@ -2169,9 +2169,7 @@ QCborMap QCborValue::toMap(const QCborMap &defaultValue) const
*/
const QCborValue QCborValue::operator[](const QString &key) const
{
- if (isMap())
- return toMap().value(key);
- return QCborValue();
+ return QCborContainerPrivate::findCborMapKey(*this, qToStringViewIgnoringNull(key));
}
/*!
@@ -2190,9 +2188,7 @@ const QCborValue QCborValue::operator[](const QString &key) const
*/
const QCborValue QCborValue::operator[](QLatin1String key) const
{
- if (isMap())
- return toMap().value(key);
- return QCborValue();
+ return QCborContainerPrivate::findCborMapKey(*this, key);
}
/*!
@@ -2208,11 +2204,9 @@ const QCborValue QCborValue::operator[](QLatin1String key) const
*/
const QCborValue QCborValue::operator[](qint64 key) const
{
- if (isMap())
- return toMap().value(key);
- if (isArray())
- return toArray().at(key);
- return QCborValue();
+ if (isArray() && container && quint64(key) < quint64(container->elements.size()))
+ return container->valueAt(key);
+ return QCborContainerPrivate::findCborMapKey(*this, key);
}
static bool shouldArrayRemainArray(qint64 key, QCborValue::Type t, QCborContainerPrivate *container)