Replace slotRelease() with CollectionData::releaseSlot()

This commit is contained in:
Benoit Blanchon
2023-07-03 10:26:20 +02:00
parent 78a74c4017
commit f86b22cf4f
6 changed files with 11 additions and 24 deletions

View File

@ -5,7 +5,6 @@
#pragma once #pragma once
#include <ArduinoJson/Variant/JsonVariant.hpp> #include <ArduinoJson/Variant/JsonVariant.hpp>
#include <ArduinoJson/Variant/SlotFunctions.hpp>
ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE

View File

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

View File

@ -41,7 +41,7 @@ inline void CollectionData::addSlot(VariantSlot* slot) {
inline void CollectionData::clear(ResourceManager* resources) { inline void CollectionData::clear(ResourceManager* resources) {
for (auto slot = head_; slot; slot = slot->next()) for (auto slot = head_; slot; slot = slot->next())
slotRelease(slot, resources); releaseSlot(slot, resources);
head_ = 0; head_ = 0;
tail_ = 0; tail_ = 0;
} }
@ -69,7 +69,7 @@ inline void CollectionData::remove(iterator it, ResourceManager* resources) {
head_ = next; head_ = next;
if (!next) if (!next)
tail_ = prev; tail_ = prev;
slotRelease(curr, resources); releaseSlot(curr, resources);
} }
inline size_t CollectionData::memoryUsage() const { inline size_t CollectionData::memoryUsage() const {
@ -115,4 +115,12 @@ inline void CollectionData::movePointers(ptrdiff_t variantDistance) {
slot->data()->movePointers(variantDistance); slot->data()->movePointers(variantDistance);
} }
inline void CollectionData::releaseSlot(VariantSlot* slot,
ResourceManager* resources) {
ARDUINOJSON_ASSERT(slot != nullptr);
if (slot->ownsKey())
resources->dereferenceString(slot->key());
slot->data()->setNull(resources);
}
ARDUINOJSON_END_PRIVATE_NAMESPACE ARDUINOJSON_END_PRIVATE_NAMESPACE

View File

@ -5,7 +5,6 @@
#pragma once #pragma once
#include <ArduinoJson/Object/JsonPair.hpp> #include <ArduinoJson/Object/JsonPair.hpp>
#include <ArduinoJson/Variant/SlotFunctions.hpp>
ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE

View File

@ -1,19 +0,0 @@
// ArduinoJson - https://arduinojson.org
// Copyright © 2014-2023, Benoit BLANCHON
// MIT License
#pragma once
#include <ArduinoJson/Polyfills/assert.hpp>
#include <ArduinoJson/Variant/VariantData.hpp>
ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
inline void slotRelease(VariantSlot* slot, ResourceManager* resources) {
ARDUINOJSON_ASSERT(slot != nullptr);
if (slot->ownsKey())
resources->dereferenceString(slot->key());
slot->data()->setNull(resources);
}
ARDUINOJSON_END_PRIVATE_NAMESPACE

View File

@ -16,7 +16,6 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
template <typename T> template <typename T>
T parseNumber(const char* s); T parseNumber(const char* s);
void slotRelease(VariantSlot* slot, ResourceManager* resources);
class VariantData { class VariantData {
VariantContent content_; // must be first to allow cast from array to variant VariantContent content_; // must be first to allow cast from array to variant