From 8b0ef87f17a797be276a7e8c141f933737997998 Mon Sep 17 00:00:00 2001 From: janis Date: Wed, 13 Jul 2022 01:40:02 +0100 Subject: [PATCH] removed old iterator that didnt do anything --- include/iterator.hpp | 147 +------------------------------------------ 1 file changed, 2 insertions(+), 145 deletions(-) diff --git a/include/iterator.hpp b/include/iterator.hpp index 689852f..e3b5f25 100644 --- a/include/iterator.hpp +++ b/include/iterator.hpp @@ -180,151 +180,8 @@ public: } }; -template struct BaseIterator { - using value_type = V; - using reference = V &; - using difference_type = std::ptrdiff_t; - - I base_iter; - - BaseIterator(const I &iter) : base_iter(iter) {} - BaseIterator(I &&iter) : base_iter(std::move(iter)) {} -}; - -template -struct InputOrOutputIterator : public BaseIterator { - InputOrOutputIterator(const I &iter) : BaseIterator(iter) {} - InputOrOutputIterator(I &&iter) : BaseIterator(std::move(iter)) {} - - auto constexpr operator*() const -> void {} - - auto constexpr operator++(int) -> InputOrOutputIterator { - const auto ret = *this; - this->base_iter++; - return ret; - } - auto constexpr operator++() -> InputOrOutputIterator & { - this ++; - return *this; - } -}; - -template -struct InputIterator : public InputOrOutputIterator, - public std::input_iterator_tag { - InputIterator(const I &iter) : BaseIterator(iter) {} - InputIterator(I &&iter) : BaseIterator(std::move(iter)) {} - - auto constexpr operator*() const -> const V & { return *this->base_iter; } -}; - -template -struct OutputIterator : public InputOrOutputIterator, - public std::output_iterator_tag { - OutputIterator(const I &iter) : BaseIterator(iter) {} - OutputIterator(I &&iter) : BaseIterator(std::move(iter)) {} - - auto constexpr operator*() -> V & { return *this->base_iter; } -}; - -template -struct ForwardIterator : public InputIterator, - public std::forward_iterator_tag { - ForwardIterator(const I &iter) : BaseIterator(iter) {} - ForwardIterator(I &&iter) : BaseIterator(std::move(iter)) {} - - auto constexpr operator==(const ForwardIterator &rhs) const -> bool { - return this->base_iter == rhs.base_iter; - } -}; - -template -struct BidirectionalIterator : public ForwardIterator, - public std::bidirectional_iterator_tag { - BidirectionalIterator(const I &iter) : BaseIterator(iter) {} - BidirectionalIterator(I &&iter) : BaseIterator(std::move(iter)) {} - - auto constexpr operator--(int) -> BidirectionalIterator { - const auto ret = *this; - this->base_iter--; - return ret; - } - auto constexpr operator--() -> BidirectionalIterator & { - this --; - return *this; - } -}; - -template -struct RandomAccessIterator : public BidirectionalIterator, - public std::random_access_iterator_tag { - using difference_type = typename BaseIterator::difference_type; - - RandomAccessIterator(const I &iter) : BaseIterator(iter) {} - RandomAccessIterator(I &&iter) : BaseIterator(std::move(iter)) {} - - auto constexpr operator<=>(const RandomAccessIterator &rhs) const - -> std::strong_ordering { - return this->base_iter <=> rhs.base_iter; - } - - auto constexpr operator-(const RandomAccessIterator &rhs) const - -> difference_type { - return this->base_iter - rhs.base_iter; - } - auto constexpr operator+(const difference_type &n) const - -> RandomAccessIterator { - return RandomAccessIterator(this->base_iter + n); - } - friend auto constexpr operator+(const difference_type &n, - const RandomAccessIterator &rhs) - -> RandomAccessIterator { - return rhs + n; - } - auto constexpr operator-(const difference_type &n) const - -> RandomAccessIterator { - return RandomAccessIterator(this->base_iter - n); - } - - auto operator+=(const difference_type &n) -> RandomAccessIterator & { - *this = RandomAccessIterator(this->base_iter + n); - return *this; - } - auto operator-=(const difference_type &n) -> RandomAccessIterator & { - *this = RandomAccessIterator(this->base_iter - n); - return *this; - } - - auto constexpr operator[](const difference_type &n) const -> const V & { - return this->base_iter[n]; - } - auto operator[](const difference_type &n) -> V & { - return this->base_iter[n]; - } -}; - -template -using Iterator = std::conditional_t< - std::random_access_iterator, - RandomAccessIterator, I>, - std::conditional_t< - std::bidirectional_iterator, - BidirectionalIterator, I>, - std::conditional_t< - std::forward_iterator, ForwardIterator, I>, - std::conditional_t< - std::output_iterator())>, - OutputIterator, I>, - std::conditional_t< - std::input_iterator, - InputIterator, I>, - std::conditional_t< - std::input_or_output_iterator, - InputOrOutputIterator, I>, - RandomAccessIterator>>>>>>; - -template -using RangeIterator = Iterator>; +template +concept iterator = std::same_as::value_type, T>; } // namespace util