Bläddra i källkod

Move `CollectionData::releaseSlot()` to `ResourceManager::freeSlot()`

Benoit Blanchon 1 år sedan
förälder
incheckning
60f9f7eff6

+ 1 - 3
extras/tests/ResourceManager/allocVariant.cpp

@@ -2,9 +2,7 @@
 // Copyright © 2014-2024, Benoit BLANCHON
 // MIT License
 
-#include <ArduinoJson/Memory/Alignment.hpp>
-#include <ArduinoJson/Memory/ResourceManager.hpp>
-#include <ArduinoJson/Memory/VariantPoolImpl.hpp>
+#include <ArduinoJson.hpp>
 #include <catch.hpp>
 
 #include "Allocators.hpp"

+ 1 - 0
src/ArduinoJson.hpp

@@ -36,6 +36,7 @@
 #include "ArduinoJson/Array/ElementProxy.hpp"
 #include "ArduinoJson/Array/Utilities.hpp"
 #include "ArduinoJson/Collection/CollectionImpl.hpp"
+#include "ArduinoJson/Memory/ResourceManagerImpl.hpp"
 #include "ArduinoJson/Memory/VariantPoolImpl.hpp"
 #include "ArduinoJson/Object/MemberProxy.hpp"
 #include "ArduinoJson/Object/ObjectImpl.hpp"

+ 0 - 1
src/ArduinoJson/Collection/CollectionData.hpp

@@ -116,7 +116,6 @@ class CollectionData {
 
  private:
   SlotWithId getPreviousSlot(VariantSlot*, const ResourceManager*) const;
-  void releaseSlot(SlotWithId, ResourceManager*);
 };
 
 inline const VariantData* collectionToVariant(

+ 2 - 10
src/ArduinoJson/Collection/CollectionImpl.hpp

@@ -69,7 +69,7 @@ inline void CollectionData::clear(ResourceManager* resources) {
     auto currId = next;
     auto slot = resources->getSlot(next);
     next = slot->next();
-    releaseSlot(SlotWithId(slot, currId), resources);
+    resources->freeSlot(SlotWithId(slot, currId));
   }
 
   head_ = NULL_SLOT;
@@ -102,7 +102,7 @@ inline void CollectionData::remove(iterator it, ResourceManager* resources) {
     head_ = next;
   if (next == NULL_SLOT)
     tail_ = prev.id();
-  releaseSlot({it.slot_, it.currentId_}, resources);
+  resources->freeSlot({it.slot_, it.currentId_});
 }
 
 inline size_t CollectionData::nesting(const ResourceManager* resources) const {
@@ -122,12 +122,4 @@ inline size_t CollectionData::size(const ResourceManager* resources) const {
   return count;
 }
 
-inline void CollectionData::releaseSlot(SlotWithId slot,
-                                        ResourceManager* resources) {
-  if (slot->ownsKey())
-    resources->dereferenceString(slot->key());
-  slot->data()->setNull(resources);
-  resources->freeSlot(slot);
-}
-
 ARDUINOJSON_END_PRIVATE_NAMESPACE

+ 1 - 3
src/ArduinoJson/Memory/ResourceManager.hpp

@@ -56,9 +56,7 @@ class ResourceManager {
     return p;
   }
 
-  void freeSlot(SlotWithId id) {
-    variantPools_.freeSlot(id);
-  }
+  void freeSlot(SlotWithId slot);
 
   VariantSlot* getSlot(SlotId id) const {
     return variantPools_.getSlot(id);

+ 20 - 0
src/ArduinoJson/Memory/ResourceManagerImpl.hpp

@@ -0,0 +1,20 @@
+// ArduinoJson - https://arduinojson.org
+// Copyright © 2014-2024, Benoit BLANCHON
+// MIT License
+
+#pragma once
+
+#include <ArduinoJson/Collection/CollectionData.hpp>
+#include <ArduinoJson/Memory/ResourceManager.hpp>
+#include <ArduinoJson/Variant/VariantData.hpp>
+
+ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
+
+inline void ResourceManager::freeSlot(SlotWithId slot) {
+  if (slot->ownsKey())
+    dereferenceString(slot->key());
+  slot->data()->setNull(this);
+  variantPools_.freeSlot(slot);
+}
+
+ARDUINOJSON_END_PRIVATE_NAMESPACE