diff --git a/extras/conf_test/avr.cpp b/extras/conf_test/avr.cpp index 769317a8..ae1ec6f1 100644 --- a/extras/conf_test/avr.cpp +++ b/extras/conf_test/avr.cpp @@ -12,7 +12,7 @@ static_assert(ARDUINOJSON_LITTLE_ENDIAN == 1, "ARDUINOJSON_LITTLE_ENDIAN"); static_assert(ARDUINOJSON_USE_DOUBLE == 0, "ARDUINOJSON_USE_DOUBLE"); -static_assert(ArduinoJson::detail::ResourceManager::slotSize == 6, "slot size"); +static_assert(sizeof(ArduinoJson::detail::VariantData) == 6, "slot size"); void setup() {} void loop() {} diff --git a/extras/conf_test/esp8266.cpp b/extras/conf_test/esp8266.cpp index b37bfd67..116ac7ac 100644 --- a/extras/conf_test/esp8266.cpp +++ b/extras/conf_test/esp8266.cpp @@ -10,7 +10,7 @@ static_assert(ARDUINOJSON_LITTLE_ENDIAN == 1, "ARDUINOJSON_LITTLE_ENDIAN"); static_assert(ARDUINOJSON_USE_DOUBLE == 1, "ARDUINOJSON_USE_DOUBLE"); -static_assert(ArduinoJson::detail::ResourceManager::slotSize == 8, "slot size"); +static_assert(sizeof(VariantData) == 8, "slot size"); void setup() {} void loop() {} diff --git a/extras/conf_test/x64.cpp b/extras/conf_test/x64.cpp index df6b044b..c221cd1d 100644 --- a/extras/conf_test/x64.cpp +++ b/extras/conf_test/x64.cpp @@ -10,7 +10,6 @@ static_assert(ARDUINOJSON_LITTLE_ENDIAN == 1, "ARDUINOJSON_LITTLE_ENDIAN"); static_assert(ARDUINOJSON_USE_DOUBLE == 1, "ARDUINOJSON_USE_DOUBLE"); -static_assert(ArduinoJson::detail::ResourceManager::slotSize == 16, - "slot size"); +static_assert(sizeof(ArduinoJson::detail::VariantData) == 16, "slot size"); int main() {} diff --git a/extras/conf_test/x86.cpp b/extras/conf_test/x86.cpp index 9dff8f17..8d7f4773 100644 --- a/extras/conf_test/x86.cpp +++ b/extras/conf_test/x86.cpp @@ -10,6 +10,6 @@ static_assert(ARDUINOJSON_LITTLE_ENDIAN == 1, "ARDUINOJSON_LITTLE_ENDIAN"); static_assert(ARDUINOJSON_USE_DOUBLE == 1, "ARDUINOJSON_USE_DOUBLE"); -static_assert(ArduinoJson::detail::ResourceManager::slotSize == 8, "slot size"); +static_assert(sizeof(ArduinoJson::detail::VariantData) == 8, "slot size"); int main() {} diff --git a/src/ArduinoJson/Array/ArrayImpl.hpp b/src/ArduinoJson/Array/ArrayImpl.hpp index b4fb1264..8db18959 100644 --- a/src/ArduinoJson/Array/ArrayImpl.hpp +++ b/src/ArduinoJson/Array/ArrayImpl.hpp @@ -73,7 +73,7 @@ inline bool ArrayData::addValue(const T& value, ResourceManager* resources) { // Returns the size (in bytes) of an array with n elements. constexpr size_t sizeofArray(size_t n) { - return n * ResourceManager::slotSize; + return n * sizeof(VariantData); } ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/src/ArduinoJson/Memory/ResourceManager.hpp b/src/ArduinoJson/Memory/ResourceManager.hpp index d566e3fa..4ea6b7b3 100644 --- a/src/ArduinoJson/Memory/ResourceManager.hpp +++ b/src/ArduinoJson/Memory/ResourceManager.hpp @@ -18,11 +18,7 @@ class VariantData; class VariantWithId; class ResourceManager { - using SlotData = VariantData; // TODO: remove SlotData? - public: - constexpr static size_t slotSize = sizeof(SlotData); - ResourceManager(Allocator* allocator = DefaultAllocator::instance()) : allocator_(allocator), overflowed_(false) {} @@ -154,7 +150,7 @@ class ResourceManager { Allocator* allocator_; bool overflowed_; StringPool stringPool_; - MemoryPoolList variantPools_; + MemoryPoolList variantPools_; MemoryPoolList staticStringsPools_; #if ARDUINOJSON_USE_8_BYTE_POOL MemoryPoolList eightBytePools_; diff --git a/src/ArduinoJson/Memory/ResourceManagerImpl.hpp b/src/ArduinoJson/Memory/ResourceManagerImpl.hpp index d046770b..c5cf7df2 100644 --- a/src/ArduinoJson/Memory/ResourceManagerImpl.hpp +++ b/src/ArduinoJson/Memory/ResourceManagerImpl.hpp @@ -21,9 +21,9 @@ inline Slot ResourceManager::allocVariant() { return slot; } -inline void ResourceManager::freeVariant(Slot variant) { - variant->clear(this); - variantPools_.freeSlot({alias_cast(variant.ptr()), variant.id()}); +inline void ResourceManager::freeVariant(Slot slot) { + slot->clear(this); + variantPools_.freeSlot(slot); } inline VariantData* ResourceManager::getVariant(SlotId id) const { diff --git a/src/ArduinoJson/Object/ObjectImpl.hpp b/src/ArduinoJson/Object/ObjectImpl.hpp index 34da0dab..ab9727c3 100644 --- a/src/ArduinoJson/Object/ObjectImpl.hpp +++ b/src/ArduinoJson/Object/ObjectImpl.hpp @@ -86,7 +86,7 @@ inline VariantData* ObjectData::addPair(VariantData** value, // Returns the size (in bytes) of an object with n members. constexpr size_t sizeofObject(size_t n) { - return 2 * n * ResourceManager::slotSize; + return 2 * n * sizeof(VariantData); } ARDUINOJSON_END_PRIVATE_NAMESPACE