diff --git a/src/ArduinoJson/Array/JsonArrayIterator.hpp b/src/ArduinoJson/Array/JsonArrayIterator.hpp index 5566deeb..1d0c8d35 100644 --- a/src/ArduinoJson/Array/JsonArrayIterator.hpp +++ b/src/ArduinoJson/Array/JsonArrayIterator.hpp @@ -9,21 +9,21 @@ ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE -class VariantPtr { +template +class Ptr { public: - VariantPtr(detail::ResourceManager* resources, detail::VariantData* data) - : variant_(resources, data) {} + Ptr(T value) : value_(value) {} - JsonVariant* operator->() { - return &variant_; + T* operator->() { + return &value_; } - JsonVariant& operator*() { - return variant_; + T& operator*() { + return value_; } private: - JsonVariant variant_; + T value_; }; class JsonArrayIterator { @@ -38,8 +38,8 @@ class JsonArrayIterator { JsonVariant operator*() const { return JsonVariant(resources_, slot_->data()); } - VariantPtr operator->() { - return VariantPtr(resources_, slot_->data()); + Ptr operator->() { + return operator*(); } bool operator==(const JsonArrayIterator& other) const { @@ -65,22 +65,6 @@ class JsonArrayIterator { detail::VariantSlot* slot_; }; -class VariantConstPtr { - public: - VariantConstPtr(const detail::VariantData* data) : variant_(data) {} - - JsonVariantConst* operator->() { - return &variant_; - } - - JsonVariantConst& operator*() { - return variant_; - } - - private: - JsonVariantConst variant_; -}; - class JsonArrayConstIterator { friend class JsonArray; @@ -92,8 +76,8 @@ class JsonArrayConstIterator { JsonVariantConst operator*() const { return JsonVariantConst(slot_->data()); } - VariantConstPtr operator->() { - return VariantConstPtr(slot_->data()); + Ptr operator->() { + return operator*(); } bool operator==(const JsonArrayConstIterator& other) const { diff --git a/src/ArduinoJson/Object/JsonObjectIterator.hpp b/src/ArduinoJson/Object/JsonObjectIterator.hpp index 15cd0fc0..f98965c3 100644 --- a/src/ArduinoJson/Object/JsonObjectIterator.hpp +++ b/src/ArduinoJson/Object/JsonObjectIterator.hpp @@ -9,23 +9,6 @@ ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE -class JsonPairPtr { - public: - JsonPairPtr(detail::ResourceManager* resources, detail::VariantSlot* slot) - : pair_(resources, slot) {} - - const JsonPair* operator->() const { - return &pair_; - } - - const JsonPair& operator*() const { - return pair_; - } - - private: - JsonPair pair_; -}; - class JsonObjectIterator { friend class JsonObject; @@ -39,8 +22,8 @@ class JsonObjectIterator { JsonPair operator*() const { return JsonPair(resources_, slot_); } - JsonPairPtr operator->() { - return JsonPairPtr(resources_, slot_); + Ptr operator->() { + return operator*(); } bool operator==(const JsonObjectIterator& other) const { @@ -66,22 +49,6 @@ class JsonObjectIterator { detail::VariantSlot* slot_; }; -class JsonPairConstPtr { - public: - JsonPairConstPtr(const detail::VariantSlot* slot) : pair_(slot) {} - - const JsonPairConst* operator->() const { - return &pair_; - } - - const JsonPairConst& operator*() const { - return pair_; - } - - private: - JsonPairConst pair_; -}; - class JsonObjectConstIterator { friend class JsonObject; @@ -94,8 +61,8 @@ class JsonObjectConstIterator { JsonPairConst operator*() const { return JsonPairConst(slot_); } - JsonPairConstPtr operator->() { - return JsonPairConstPtr(slot_); + Ptr operator->() { + return operator*(); } bool operator==(const JsonObjectConstIterator& other) const {