From 0b9a8b6d2bc7cd62593ff96928440fd48fa892b0 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Mon, 7 Jul 2025 15:53:37 +0200 Subject: [PATCH] Replace `getData()/getResourceManager()` with `getImpl()` --- src/ArduinoJson/Array/ElementProxy.hpp | 22 ++--- src/ArduinoJson/Array/JsonArray.hpp | 16 +--- src/ArduinoJson/Array/JsonArrayConst.hpp | 8 +- .../Deserialization/deserialize.hpp | 8 +- src/ArduinoJson/Document/JsonDocument.hpp | 52 ++++------ src/ArduinoJson/MsgPack/MsgPackBinary.hpp | 9 +- src/ArduinoJson/MsgPack/MsgPackExtension.hpp | 9 +- src/ArduinoJson/Object/JsonObject.hpp | 16 +--- src/ArduinoJson/Object/JsonObjectConst.hpp | 8 +- src/ArduinoJson/Object/MemberProxy.hpp | 22 ++--- src/ArduinoJson/Serialization/measure.hpp | 7 +- src/ArduinoJson/Serialization/serialize.hpp | 7 +- src/ArduinoJson/Variant/ConverterImpl.hpp | 94 +++++++++---------- src/ArduinoJson/Variant/JsonVariant.hpp | 18 ++-- src/ArduinoJson/Variant/JsonVariantConst.hpp | 8 +- .../Variant/JsonVariantVisitor.hpp | 5 +- src/ArduinoJson/Variant/VariantAttorney.hpp | 19 +--- src/ArduinoJson/Variant/VariantCompare.hpp | 2 +- src/ArduinoJson/Variant/VariantRefBase.hpp | 60 +++++------- .../Variant/VariantRefBaseImpl.hpp | 45 +++++---- 20 files changed, 168 insertions(+), 267 deletions(-) diff --git a/src/ArduinoJson/Array/ElementProxy.hpp b/src/ArduinoJson/Array/ElementProxy.hpp index dab97388..fba45cc5 100644 --- a/src/ArduinoJson/Array/ElementProxy.hpp +++ b/src/ArduinoJson/Array/ElementProxy.hpp @@ -50,21 +50,17 @@ class ElementProxy : public VariantRefBase>, : upstream_(src.upstream_), index_(src.index_) {} // clang-format on - ResourceManager* getResourceManager() const { - return VariantAttorney::getResourceManager(upstream_); + VariantImpl getImpl() const { + auto impl = VariantAttorney::getImpl(upstream_); + return VariantImpl(impl.getElement(index_), impl.getResourceManager()); } - FORCE_INLINE VariantData* getData() const { - return VariantAttorney::getVariantImpl(upstream_).getElement(index_); - } - - VariantData* getOrCreateData() const { - auto data = VariantAttorney::getOrCreateData(upstream_); - auto resources = VariantAttorney::getResourceManager(upstream_); - if (!data) - return nullptr; - data->getOrCreateArray(); - return VariantImpl(data, resources).getOrAddElement(index_); + VariantImpl getOrCreateImpl() const { + auto impl = VariantAttorney::getOrCreateImpl(upstream_); + auto data = impl.getData(); + if (data) + data->getOrCreateArray(); + return VariantImpl(impl.getOrAddElement(index_), impl.getResourceManager()); } TUpstream upstream_; diff --git a/src/ArduinoJson/Array/JsonArray.hpp b/src/ArduinoJson/Array/JsonArray.hpp index d3cc2a59..1509c6f4 100644 --- a/src/ArduinoJson/Array/JsonArray.hpp +++ b/src/ArduinoJson/Array/JsonArray.hpp @@ -22,10 +22,6 @@ class JsonArray : public detail::VariantOperators { // Constructs an unbound reference. JsonArray() {} - // INTERNAL USE ONLY - JsonArray(detail::VariantData* data, detail::ResourceManager* resources) - : impl_(data, resources) {} - // INTERNAL USE ONLY JsonArray(detail::VariantImpl impl) : impl_(impl) {} @@ -199,16 +195,12 @@ class JsonArray : public detail::VariantOperators { } private: - detail::ResourceManager* getResourceManager() const { - return impl_.getResourceManager(); + const detail::VariantImpl& getImpl() const { + return impl_; } - detail::VariantData* getData() const { - return impl_.getData(); - } - - detail::VariantData* getOrCreateData() const { - return impl_.getData(); + const detail::VariantImpl& getOrCreateImpl() const { + return impl_; } mutable detail::VariantImpl impl_; diff --git a/src/ArduinoJson/Array/JsonArrayConst.hpp b/src/ArduinoJson/Array/JsonArrayConst.hpp index 92463509..c6b71818 100644 --- a/src/ArduinoJson/Array/JsonArrayConst.hpp +++ b/src/ArduinoJson/Array/JsonArrayConst.hpp @@ -36,10 +36,6 @@ class JsonArrayConst : public detail::VariantOperators { // Creates an unbound reference. JsonArrayConst() {} - // INTERNAL USE ONLY - JsonArrayConst(detail::VariantData* data, detail::ResourceManager* resources) - : impl_(data, resources) {} - // INTERNAL USE ONLY JsonArrayConst(const detail::VariantImpl& impl) : impl_(impl) {} @@ -98,8 +94,8 @@ class JsonArrayConst : public detail::VariantOperators { } private: - const detail::VariantData* getData() const { - return impl_.getData(); + const detail::VariantImpl& getImpl() const { + return impl_; } detail::VariantImpl impl_; diff --git a/src/ArduinoJson/Deserialization/deserialize.hpp b/src/ArduinoJson/Deserialization/deserialize.hpp index 5da5df87..640d4d0d 100644 --- a/src/ArduinoJson/Deserialization/deserialize.hpp +++ b/src/ArduinoJson/Deserialization/deserialize.hpp @@ -44,13 +44,13 @@ template