From 6dc36125c2d5671b904d7f60d61873b1556e1d63 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Thu, 23 Jul 2020 10:58:47 +0200 Subject: [PATCH] Added ElementProxy::getOrAddElement() (fixes #1311) --- CHANGELOG.md | 1 + extras/tests/ElementProxy/CMakeLists.txt | 1 + extras/tests/ElementProxy/subscript.cpp | 2 +- src/ArduinoJson/Array/ElementProxy.hpp | 4 ++++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28e8709d..ad54fe76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ HEAD * Added comparisons (`>`, `>=`, `==`, `!=`, `<`, and `<=`) between `JsonVariant`s * Added string deduplication (issue #1303) * Fixed `copyArray()` not working with `String`, `ElementProxy`, and `MemberProxy` +* Fixed error `getOrAddElement is not a member of ElementProxy` (issue #1311) v6.15.2 (2020-05-15) ------- diff --git a/extras/tests/ElementProxy/CMakeLists.txt b/extras/tests/ElementProxy/CMakeLists.txt index f86d6bb0..d0c3f453 100644 --- a/extras/tests/ElementProxy/CMakeLists.txt +++ b/extras/tests/ElementProxy/CMakeLists.txt @@ -9,6 +9,7 @@ add_executable(ElementProxyTests remove.cpp set.cpp size.cpp + subscript.cpp ) add_test(ElementProxy ElementProxyTests) diff --git a/extras/tests/ElementProxy/subscript.cpp b/extras/tests/ElementProxy/subscript.cpp index 70bf273a..04034f53 100644 --- a/extras/tests/ElementProxy/subscript.cpp +++ b/extras/tests/ElementProxy/subscript.cpp @@ -7,7 +7,7 @@ using namespace ARDUINOJSON_NAMESPACE; -TEST_CASE("MemberProxy::operator[]") { +TEST_CASE("ElementProxy::operator[]") { DynamicJsonDocument doc(4096); ElementProxy ep = doc[1]; diff --git a/src/ArduinoJson/Array/ElementProxy.hpp b/src/ArduinoJson/Array/ElementProxy.hpp index 0d0c821e..e98e7c79 100644 --- a/src/ArduinoJson/Array/ElementProxy.hpp +++ b/src/ArduinoJson/Array/ElementProxy.hpp @@ -135,6 +135,10 @@ class ElementProxy : public VariantOperators >, return getOrAddUpstreamElement().getElement(index); } + VariantRef getOrAddElement(size_t index) const { + return getOrAddUpstreamElement().getOrAddElement(index); + } + FORCE_INLINE void remove(size_t index) const { getUpstreamElement().remove(index); }