diff --git a/src/ArduinoJson/Variant/VariantData.hpp b/src/ArduinoJson/Variant/VariantData.hpp index 7a3a2c00..9508fa77 100644 --- a/src/ArduinoJson/Variant/VariantData.hpp +++ b/src/ArduinoJson/Variant/VariantData.hpp @@ -15,6 +15,8 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE VariantData* collectionAddElement(CollectionData* array, MemoryPool* pool); +void collectionRemoveElement(CollectionData* data, size_t index, + MemoryPool* pool); template T parseNumber(const char* s); void slotRelease(VariantSlot* slot, MemoryPool* pool); @@ -275,6 +277,10 @@ class VariantData { flags_ = uint8_t((flags_ & OWNED_KEY_BIT) | (src.flags_ & ~OWNED_KEY_BIT)); } + void removeElement(size_t index, MemoryPool* pool) { + collectionRemoveElement(asArray(), index, pool); + } + template void removeMember(TAdaptedString key, MemoryPool* pool) { collectionRemoveMember(asObject(), key, pool); diff --git a/src/ArduinoJson/Variant/VariantFunctions.hpp b/src/ArduinoJson/Variant/VariantFunctions.hpp index 053d2c8b..5d5faa25 100644 --- a/src/ArduinoJson/Variant/VariantFunctions.hpp +++ b/src/ArduinoJson/Variant/VariantFunctions.hpp @@ -13,8 +13,6 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE bool collectionCopy(CollectionData* dst, const CollectionData* src, MemoryPool* pool); -void collectionRemoveElement(CollectionData* data, size_t index, - MemoryPool* pool); template inline typename TVisitor::result_type variantAccept(const VariantData* var, @@ -157,7 +155,7 @@ inline void variantRemoveElement(VariantData* var, size_t index, MemoryPool* pool) { if (!var) return; - collectionRemoveElement(var->asArray(), index, pool); + var->removeElement(index, pool); } template