diff options
author | Jacques Lucke <jacques@blender.org> | 2021-03-20 17:42:35 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2021-03-20 17:42:35 +0300 |
commit | 98721c85431d223c895a25d63dafb9e6637d34c4 (patch) | |
tree | 58a357fcef4d43f8d1e1e93835c9c2339eb66d18 /source/blender/blenlib/BLI_span.hh | |
parent | 59d3ec1eefd30a3f041a9b156b3e01607c2bcd71 (diff) |
BLI: improve support for generic algorithms with c++ containers
Some generic algorithms from the standard library like `std::any_of`
did not work with all container and iterator types. To improve the
situation, this patch adds various type members to containers
and iterators.
Custom iterators for Set, Map and IndexRange now have an iterator
category, which soe algorithms require. IndexRange could become
a random access iterator, but adding all the missing methods can
be done when it is necessary.
Diffstat (limited to 'source/blender/blenlib/BLI_span.hh')
-rw-r--r-- | source/blender/blenlib/BLI_span.hh | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/source/blender/blenlib/BLI_span.hh b/source/blender/blenlib/BLI_span.hh index fcc6d6f754b..fe511793c46 100644 --- a/source/blender/blenlib/BLI_span.hh +++ b/source/blender/blenlib/BLI_span.hh @@ -85,6 +85,15 @@ namespace blender { * modified. */ template<typename T> class Span { + public: + using value_type = T; + using pointer = T *; + using const_pointer = const T *; + using reference = T &; + using const_reference = const T &; + using iterator = const T *; + using size_type = int64_t; + private: const T *data_ = nullptr; int64_t size_ = 0; @@ -459,6 +468,15 @@ template<typename T> class Span { * MutableSpan. */ template<typename T> class MutableSpan { + public: + using value_type = T; + using pointer = T *; + using const_pointer = const T *; + using reference = T &; + using const_reference = const T &; + using iterator = T *; + using size_type = int64_t; + private: T *data_; int64_t size_; |