From 750cd0be9228905537bf5ea191e51476d3865758 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Tue, 5 Jul 2022 09:57:06 +0200 Subject: [PATCH] Add `collectionToVariant()` --- src/ArduinoJson/Array/ArrayRef.hpp | 9 ++------- src/ArduinoJson/Collection/CollectionData.hpp | 11 +++++++++++ src/ArduinoJson/Object/ObjectRef.hpp | 9 ++------- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/ArduinoJson/Array/ArrayRef.hpp b/src/ArduinoJson/Array/ArrayRef.hpp index f4d1318b..36d58bbe 100644 --- a/src/ArduinoJson/Array/ArrayRef.hpp +++ b/src/ArduinoJson/Array/ArrayRef.hpp @@ -23,7 +23,7 @@ template class ArrayRefBase { public: operator VariantConstRef() const { - return VariantConstRef(getVariantData()); + return VariantConstRef(collectionToVariant(_data)); } FORCE_INLINE bool isNull() const { @@ -39,7 +39,7 @@ class ArrayRefBase { } FORCE_INLINE size_t nesting() const { - return variantNesting(getVariantData()); + return variantNesting(collectionToVariant(_data)); } FORCE_INLINE size_t size() const { @@ -47,11 +47,6 @@ class ArrayRefBase { } protected: - const VariantData* getVariantData() const { - const void* data = _data; // prevent warning cast-align - return reinterpret_cast(data); - } - ArrayRefBase(TData* data) : _data(data) {} TData* _data; }; diff --git a/src/ArduinoJson/Collection/CollectionData.hpp b/src/ArduinoJson/Collection/CollectionData.hpp index 0483227e..1bb02eef 100644 --- a/src/ArduinoJson/Collection/CollectionData.hpp +++ b/src/ArduinoJson/Collection/CollectionData.hpp @@ -81,4 +81,15 @@ class CollectionData { VariantSlot *getPreviousSlot(VariantSlot *) const; }; + +inline const VariantData *collectionToVariant( + const CollectionData *collection) { + const void *data = collection; // prevent warning cast-align + return reinterpret_cast(data); +} + +inline VariantData *collectionToVariant(CollectionData *collection) { + void *data = collection; // prevent warning cast-align + return reinterpret_cast(data); +} } // namespace ARDUINOJSON_NAMESPACE diff --git a/src/ArduinoJson/Object/ObjectRef.hpp b/src/ArduinoJson/Object/ObjectRef.hpp index 7f383093..c8b25304 100644 --- a/src/ArduinoJson/Object/ObjectRef.hpp +++ b/src/ArduinoJson/Object/ObjectRef.hpp @@ -18,7 +18,7 @@ template class ObjectRefBase { public: operator VariantConstRef() const { - return VariantConstRef(getVariantData()); + return VariantConstRef(collectionToVariant(_data)); } FORCE_INLINE bool isNull() const { @@ -34,7 +34,7 @@ class ObjectRefBase { } FORCE_INLINE size_t nesting() const { - return variantNesting(getVariantData()); + return variantNesting(collectionToVariant(_data)); } FORCE_INLINE size_t size() const { @@ -42,11 +42,6 @@ class ObjectRefBase { } protected: - const VariantData* getVariantData() const { - const void* data = _data; // prevent warning cast-align - return reinterpret_cast(data); - } - ObjectRefBase(TData* data) : _data(data) {} TData* _data; };