diff --git a/extras/conf_test/avr.cpp b/extras/conf_test/avr.cpp index 4ffff564..71c08cce 100644 --- a/extras/conf_test/avr.cpp +++ b/extras/conf_test/avr.cpp @@ -10,8 +10,8 @@ static_assert(ARDUINOJSON_LITTLE_ENDIAN == 1, "ARDUINOJSON_LITTLE_ENDIAN"); static_assert(ARDUINOJSON_USE_DOUBLE == 1, "ARDUINOJSON_USE_DOUBLE"); -static_assert(sizeof(ArduinoJson::detail::VariantSlot) == 6, - "sizeof(VariantSlot)"); +static_assert(sizeof(ArduinoJson::detail::VariantData) == 6, + "sizeof(VariantData)"); void setup() {} void loop() {} diff --git a/extras/conf_test/esp8266.cpp b/extras/conf_test/esp8266.cpp index b2e6d06f..16139090 100644 --- a/extras/conf_test/esp8266.cpp +++ b/extras/conf_test/esp8266.cpp @@ -8,8 +8,8 @@ static_assert(ARDUINOJSON_LITTLE_ENDIAN == 1, "ARDUINOJSON_LITTLE_ENDIAN"); static_assert(ARDUINOJSON_USE_DOUBLE == 1, "ARDUINOJSON_USE_DOUBLE"); -static_assert(sizeof(ArduinoJson::detail::VariantSlot) == 16, - "sizeof(VariantSlot)"); +static_assert(sizeof(ArduinoJson::detail::VariantData) == 16, + "sizeof(VariantData)"); void setup() {} void loop() {} diff --git a/extras/conf_test/linux32.cpp b/extras/conf_test/linux32.cpp index ad0c97d5..1170a40e 100644 --- a/extras/conf_test/linux32.cpp +++ b/extras/conf_test/linux32.cpp @@ -8,7 +8,7 @@ static_assert(ARDUINOJSON_LITTLE_ENDIAN == 1, "ARDUINOJSON_LITTLE_ENDIAN"); static_assert(ARDUINOJSON_USE_DOUBLE == 1, "ARDUINOJSON_USE_DOUBLE"); -static_assert(sizeof(ArduinoJson::detail::VariantSlot) == 12, - "sizeof(VariantSlot)"); +static_assert(sizeof(ArduinoJson::detail::VariantData) == 12, + "sizeof(VariantData)"); int main() {} diff --git a/extras/conf_test/linux64.cpp b/extras/conf_test/linux64.cpp index e03e6cca..0b6fd16b 100644 --- a/extras/conf_test/linux64.cpp +++ b/extras/conf_test/linux64.cpp @@ -8,7 +8,7 @@ static_assert(ARDUINOJSON_LITTLE_ENDIAN == 1, "ARDUINOJSON_LITTLE_ENDIAN"); static_assert(ARDUINOJSON_USE_DOUBLE == 1, "ARDUINOJSON_USE_DOUBLE"); -static_assert(sizeof(ArduinoJson::detail::VariantSlot) == 16, - "sizeof(VariantSlot)"); +static_assert(sizeof(ArduinoJson::detail::VariantData) == 16, + "sizeof(VariantData)"); int main() {} diff --git a/extras/conf_test/win32.cpp b/extras/conf_test/win32.cpp index a9874efd..00620664 100644 --- a/extras/conf_test/win32.cpp +++ b/extras/conf_test/win32.cpp @@ -8,7 +8,7 @@ static_assert(ARDUINOJSON_LITTLE_ENDIAN == 1, "ARDUINOJSON_LITTLE_ENDIAN"); static_assert(ARDUINOJSON_USE_DOUBLE == 1, "ARDUINOJSON_USE_DOUBLE"); -static_assert(sizeof(ArduinoJson::detail::VariantSlot) == 16, - "sizeof(VariantSlot)"); +static_assert(sizeof(ArduinoJson::detail::VariantData) == 16, + "sizeof(VariantData)"); int main() {} diff --git a/extras/conf_test/win64.cpp b/extras/conf_test/win64.cpp index e03e6cca..0b6fd16b 100644 --- a/extras/conf_test/win64.cpp +++ b/extras/conf_test/win64.cpp @@ -8,7 +8,7 @@ static_assert(ARDUINOJSON_LITTLE_ENDIAN == 1, "ARDUINOJSON_LITTLE_ENDIAN"); static_assert(ARDUINOJSON_USE_DOUBLE == 1, "ARDUINOJSON_USE_DOUBLE"); -static_assert(sizeof(ArduinoJson::detail::VariantSlot) == 16, - "sizeof(VariantSlot)"); +static_assert(sizeof(ArduinoJson::detail::VariantData) == 16, + "sizeof(VariantData)"); int main() {} diff --git a/extras/tests/ResourceManager/shrinkToFit.cpp b/extras/tests/ResourceManager/shrinkToFit.cpp index 812e2005..ea2d6527 100644 --- a/extras/tests/ResourceManager/shrinkToFit.cpp +++ b/extras/tests/ResourceManager/shrinkToFit.cpp @@ -29,7 +29,7 @@ TEST_CASE("ResourceManager::shrinkToFit()") { REQUIRE(spyingAllocator.log() == AllocatorLog{ Allocate(sizeofPool()), - Reallocate(sizeofPool(), sizeof(VariantSlot)), + Reallocate(sizeofPool(), sizeof(VariantData)), }); } @@ -50,7 +50,7 @@ TEST_CASE("ResourceManager::shrinkToFit()") { REQUIRE(spyingAllocator.log() == AllocatorLog{ - Reallocate(sizeofPool(), sizeof(VariantSlot)), + Reallocate(sizeofPool(), sizeof(VariantData)), Reallocate(sizeofPoolList(ARDUINOJSON_INITIAL_POOL_COUNT * 2), sizeofPoolList(ARDUINOJSON_INITIAL_POOL_COUNT + 1)), }); diff --git a/src/ArduinoJson/Array/ArrayImpl.hpp b/src/ArduinoJson/Array/ArrayImpl.hpp index 2000567e..8e6af227 100644 --- a/src/ArduinoJson/Array/ArrayImpl.hpp +++ b/src/ArduinoJson/Array/ArrayImpl.hpp @@ -6,7 +6,7 @@ #include #include -#include +#include ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE @@ -73,7 +73,7 @@ inline bool ArrayData::addValue(T&& value, ResourceManager* resources) { // Returns the size (in bytes) of an array with n elements. constexpr size_t sizeofArray(size_t n) { - return n * sizeof(VariantSlot); + return n * sizeof(VariantData); } ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/src/ArduinoJson/Collection/CollectionData.hpp b/src/ArduinoJson/Collection/CollectionData.hpp index aa0825bc..616ed18b 100644 --- a/src/ArduinoJson/Collection/CollectionData.hpp +++ b/src/ArduinoJson/Collection/CollectionData.hpp @@ -4,6 +4,7 @@ #pragma once +#include #include #include @@ -12,7 +13,6 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE class VariantData; -union VariantSlot; class CollectionIterator { friend class CollectionData; diff --git a/src/ArduinoJson/Memory/MemoryPool.hpp b/src/ArduinoJson/Memory/MemoryPool.hpp index 23a95d85..35e623c8 100644 --- a/src/ArduinoJson/Memory/MemoryPool.hpp +++ b/src/ArduinoJson/Memory/MemoryPool.hpp @@ -10,7 +10,7 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE -union VariantSlot; +class VariantData; using SlotId = uint_t; using SlotCount = SlotId; const SlotId NULL_SLOT = SlotId(-1); @@ -18,7 +18,7 @@ const SlotId NULL_SLOT = SlotId(-1); class SlotWithId { public: SlotWithId() : slot_(nullptr), id_(NULL_SLOT) {} - SlotWithId(VariantSlot* slot, SlotId id) : slot_(slot), id_(id) { + SlotWithId(VariantData* slot, SlotId id) : slot_(slot), id_(id) { ARDUINOJSON_ASSERT((slot == nullptr) == (id == NULL_SLOT)); } @@ -30,17 +30,17 @@ class SlotWithId { return id_; } - VariantSlot* slot() const { + VariantData* slot() const { return slot_; } - VariantSlot* operator->() { + VariantData* operator->() { ARDUINOJSON_ASSERT(slot_ != nullptr); return slot_; } private: - VariantSlot* slot_; + VariantData* slot_; SlotId id_; }; @@ -50,7 +50,7 @@ class MemoryPool { void destroy(Allocator* allocator); SlotWithId allocSlot(); - VariantSlot* getSlot(SlotId id) const; + VariantData* getSlot(SlotId id) const; void clear(); void shrinkToFit(Allocator*); SlotCount usage() const; @@ -61,7 +61,7 @@ class MemoryPool { private: SlotCount capacity_; SlotCount usage_; - VariantSlot* slots_; + VariantData* slots_; }; ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/src/ArduinoJson/Memory/MemoryPoolImpl.hpp b/src/ArduinoJson/Memory/MemoryPoolImpl.hpp index a8dbdf4c..d9ba7a58 100644 --- a/src/ArduinoJson/Memory/MemoryPoolImpl.hpp +++ b/src/ArduinoJson/Memory/MemoryPoolImpl.hpp @@ -5,14 +5,14 @@ #pragma once #include -#include +#include ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE inline void MemoryPool::create(SlotCount cap, Allocator* allocator) { ARDUINOJSON_ASSERT(cap > 0); slots_ = - reinterpret_cast(allocator->allocate(slotsToBytes(cap))); + reinterpret_cast(allocator->allocate(slotsToBytes(cap))); capacity_ = slots_ ? cap : 0; usage_ = 0; } @@ -26,7 +26,7 @@ inline void MemoryPool::destroy(Allocator* allocator) { } inline void MemoryPool::shrinkToFit(Allocator* allocator) { - auto newSlots = reinterpret_cast( + auto newSlots = reinterpret_cast( allocator->reallocate(slots_, slotsToBytes(usage_))); if (newSlots) { slots_ = newSlots; @@ -44,7 +44,7 @@ inline SlotWithId MemoryPool::allocSlot() { return {slot, SlotId(index)}; } -inline VariantSlot* MemoryPool::getSlot(SlotId id) const { +inline VariantData* MemoryPool::getSlot(SlotId id) const { ARDUINOJSON_ASSERT(id < usage_); return &slots_[id]; } @@ -58,11 +58,11 @@ inline void MemoryPool::clear() { } inline SlotCount MemoryPool::bytesToSlots(size_t n) { - return static_cast(n / sizeof(VariantSlot)); + return static_cast(n / sizeof(VariantData)); } inline size_t MemoryPool::slotsToBytes(SlotCount n) { - return n * sizeof(VariantSlot); + return n * sizeof(VariantData); } inline SlotWithId MemoryPoolList::allocFromFreeList() { diff --git a/src/ArduinoJson/Memory/MemoryPoolList.hpp b/src/ArduinoJson/Memory/MemoryPoolList.hpp index b2eae0da..96c1cc64 100644 --- a/src/ArduinoJson/Memory/MemoryPoolList.hpp +++ b/src/ArduinoJson/Memory/MemoryPoolList.hpp @@ -97,7 +97,7 @@ class MemoryPoolList { void freeSlot(SlotWithId slot); - VariantSlot* getSlot(SlotId id) const { + VariantData* getSlot(SlotId id) const { if (id == NULL_SLOT) return nullptr; auto poolIndex = SlotId(id / ARDUINOJSON_POOL_CAPACITY); diff --git a/src/ArduinoJson/Memory/ResourceManager.hpp b/src/ArduinoJson/Memory/ResourceManager.hpp index 28f97665..45e329cd 100644 --- a/src/ArduinoJson/Memory/ResourceManager.hpp +++ b/src/ArduinoJson/Memory/ResourceManager.hpp @@ -13,7 +13,6 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE -union VariantSlot; class MemoryPool; class VariantData; class VariantWithId; diff --git a/src/ArduinoJson/Memory/ResourceManagerImpl.hpp b/src/ArduinoJson/Memory/ResourceManagerImpl.hpp index 2e112fa7..c1c949e6 100644 --- a/src/ArduinoJson/Memory/ResourceManagerImpl.hpp +++ b/src/ArduinoJson/Memory/ResourceManagerImpl.hpp @@ -7,7 +7,6 @@ #include #include #include -#include ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE @@ -17,7 +16,7 @@ inline VariantWithId ResourceManager::allocVariant() { overflowed_ = true; return {}; } - return {new (&p->variant) VariantData, p.id()}; + return {new (p.slot()) VariantData, p.id()}; } inline void ResourceManager::freeVariant(VariantWithId variant) { diff --git a/src/ArduinoJson/Memory/StringPool.hpp b/src/ArduinoJson/Memory/StringPool.hpp index d2f754c8..91851e80 100644 --- a/src/ArduinoJson/Memory/StringPool.hpp +++ b/src/ArduinoJson/Memory/StringPool.hpp @@ -12,7 +12,6 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE -union VariantSlot; class MemoryPool; class StringPool { diff --git a/src/ArduinoJson/Object/ObjectImpl.hpp b/src/ArduinoJson/Object/ObjectImpl.hpp index 7830576e..b2280c4a 100644 --- a/src/ArduinoJson/Object/ObjectImpl.hpp +++ b/src/ArduinoJson/Object/ObjectImpl.hpp @@ -6,7 +6,7 @@ #include #include -#include +#include ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE @@ -70,7 +70,7 @@ inline VariantData* ObjectData::addMember(TAdaptedString key, // Returns the size (in bytes) of an object with n members. constexpr size_t sizeofObject(size_t n) { - return 2 * n * sizeof(VariantSlot); + return 2 * n * sizeof(VariantData); } ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/src/ArduinoJson/Variant/VariantData.hpp b/src/ArduinoJson/Variant/VariantData.hpp index 87e37ecc..4a676cbe 100644 --- a/src/ArduinoJson/Variant/VariantData.hpp +++ b/src/ArduinoJson/Variant/VariantData.hpp @@ -538,7 +538,7 @@ class VariantWithId : public SlotWithId { public: VariantWithId() {} VariantWithId(VariantData* data, SlotId id) - : SlotWithId(reinterpret_cast(data), id) {} + : SlotWithId(reinterpret_cast(data), id) {} VariantData* data() { return reinterpret_cast(slot()); diff --git a/src/ArduinoJson/Variant/VariantSlot.hpp b/src/ArduinoJson/Variant/VariantSlot.hpp deleted file mode 100644 index efde6583..00000000 --- a/src/ArduinoJson/Variant/VariantSlot.hpp +++ /dev/null @@ -1,22 +0,0 @@ -// ArduinoJson - https://arduinojson.org -// Copyright © 2014-2024, Benoit BLANCHON -// MIT License - -#pragma once - -#include -#include -#include -#include - -ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE - -struct StringNode; - -union VariantSlot { - VariantSlot() {} - - VariantData variant; -}; - -ARDUINOJSON_END_PRIVATE_NAMESPACE