From 0cd588c249a5560bc78dce796c0d1b73dcd2e0b3 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Mon, 14 Mar 2022 19:44:57 +0100 Subject: [PATCH] MemberProxy.link() --- extras/tests/JsonDocument/MemberProxy.cpp | 8 ++++++++ src/ArduinoJson/Object/MemberProxy.hpp | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/extras/tests/JsonDocument/MemberProxy.cpp b/extras/tests/JsonDocument/MemberProxy.cpp index 514fd000..47434950 100644 --- a/extras/tests/JsonDocument/MemberProxy.cpp +++ b/extras/tests/JsonDocument/MemberProxy.cpp @@ -277,3 +277,11 @@ TEST_CASE("MemberProxy::createNestedObject(key)") { CHECK(doc["status"]["weather"]["temp"] == 42); } + +TEST_CASE("MemberProxy::link()") { + StaticJsonDocument<1024> doc1, doc2; + doc1["obj"].link(doc2); + doc2["hello"] = "world"; + + CHECK(doc1.as() == "{\"obj\":{\"hello\":\"world\"}}"); +} diff --git a/src/ArduinoJson/Object/MemberProxy.hpp b/src/ArduinoJson/Object/MemberProxy.hpp index e8fff4de..86380d8c 100644 --- a/src/ArduinoJson/Object/MemberProxy.hpp +++ b/src/ArduinoJson/Object/MemberProxy.hpp @@ -113,6 +113,10 @@ class MemberProxy : public VariantOperators >, getUpstreamMember().remove(key); } + FORCE_INLINE void link(VariantConstRef value) { + getOrAddUpstreamMember().link(value); + } + template FORCE_INLINE typename VariantTo::type to() { return getOrAddUpstreamMember().template to();