From fc6b7fcd97f5662f92864e5496d995da8f52a3e8 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 17 Mar 2022 12:30:04 +0100 Subject: [PATCH] AK: Add const variant of Vector::in_reverse() --- AK/NonnullPtrVector.h | 9 +++++---- AK/Vector.h | 8 ++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/AK/NonnullPtrVector.h b/AK/NonnullPtrVector.h index c628196c1aa..6db27644d39 100644 --- a/AK/NonnullPtrVector.h +++ b/AK/NonnullPtrVector.h @@ -32,19 +32,20 @@ public: using ConstIterator = SimpleIterator; using Iterator = SimpleIterator; using ReverseIterator = SimpleReverseIterator; + using ReverseConstIterator = SimpleReverseIterator; ALWAYS_INLINE constexpr ConstIterator begin() const { return ConstIterator::begin(*this); } ALWAYS_INLINE constexpr Iterator begin() { return Iterator::begin(*this); } ALWAYS_INLINE constexpr ReverseIterator rbegin() { return ReverseIterator::rbegin(*this); } + ALWAYS_INLINE constexpr ReverseConstIterator rbegin() const { return ReverseConstIterator::rbegin(*this); } ALWAYS_INLINE constexpr ConstIterator end() const { return ConstIterator::end(*this); } ALWAYS_INLINE constexpr Iterator end() { return Iterator::end(*this); } ALWAYS_INLINE constexpr ReverseIterator rend() { return ReverseIterator::rend(*this); } + ALWAYS_INLINE constexpr ReverseConstIterator rend() const { return ReverseConstIterator::rend(*this); } - ALWAYS_INLINE constexpr auto in_reverse() - { - return ReverseWrapper::in_reverse(*this); - } + ALWAYS_INLINE constexpr auto in_reverse() { return ReverseWrapper::in_reverse(*this); } + ALWAYS_INLINE constexpr auto in_reverse() const { return ReverseWrapper::in_reverse(*this); } ALWAYS_INLINE PtrType& ptr_at(size_t index) { return Base::at(index); } ALWAYS_INLINE const PtrType& ptr_at(size_t index) const { return Base::at(index); } diff --git a/AK/Vector.h b/AK/Vector.h index 0f6bef51794..7a4f578a3cd 100644 --- a/AK/Vector.h +++ b/AK/Vector.h @@ -702,20 +702,28 @@ public: using ConstIterator = SimpleIterator; using Iterator = SimpleIterator; using ReverseIterator = SimpleReverseIterator; + using ReverseConstIterator = SimpleReverseIterator; ConstIterator begin() const { return ConstIterator::begin(*this); } Iterator begin() { return Iterator::begin(*this); } ReverseIterator rbegin() { return ReverseIterator::rbegin(*this); } + ReverseConstIterator rbegin() const { return ReverseConstIterator::rbegin(*this); } ConstIterator end() const { return ConstIterator::end(*this); } Iterator end() { return Iterator::end(*this); } ReverseIterator rend() { return ReverseIterator::rend(*this); } + ReverseConstIterator rend() const { return ReverseConstIterator::rend(*this); } ALWAYS_INLINE constexpr auto in_reverse() { return ReverseWrapper::in_reverse(*this); } + ALWAYS_INLINE constexpr auto in_reverse() const + { + return ReverseWrapper::in_reverse(*this); + } + template ConstIterator find_if(TUnaryPredicate&& finder) const {