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/ListConstIterator.hpp | |
parent | 0558244645611f314f47e0fa427f7323ce253eaf (diff) |
Revert "remove external libraries from main branch"protocol-modeling
This reverts commit 0558244645611f314f47e0fa427f7323ce253eaf.
Diffstat (limited to 'include/lib/ArduinoJson/Data/ListConstIterator.hpp')
-rw-r--r-- | include/lib/ArduinoJson/Data/ListConstIterator.hpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/include/lib/ArduinoJson/Data/ListConstIterator.hpp b/include/lib/ArduinoJson/Data/ListConstIterator.hpp new file mode 100644 index 0000000..a6af685 --- /dev/null +++ b/include/lib/ArduinoJson/Data/ListConstIterator.hpp @@ -0,0 +1,50 @@ +// ArduinoJson - arduinojson.org +// Copyright Benoit Blanchon 2014-2018 +// MIT License + +#pragma once + +#include "ListNode.hpp" + +namespace ArduinoJson { +namespace Internals { + +// A read-only forward itertor for List<T> +template <typename T> +class ListConstIterator { + public: + explicit ListConstIterator(const ListNode<T> *node = NULL) : _node(node) {} + + const T &operator*() const { + return _node->content; + } + const T *operator->() { + return &_node->content; + } + + bool operator==(const ListConstIterator<T> &other) const { + return _node == other._node; + } + + bool operator!=(const ListConstIterator<T> &other) const { + return _node != other._node; + } + + ListConstIterator<T> &operator++() { + if (_node) _node = _node->next; + return *this; + } + + ListConstIterator<T> &operator+=(size_t distance) { + while (_node && distance) { + _node = _node->next; + --distance; + } + return *this; + } + + private: + const ListNode<T> *_node; +}; +} +} |