NAP
uniqueptrvectoriterator.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 namespace nap
8 {
9  namespace utility
10  {
15  template<class ITERATORTYPE, class ELEMENTTYPE>
17  {
18  public:
19  UniquePtrVectorIterator(ITERATORTYPE pos) :
20  mPos(pos)
21  { }
22 
24  {
25  mPos++;
26  return *this;
27  }
28 
30  {
31  return rhs.mPos != mPos;
32  }
33 
34  ELEMENTTYPE operator*() const
35  {
36  return mPos->get();
37  }
38 
39  ITERATORTYPE mPos;
40  };
41 
42 
47  template<class VECTORTYPE, class ELEMENTTYPE>
49  {
50  public:
51  UniquePtrVectorWrapper(VECTORTYPE& inVector) :
52  mVector(&inVector)
53  { }
54 
56 
57  Iterator begin() { return Iterator(mVector->begin()); }
58  Iterator end() { return Iterator(mVector->end()); }
59 
60  private:
61  VECTORTYPE* mVector;
62  };
63 
64 
69  template<class VECTORTYPE, class ELEMENTTYPE>
71  {
72  public:
73  UniquePtrConstVectorWrapper(const VECTORTYPE& inVector) :
74  mVector(&inVector)
75  { }
76 
78 
79  ConstIterator begin() const { return ConstIterator(mVector->begin()); }
80  ConstIterator end() const { return ConstIterator(mVector->end()); }
81 
82  private:
83  const VECTORTYPE* mVector;
84  };
85  }
86 }
nap::utility::UniquePtrConstVectorWrapper
Definition: uniqueptrvectoriterator.h:70
nap::utility::UniquePtrVectorIterator::operator++
UniquePtrVectorIterator operator++()
Definition: uniqueptrvectoriterator.h:23
nap::utility::UniquePtrVectorWrapper::UniquePtrVectorWrapper
UniquePtrVectorWrapper(VECTORTYPE &inVector)
Definition: uniqueptrvectoriterator.h:51
nap::utility::UniquePtrVectorIterator::mPos
ITERATORTYPE mPos
Definition: uniqueptrvectoriterator.h:39
nap::utility::UniquePtrConstVectorWrapper::UniquePtrConstVectorWrapper
UniquePtrConstVectorWrapper(const VECTORTYPE &inVector)
Definition: uniqueptrvectoriterator.h:73
nap::utility::UniquePtrConstVectorWrapper::begin
ConstIterator begin() const
Definition: uniqueptrvectoriterator.h:79
nap::utility::UniquePtrVectorIterator
Definition: uniqueptrvectoriterator.h:16
nap::utility::UniquePtrVectorIterator::operator*
ELEMENTTYPE operator*() const
Definition: uniqueptrvectoriterator.h:34
nap::utility::UniquePtrVectorWrapper::Iterator
UniquePtrVectorIterator< typename VECTORTYPE::iterator, ELEMENTTYPE > Iterator
Definition: uniqueptrvectoriterator.h:55
nap::utility::UniquePtrVectorIterator::UniquePtrVectorIterator
UniquePtrVectorIterator(ITERATORTYPE pos)
Definition: uniqueptrvectoriterator.h:19
nap::utility::UniquePtrVectorIterator::operator!=
bool operator!=(const UniquePtrVectorIterator &rhs)
Definition: uniqueptrvectoriterator.h:29
nap::utility::UniquePtrConstVectorWrapper::end
ConstIterator end() const
Definition: uniqueptrvectoriterator.h:80
nap::utility::UniquePtrVectorWrapper::begin
Iterator begin()
Definition: uniqueptrvectoriterator.h:57
nap::utility::UniquePtrConstVectorWrapper::ConstIterator
UniquePtrVectorIterator< typename VECTORTYPE::const_iterator, const ELEMENTTYPE > ConstIterator
Definition: uniqueptrvectoriterator.h:77
nap
Definition: templateapp.h:17
nap::utility::UniquePtrVectorWrapper
Definition: uniqueptrvectoriterator.h:48
nap::utility::UniquePtrVectorWrapper::end
Iterator end()
Definition: uniqueptrvectoriterator.h:58