NAP
uniqueptrmapiterator.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  {
14  template<class ITERATORTYPE, class ELEMENTTYPE>
16  {
17  public:
18  UniquePtrMapIterator(ITERATORTYPE pos) :
19  mPos(pos)
20  {
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->second.get();
37  }
38 
39  ITERATORTYPE mPos;
40  };
41 
46  template<class MAPTYPE, class ELEMENTTYPE>
48  {
49  public:
50  UniquePtrMapWrapper(MAPTYPE& inMap) :
51  mMap(&inMap)
52  {
53  }
54 
56 
57  Iterator begin() { return Iterator(mMap->begin()); }
58  Iterator end() { return Iterator(mMap->end()); }
59 
60  private:
61  MAPTYPE* mMap;
62  };
63 
68  template<class MAPTYPE, class ELEMENTTYPE>
70  {
71  public:
72  UniquePtrConstMapWrapper(const MAPTYPE& inMap) :
73  mMap(&inMap)
74  {
75  }
76 
78 
79  ConstIterator begin() const { return ConstIterator(mMap->begin()); }
80  ConstIterator end() const { return ConstIterator(mMap->end()); }
81 
82  private:
83  const MAPTYPE* mMap;
84  };
85  }
86 }
nap::utility::UniquePtrConstMapWrapper
Definition: uniqueptrmapiterator.h:69
nap::utility::UniquePtrConstMapWrapper::UniquePtrConstMapWrapper
UniquePtrConstMapWrapper(const MAPTYPE &inMap)
Definition: uniqueptrmapiterator.h:72
nap::utility::UniquePtrMapIterator::operator++
UniquePtrMapIterator operator++()
Definition: uniqueptrmapiterator.h:23
nap::utility::UniquePtrMapIterator::UniquePtrMapIterator
UniquePtrMapIterator(ITERATORTYPE pos)
Definition: uniqueptrmapiterator.h:18
nap::utility::UniquePtrMapIterator
Definition: uniqueptrmapiterator.h:15
nap::utility::UniquePtrMapWrapper::begin
Iterator begin()
Definition: uniqueptrmapiterator.h:57
nap::utility::UniquePtrConstMapWrapper::ConstIterator
UniquePtrMapIterator< typename MAPTYPE::const_iterator, const ELEMENTTYPE > ConstIterator
Definition: uniqueptrmapiterator.h:77
nap::utility::UniquePtrMapIterator::operator!=
bool operator!=(const UniquePtrMapIterator &rhs)
Definition: uniqueptrmapiterator.h:29
nap::utility::UniquePtrMapWrapper
Definition: uniqueptrmapiterator.h:47
nap::utility::UniquePtrMapWrapper::Iterator
UniquePtrMapIterator< typename MAPTYPE::iterator, ELEMENTTYPE > Iterator
Definition: uniqueptrmapiterator.h:55
nap
Definition: templateapp.h:17
nap::utility::UniquePtrMapIterator::mPos
ITERATORTYPE mPos
Definition: uniqueptrmapiterator.h:39
nap::utility::UniquePtrMapWrapper::UniquePtrMapWrapper
UniquePtrMapWrapper(MAPTYPE &inMap)
Definition: uniqueptrmapiterator.h:50
nap::utility::UniquePtrMapIterator::operator*
ELEMENTTYPE operator*() const
Definition: uniqueptrmapiterator.h:34
nap::utility::UniquePtrConstMapWrapper::begin
ConstIterator begin() const
Definition: uniqueptrmapiterator.h:79
nap::utility::UniquePtrMapWrapper::end
Iterator end()
Definition: uniqueptrmapiterator.h:58
nap::utility::UniquePtrConstMapWrapper::end
ConstIterator end() const
Definition: uniqueptrmapiterator.h:80