From b58cfde48a1a175bf9e20940dccba70d2d581b42 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Sun, 21 May 2023 15:13:57 +0200 Subject: [PATCH] BLI: improve IndexRange Defining `operator-` for the iterator allows it to be used in more generic iterator code. The `index_range` method is the same that exists on many other containers like `Vector`. --- source/blender/blenlib/BLI_index_range.hh | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/blender/blenlib/BLI_index_range.hh b/source/blender/blenlib/BLI_index_range.hh index 7f1266c6716..7991f68c5bc 100644 --- a/source/blender/blenlib/BLI_index_range.hh +++ b/source/blender/blenlib/BLI_index_range.hh @@ -105,6 +105,11 @@ class IndexRange { return a.current_ == b.current_; } + constexpr friend int64_t operator-(const Iterator &a, const Iterator &b) + { + return a.current_ - b.current_; + } + constexpr int64_t operator*() const { return current_; @@ -151,6 +156,11 @@ class IndexRange { return size_; } + constexpr IndexRange index_range() const + { + return IndexRange(size_); + } + /** * Returns true if the size is zero. */