UNIVERS  15.3
UNIVERS base processing software API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
utility.hpp
1 #ifndef __window_array_hpp__
2 #define __window_array_hpp__
3 
4 #include <iterator>
5 #include <utility>
6 
7 
13 template <typename Iterator>
14 class ipair {
15 public:
16 
17  typedef Iterator iterator_type;
18  typedef typename std::iterator_traits<Iterator>::reference reference;
19 
20  // constructors
21  ipair() {};
22  ipair(Iterator i1, Iterator i2) : begin(i1), end(i2) {}
23  template<typename T> ipair(const std::pair<T, T>& p) : begin(p.first), end(p.second) {};
24  template<typename T> ipair(const ipair<T>& p) : begin(p.begin), end(p.end) {};
25 
26 
27  // operators
28  operator std::pair<Iterator, Iterator>() { return std::make_pair(begin, end); }
29 
30 
31  // methods
32  reference operator[](size_t ndx) const { Iterator i=begin; std::advance(i, ndx); return *i; }
33  size_t size() const { return std::distance(begin, end); }
34  bool empty() const { return begin==end; }
35 
36  Iterator begin;
37  Iterator end;
38 };
39 
40 
41 
42 
43 #endif // __window_array_hpp__
44 
45 
46 
Definition: utility.hpp:14