diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2020-09-07 12:57:22 +0200 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2020-09-07 12:57:22 +0200 |
commit | efa55eb5b3d3a4942789bdf397c3a6d6226475d4 (patch) | |
tree | a3a3f3079bbff203ca6c70544b4258742f5f152d /include/lib/ArduinoJson/Data/ListIterator.hpp | |
parent | 0558244645611f314f47e0fa427f7323ce253eaf (diff) |
Revert "remove external libraries from main branch"protocol-modeling
This reverts commit 0558244645611f314f47e0fa427f7323ce253eaf.
Diffstat (limited to 'include/lib/ArduinoJson/Data/ListIterator.hpp')
-rw-r--r-- | include/lib/ArduinoJson/Data/ListIterator.hpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/include/lib/ArduinoJson/Data/ListIterator.hpp b/include/lib/ArduinoJson/Data/ListIterator.hpp new file mode 100644 index 0000000..01fa287 --- /dev/null +++ b/include/lib/ArduinoJson/Data/ListIterator.hpp @@ -0,0 +1,60 @@ +// ArduinoJson - arduinojson.org +// Copyright Benoit Blanchon 2014-2018 +// MIT License + +#pragma once + +#include "ListConstIterator.hpp" +#include "ListNode.hpp" + +namespace ArduinoJson { +namespace Internals { + +template <typename T> +class List; + +// A read-write forward iterator for List<T> +template <typename T> +class ListIterator { + friend class List<T>; + + public: + explicit ListIterator(ListNode<T> *node = NULL) : _node(node) {} + + T &operator*() const { + return _node->content; + } + T *operator->() { + return &_node->content; + } + + bool operator==(const ListIterator<T> &other) const { + return _node == other._node; + } + + bool operator!=(const ListIterator<T> &other) const { + return _node != other._node; + } + + ListIterator<T> &operator++() { + if (_node) _node = _node->next; + return *this; + } + + ListIterator<T> &operator+=(size_t distance) { + while (_node && distance) { + _node = _node->next; + --distance; + } + return *this; + } + + operator ListConstIterator<T>() const { + return ListConstIterator<T>(_node); + } + + private: + ListNode<T> *_node; +}; +} +} |