From f4d71aa6e241ae59ed7d305e8aadddf9d90b2b46 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Fri, 1 Nov 2024 23:26:26 +0100 Subject: make ListIterator compatible with STL algorithm --- backend/ListIterator.h | 13 ++++++++++++- backend/ListIterator.hpp | 5 +++++ 2 files changed, 17 insertions(+), 1 deletion(-) (limited to 'backend') diff --git a/backend/ListIterator.h b/backend/ListIterator.h index 3d11806..cf14724 100644 --- a/backend/ListIterator.h +++ b/backend/ListIterator.h @@ -2,6 +2,8 @@ #include "backend/List.h" +#include + #include template @@ -9,13 +11,22 @@ class List; template class ListIterator { +public: + // required for compatibility + using iterator_category = std::forward_iterator_tag; + using value_type = T; + using difference_type = std::ptrdiff_t; + using pointer = T*; + using reference = T&; + public: ListIterator(ListLink * & here); public: T & operator * () const; - ListIterator & operator ++ (); bool operator != (const ListIterator &) const; + ListIterator & operator ++ (); + bool operator ! () const; private: ListLink * here = nullptr; diff --git a/backend/ListIterator.hpp b/backend/ListIterator.hpp index 30a556f..45f9acc 100644 --- a/backend/ListIterator.hpp +++ b/backend/ListIterator.hpp @@ -45,3 +45,8 @@ bool ListIterator::operator != (const ListIterator & rhs) const { return this->here != nullptr; } +template +bool ListIterator::operator ! () const { + return this->here == nullptr; +} + -- cgit v1.2.3