iterators.h
Go to the documentation of this file.
1 /*
2  * Copyright 2015-2022 CNRS-UM LIRMM, CNRS-AIST JRL
3  */
4 
5 #pragma once
6 
7 #include <memory>
8 #include <vector>
9 
10 namespace mc_rtc
11 {
12 
15 template<typename T>
16 struct SharedPtrVectorIterator : public std::vector<std::shared_ptr<T>>::iterator
17 {
18  using iterator_t = typename std::vector<std::shared_ptr<T>>::iterator;
19 
21 
22  using pointer = T *;
23  using reference = T &;
24 
25  reference operator*() const noexcept { return **static_cast<const iterator_t &>(*this); }
26 
27  pointer operator->() const noexcept { return static_cast<const iterator_t &>(*this)->get(); }
28 };
29 
33 template<typename T>
34 struct SharedPtrVectorConstIterator : public std::vector<std::shared_ptr<T>>::const_iterator
35 {
36  using iterator_t = typename std::vector<std::shared_ptr<T>>::const_iterator;
37 
39 
40  using pointer = const T *;
41  using reference = const T &;
42 
43  reference operator*() const noexcept { return **static_cast<const iterator_t &>(*this); }
44 
45  pointer operator->() const noexcept { return static_cast<const iterator_t &>(*this)->get(); }
46 };
47 
48 } // namespace mc_rtc
mc_rtc::SharedPtrVectorIterator
Definition: iterators.h:16
mc_rtc::SharedPtrVectorConstIterator
Definition: iterators.h:34
mc_rtc::SharedPtrVectorIterator::reference
T & reference
Definition: iterators.h:23
mc_rtc::SharedPtrVectorIterator::operator->
pointer operator->() const noexcept
Definition: iterators.h:27
mc_rtc::SharedPtrVectorIterator::iterator_t
typename std::vector< std::shared_ptr< T > >::iterator iterator_t
Definition: iterators.h:18
mc_rtc::SharedPtrVectorConstIterator::operator->
pointer operator->() const noexcept
Definition: iterators.h:45
mc_rtc::SharedPtrVectorConstIterator::pointer
const T * pointer
Definition: iterators.h:40
mc_rtc::SharedPtrVectorConstIterator::reference
const T & reference
Definition: iterators.h:41
mc_rtc::SharedPtrVectorConstIterator::iterator_t
typename std::vector< std::shared_ptr< T > >::const_iterator iterator_t
Definition: iterators.h:36
mc_rtc::SharedPtrVectorConstIterator::operator*
reference operator*() const noexcept
Definition: iterators.h:43
mc_rtc::SharedPtrVectorIterator::pointer
T * pointer
Definition: iterators.h:22
mc_rtc::SharedPtrVectorIterator::SharedPtrVectorIterator
SharedPtrVectorIterator(iterator_t it) noexcept
Definition: iterators.h:20
mc_rtc::SharedPtrVectorIterator::operator*
reference operator*() const noexcept
Definition: iterators.h:25
mc_rtc::SharedPtrVectorConstIterator::SharedPtrVectorConstIterator
SharedPtrVectorConstIterator(iterator_t it)
Definition: iterators.h:38
mc_rtc
Definition: Contact.h:87