mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Added getElement() and getMember() to JsonVariantConst
This commit is contained in:
		| @@ -5,6 +5,8 @@ HEAD | ||||
| ---- | ||||
|  | ||||
| * Fixed regression in UTF16 decoding (issue #1173) | ||||
| * Fixed `containsKey()` on `JsonVariantConst` | ||||
| * Added `getElement()` and `getMember()` to `JsonVariantConst` | ||||
|  | ||||
| v6.14.0 (2020-01-16) | ||||
| ------- | ||||
|   | ||||
| @@ -26,3 +26,19 @@ TEST_CASE("JsonVariant::containsKey()") { | ||||
|     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; | ||||
| } | ||||
|  | ||||
| inline VariantConstRef VariantConstRef::operator[](size_t index) const { | ||||
| inline VariantConstRef VariantConstRef::getElement(size_t index) const { | ||||
|   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); | ||||
|   } | ||||
|  | ||||
|   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 String&) const | ||||
| @@ -377,7 +397,7 @@ class VariantConstRef : public VariantRefBase<const VariantData>, | ||||
|   FORCE_INLINE | ||||
|       typename enable_if<IsString<TString>::value, VariantConstRef>::type | ||||
|       operator[](const TString &key) const { | ||||
|     return VariantConstRef(objectGet(variantAsObject(_data), adaptString(key))); | ||||
|     return getMember(key); | ||||
|   } | ||||
|  | ||||
|   // operator[](char*) const | ||||
| @@ -387,8 +407,7 @@ class VariantConstRef : public VariantRefBase<const VariantData>, | ||||
|   FORCE_INLINE | ||||
|       typename enable_if<IsString<TChar *>::value, VariantConstRef>::type | ||||
|       operator[](TChar *key) const { | ||||
|     const CollectionData *obj = variantAsObject(_data); | ||||
|     return VariantConstRef(obj ? obj->get(adaptString(key)) : 0); | ||||
|     return getMember(key); | ||||
|   } | ||||
|  | ||||
|   FORCE_INLINE bool operator==(VariantConstRef lhs) const { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user