| 1234567891011121314151617181920212223242526272829303132333435 |
- #pragma once
- #include <iterator>
- #include <jvalidate/detail/deref_proxy.h>
- namespace jvalidate::adapter::detail {
- template <typename It, typename Adapter> class JsonArrayIterator : public It {
- public:
- using value_type = Adapter;
- using reference = Adapter;
- using pointer = ::jvalidate::detail::DerefProxy<reference>;
- using difference_type = std::ptrdiff_t;
- using iterator_category = std::forward_iterator_tag;
- JsonArrayIterator() = default;
- JsonArrayIterator(It it) : It(it) {}
- reference operator*() const { return {It::operator*()}; }
- pointer operator->() const { return {operator*()}; }
- JsonArrayIterator operator++(int) {
- auto tmp = *this;
- ++*this;
- return tmp;
- }
- JsonArrayIterator & operator++() {
- It::operator++();
- return *this;
- }
- };
- }
|