DiaDes  0.1
DIAgnosis of Discrete-Event System
Range.hh
Go to the documentation of this file.
1 
9 #ifndef __DIADES__UTILS__RANGE__HH__
10 #define __DIADES__UTILS__RANGE__HH__
11 
12 namespace Diades
13 {
14  namespace Utils
15  {
16 
23  template<typename _Iterator>
24  class Range : public std::pair<_Iterator, _Iterator>
25  {
26  public:
27  using Iterator = _Iterator;
28  using Pair = std::pair<Iterator, Iterator>;
29  using reference = typename Iterator::reference;
30 
34  Range() = default;
35 
36 
41  Range(Range const& other) = default;
47  Range& operator=(Range const& other) = default;
52  Range(Range&& other) = default;
58  Range& operator=(Range&& other) = default;
62  ~Range() = default;
63 
68  Range(Iterator begin, Iterator end) : Pair(begin, end)
69  {
70  }
71 
75  const Iterator &
76  begin() const
77  {
78  return this->first;
79  }
80 
84  Iterator &
86  {
87  return this->first;
88  }
89 
93  const Iterator &
94  end() const
95  {
96  return this->second;
97  }
98 
99 
103  Iterator &
104  end()
105  {
106  return this->second;
107  }
108  };
109 
110  }
111 }
112 
113 
114 
115 #endif /* __DIADES__UTILS__RANGE__HH__ */
116 
std::pair< Iterator, Iterator > Pair
Definition: Range.hh:28
Range & operator=(Range const &other)=default
typename Iterator::reference reference
Definition: Range.hh:29
Iterator & end()
Definition: Range.hh:104
Range(Iterator begin, Iterator end)
Definition: Range.hh:68
const Iterator & end() const
Definition: Range.hh:94
Namespace of the Diades project.
ConstIterator on the Net.
const Iterator & begin() const
Definition: Range.hh:76
Iterator & begin()
Definition: Range.hh:85