forked from bblanchon/ArduinoJson
Added getElement() and getMember() to JsonVariantConst
This commit is contained in:
@ -5,6 +5,8 @@ HEAD
|
|||||||
----
|
----
|
||||||
|
|
||||||
* Fixed regression in UTF16 decoding (issue #1173)
|
* Fixed regression in UTF16 decoding (issue #1173)
|
||||||
|
* Fixed `containsKey()` on `JsonVariantConst`
|
||||||
|
* Added `getElement()` and `getMember()` to `JsonVariantConst`
|
||||||
|
|
||||||
v6.14.0 (2020-01-16)
|
v6.14.0 (2020-01-16)
|
||||||
-------
|
-------
|
||||||
|
@ -26,3 +26,19 @@ TEST_CASE("JsonVariant::containsKey()") {
|
|||||||
REQUIRE(var.containsKey(std::string("world")) == false);
|
REQUIRE(var.containsKey(std::string("world")) == false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("JsonVariantConst::containsKey()") {
|
||||||
|
DynamicJsonDocument doc(4096);
|
||||||
|
doc["hello"] = "world";
|
||||||
|
JsonVariantConst cvar = doc.as<JsonVariant>();
|
||||||
|
|
||||||
|
SECTION("containsKey(const char*) returns true") {
|
||||||
|
REQUIRE(cvar.containsKey("hello") == true);
|
||||||
|
REQUIRE(cvar.containsKey("world") == false);
|
||||||
|
}
|
||||||
|
|
||||||
|
SECTION("containsKey(std::string) returns true") {
|
||||||
|
REQUIRE(cvar.containsKey(std::string("hello")) == true);
|
||||||
|
REQUIRE(cvar.containsKey(std::string("world")) == false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -114,7 +114,7 @@ VariantRef::to() const {
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline VariantConstRef VariantConstRef::operator[](size_t index) const {
|
inline VariantConstRef VariantConstRef::getElement(size_t index) const {
|
||||||
return ArrayConstRef(_data != 0 ? _data->asArray() : 0)[index];
|
return ArrayConstRef(_data != 0 ? _data->asArray() : 0)[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -369,7 +369,27 @@ class VariantConstRef : public VariantRefBase<const VariantData>,
|
|||||||
return variantAs<typename VariantConstAs<T>::type>(_data);
|
return variantAs<typename VariantConstAs<T>::type>(_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCE_INLINE VariantConstRef operator[](size_t index) const;
|
FORCE_INLINE VariantConstRef getElement(size_t) const;
|
||||||
|
|
||||||
|
FORCE_INLINE VariantConstRef operator[](size_t index) const {
|
||||||
|
return getElement(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
// getMember(const std::string&) const
|
||||||
|
// getMember(const String&) const
|
||||||
|
template <typename TString>
|
||||||
|
FORCE_INLINE VariantConstRef getMember(const TString &key) const {
|
||||||
|
return VariantConstRef(objectGet(variantAsObject(_data), adaptString(key)));
|
||||||
|
}
|
||||||
|
|
||||||
|
// getMember(char*) const
|
||||||
|
// getMember(const char*) const
|
||||||
|
// getMember(const __FlashStringHelper*) const
|
||||||
|
template <typename TChar>
|
||||||
|
FORCE_INLINE VariantConstRef getMember(TChar *key) const {
|
||||||
|
const CollectionData *obj = variantAsObject(_data);
|
||||||
|
return VariantConstRef(obj ? obj->get(adaptString(key)) : 0);
|
||||||
|
}
|
||||||
|
|
||||||
// operator[](const std::string&) const
|
// operator[](const std::string&) const
|
||||||
// operator[](const String&) const
|
// operator[](const String&) const
|
||||||
@ -377,7 +397,7 @@ class VariantConstRef : public VariantRefBase<const VariantData>,
|
|||||||
FORCE_INLINE
|
FORCE_INLINE
|
||||||
typename enable_if<IsString<TString>::value, VariantConstRef>::type
|
typename enable_if<IsString<TString>::value, VariantConstRef>::type
|
||||||
operator[](const TString &key) const {
|
operator[](const TString &key) const {
|
||||||
return VariantConstRef(objectGet(variantAsObject(_data), adaptString(key)));
|
return getMember(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
// operator[](char*) const
|
// operator[](char*) const
|
||||||
@ -387,8 +407,7 @@ class VariantConstRef : public VariantRefBase<const VariantData>,
|
|||||||
FORCE_INLINE
|
FORCE_INLINE
|
||||||
typename enable_if<IsString<TChar *>::value, VariantConstRef>::type
|
typename enable_if<IsString<TChar *>::value, VariantConstRef>::type
|
||||||
operator[](TChar *key) const {
|
operator[](TChar *key) const {
|
||||||
const CollectionData *obj = variantAsObject(_data);
|
return getMember(key);
|
||||||
return VariantConstRef(obj ? obj->get(adaptString(key)) : 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCE_INLINE bool operator==(VariantConstRef lhs) const {
|
FORCE_INLINE bool operator==(VariantConstRef lhs) const {
|
||||||
|
Reference in New Issue
Block a user