diff --git a/extras/tests/Deprecated/CMakeLists.txt b/extras/tests/Deprecated/CMakeLists.txt index dd7a7b84..93785189 100644 --- a/extras/tests/Deprecated/CMakeLists.txt +++ b/extras/tests/Deprecated/CMakeLists.txt @@ -18,6 +18,7 @@ add_executable(DeprecatedTests BasicJsonDocument.cpp DynamicJsonDocument.cpp memoryUsage.cpp + shallowCopy.cpp StaticJsonDocument.cpp ) diff --git a/extras/tests/Deprecated/shallowCopy.cpp b/extras/tests/Deprecated/shallowCopy.cpp new file mode 100644 index 00000000..0c56b507 --- /dev/null +++ b/extras/tests/Deprecated/shallowCopy.cpp @@ -0,0 +1,14 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#include +#include + +TEST_CASE("shallowCopy()") { + JsonDocument doc1, doc2; + doc1["b"] = "c"; + doc2["a"].shallowCopy(doc1); + + REQUIRE(doc2.as() == "{\"a\":{\"b\":\"c\"}}"); +} diff --git a/src/ArduinoJson/Variant/VariantRefBase.hpp b/src/ArduinoJson/Variant/VariantRefBase.hpp index 588b628f..4a22c626 100644 --- a/src/ArduinoJson/Variant/VariantRefBase.hpp +++ b/src/ArduinoJson/Variant/VariantRefBase.hpp @@ -227,6 +227,12 @@ class VariantRefBase : public VariantTag { return 0; } + // DEPRECATED: performs a deep copy + ARDUINOJSON_DEPRECATED("performs a deep copy") + void shallowCopy(JsonVariantConst src) const { + set(src); + } + private: TDerived& derived() { return static_cast(*this);