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
#include <ArduinoJson/Variant/JsonVariant.hpp>
#include <ArduinoJson/Variant/SlotFunctions.hpp>
ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE

View File

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

View File

@ -41,7 +41,7 @@ inline void CollectionData::addSlot(VariantSlot* slot) {
inline void CollectionData::clear(ResourceManager* resources) {
for (auto slot = head_; slot; slot = slot->next())
slotRelease(slot, resources);
releaseSlot(slot, resources);
head_ = 0;
tail_ = 0;
}
@ -69,7 +69,7 @@ inline void CollectionData::remove(iterator it, ResourceManager* resources) {
head_ = next;
if (!next)
tail_ = prev;
slotRelease(curr, resources);
releaseSlot(curr, resources);
}
inline size_t CollectionData::memoryUsage() const {
@ -115,4 +115,12 @@ inline void CollectionData::movePointers(ptrdiff_t 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

View File

@ -5,7 +5,6 @@
#pragma once
#include <ArduinoJson/Object/JsonPair.hpp>
#include <ArduinoJson/Variant/SlotFunctions.hpp>
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>
T parseNumber(const char* s);
void slotRelease(VariantSlot* slot, ResourceManager* resources);
class VariantData {
VariantContent content_; // must be first to allow cast from array to variant