diff --git a/src/ArduinoJson/Array/JsonArrayIterator.hpp b/src/ArduinoJson/Array/JsonArrayIterator.hpp index 8c01d13a..9d36566c 100644 --- a/src/ArduinoJson/Array/JsonArrayIterator.hpp +++ b/src/ArduinoJson/Array/JsonArrayIterator.hpp @@ -35,7 +35,7 @@ class JsonArrayIterator { : iterator_(iterator) {} JsonVariant operator*() { - return JsonVariant(iterator_.value()); + return JsonVariant(*iterator_); } Ptr operator->() { return operator*(); @@ -67,7 +67,7 @@ class JsonArrayConstIterator { : iterator_(iterator) {} JsonVariantConst operator*() const { - return JsonVariantConst(iterator_.value()); + return JsonVariantConst(*iterator_); } Ptr operator->() { return operator*(); diff --git a/src/ArduinoJson/Collection/CollectionImpl.hpp b/src/ArduinoJson/Collection/CollectionImpl.hpp index 4212d2da..29eecbe7 100644 --- a/src/ArduinoJson/Collection/CollectionImpl.hpp +++ b/src/ArduinoJson/Collection/CollectionImpl.hpp @@ -99,7 +99,7 @@ inline size_t VariantImpl::nesting() const { return 0; size_t maxChildNesting = 0; for (auto it = createIterator(); !it.done(); it.next()) { - auto childNesting = it.value().nesting(); + auto childNesting = it->nesting(); if (childNesting > maxChildNesting) maxChildNesting = childNesting; } diff --git a/src/ArduinoJson/Collection/CollectionIterator.hpp b/src/ArduinoJson/Collection/CollectionIterator.hpp index 203508ce..f61d8640 100644 --- a/src/ArduinoJson/Collection/CollectionIterator.hpp +++ b/src/ArduinoJson/Collection/CollectionIterator.hpp @@ -30,10 +30,14 @@ class CollectionIterator { currentId_ = nextId; } - const VariantImpl& value() const { + const VariantImpl& operator*() const { return value_; } + const VariantImpl* operator->() const { + return &value_; + } + bool done() const { return value_.isUnbound(); } diff --git a/src/ArduinoJson/Json/PrettyJsonSerializer.hpp b/src/ArduinoJson/Json/PrettyJsonSerializer.hpp index 6cbe594f..3b2481bb 100644 --- a/src/ArduinoJson/Json/PrettyJsonSerializer.hpp +++ b/src/ArduinoJson/Json/PrettyJsonSerializer.hpp @@ -26,7 +26,7 @@ class PrettyJsonSerializer : public JsonSerializer { nesting_++; while (!it.done()) { indent(); - it.value().accept(*this); + it->accept(*this); it.next(); base::write(it.done() ? "\r\n" : ",\r\n"); } @@ -48,7 +48,7 @@ class PrettyJsonSerializer : public JsonSerializer { while (!it.done()) { if (isKey) indent(); - it.value().accept(*this); + it->accept(*this); it.next(); if (isKey) base::write(": "); diff --git a/src/ArduinoJson/Object/JsonPair.hpp b/src/ArduinoJson/Object/JsonPair.hpp index 411c2a93..339f6db3 100644 --- a/src/ArduinoJson/Object/JsonPair.hpp +++ b/src/ArduinoJson/Object/JsonPair.hpp @@ -17,9 +17,9 @@ class JsonPair { // INTERNAL USE ONLY JsonPair(detail::VariantImpl::iterator iterator) { if (!iterator.done()) { - key_ = iterator.value().asString(); + key_ = iterator->asString(); iterator.next(); - value_ = JsonVariant(iterator.value()); + value_ = JsonVariant(*iterator); } } @@ -44,9 +44,9 @@ class JsonPairConst { public: JsonPairConst(detail::VariantImpl::iterator iterator) { if (!iterator.done()) { - key_ = iterator.value().asString(); + key_ = iterator->asString(); iterator.next(); - value_ = JsonVariantConst(iterator.value()); + value_ = JsonVariantConst(*iterator); } } diff --git a/src/ArduinoJson/Object/ObjectImpl.hpp b/src/ArduinoJson/Object/ObjectImpl.hpp index 66855292..1f43ce23 100644 --- a/src/ArduinoJson/Object/ObjectImpl.hpp +++ b/src/ArduinoJson/Object/ObjectImpl.hpp @@ -34,7 +34,7 @@ inline VariantImpl::iterator VariantImpl::findKey(TAdaptedString key) const { return iterator(); bool isKey = true; for (auto it = createIterator(); !it.done(); it.next()) { - if (isKey && stringEquals(key, adaptString(it.value().asString()))) + if (isKey && stringEquals(key, adaptString(it->asString()))) return it; isKey = !isKey; }