From af8bdfbc8fcd8106db385f7b7a04fc221e1a5eb6 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Mon, 26 Jun 2023 11:58:28 +0200 Subject: [PATCH] Convert "collection function" to static member functions --- src/ArduinoJson/Array/JsonArray.hpp | 5 ++-- src/ArduinoJson/Array/JsonArrayConst.hpp | 1 - src/ArduinoJson/Collection/CollectionData.hpp | 13 ++++++++++ .../Collection/CollectionFunctions.hpp | 24 ------------------- src/ArduinoJson/Object/JsonObject.hpp | 4 ++-- 5 files changed, 17 insertions(+), 30 deletions(-) delete mode 100644 src/ArduinoJson/Collection/CollectionFunctions.hpp diff --git a/src/ArduinoJson/Array/JsonArray.hpp b/src/ArduinoJson/Array/JsonArray.hpp index 6e7fe461..859be620 100644 --- a/src/ArduinoJson/Array/JsonArray.hpp +++ b/src/ArduinoJson/Array/JsonArray.hpp @@ -6,7 +6,6 @@ #include #include -#include ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE @@ -93,7 +92,7 @@ class JsonArray : public detail::VariantOperators { // ⚠️ Doesn't release the memory associated with the removed element. // https://arduinojson.org/v6/api/jsonarray/remove/ FORCE_INLINE void remove(iterator it) const { - collectionRemove(data_, it.slot_, resources_); + detail::ArrayData::removeSlot(data_, it.slot_, resources_); } // Removes the element at the specified index. @@ -107,7 +106,7 @@ class JsonArray : public detail::VariantOperators { // ⚠️ Doesn't release the memory associated with the removed elements. // https://arduinojson.org/v6/api/jsonarray/clear/ void clear() const { - collectionClear(data_, resources_); + detail::ArrayData::clear(data_, resources_); } // Gets or sets the element at the specified index. diff --git a/src/ArduinoJson/Array/JsonArrayConst.hpp b/src/ArduinoJson/Array/JsonArrayConst.hpp index 8d820b26..03874a23 100644 --- a/src/ArduinoJson/Array/JsonArrayConst.hpp +++ b/src/ArduinoJson/Array/JsonArrayConst.hpp @@ -5,7 +5,6 @@ #pragma once #include -#include #include #include diff --git a/src/ArduinoJson/Collection/CollectionData.hpp b/src/ArduinoJson/Collection/CollectionData.hpp index 12d91ef9..f87ec5e4 100644 --- a/src/ArduinoJson/Collection/CollectionData.hpp +++ b/src/ArduinoJson/Collection/CollectionData.hpp @@ -31,8 +31,21 @@ class CollectionData { void clear(ResourceManager* resources); + static void clear(CollectionData* collection, ResourceManager* resources) { + if (!collection) + return; + collection->clear(resources); + } + void removeSlot(VariantSlot* slot, ResourceManager* resources); + static void removeSlot(CollectionData* collection, VariantSlot* slot, + ResourceManager* resources) { + if (!collection) + return; + collection->removeSlot(slot, resources); + } + VariantSlot* head() const { return head_; } diff --git a/src/ArduinoJson/Collection/CollectionFunctions.hpp b/src/ArduinoJson/Collection/CollectionFunctions.hpp deleted file mode 100644 index a8c356d3..00000000 --- a/src/ArduinoJson/Collection/CollectionFunctions.hpp +++ /dev/null @@ -1,24 +0,0 @@ -// ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON -// MIT License - -#pragma once - -#include - -ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE - -inline void collectionClear(CollectionData* c, ResourceManager* resources) { - if (!c) - return; - c->clear(resources); -} - -inline void collectionRemove(CollectionData* data, VariantSlot* slot, - ResourceManager* resources) { - if (!data) - return; - data->removeSlot(slot, resources); -} - -ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/src/ArduinoJson/Object/JsonObject.hpp b/src/ArduinoJson/Object/JsonObject.hpp index 87b31cb6..d8629692 100644 --- a/src/ArduinoJson/Object/JsonObject.hpp +++ b/src/ArduinoJson/Object/JsonObject.hpp @@ -89,7 +89,7 @@ class JsonObject : public detail::VariantOperators { // ⚠️ Doesn't release the memory associated with the removed members. // https://arduinojson.org/v6/api/jsonobject/clear/ void clear() const { - collectionClear(data_, resources_); + detail::ObjectData::clear(data_, resources_); } // Copies an object. @@ -127,7 +127,7 @@ class JsonObject : public detail::VariantOperators { // ⚠️ Doesn't release the memory associated with the removed member. // https://arduinojson.org/v6/api/jsonobject/remove/ FORCE_INLINE void remove(iterator it) const { - collectionRemove(data_, it.slot_, resources_); + detail::ObjectData::removeSlot(data_, it.slot_, resources_); } // Removes the member with the specified key.