~ubuntu-branches/ubuntu/wily/davix/wily

« back to all changes in this revision

Viewing changes to deps/boost_intern/boost/iterator/reverse_iterator.hpp

  • Committer: Package Import Robot
  • Author(s): Mattias Ellert
  • Date: 2015-07-31 13:17:55 UTC
  • mfrom: (5.1.3 sid)
  • Revision ID: package-import@ubuntu.com-20150731131755-mizprbmn7ogv33te
Tags: 0.4.1-1
* Update to version 0.4.1
* Implement Multi-Arch support

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// (C) Copyright David Abrahams 2002.
2
 
// (C) Copyright Jeremy Siek    2002.
3
 
// (C) Copyright Thomas Witt    2002.
4
 
// Distributed under the Boost Software License, Version 1.0. (See
5
 
// accompanying file LICENSE_1_0.txt or copy at
6
 
// http://www.boost.org/LICENSE_1_0.txt)
7
 
#ifndef BOOST_REVERSE_ITERATOR_23022003THW_HPP
8
 
#define BOOST_REVERSE_ITERATOR_23022003THW_HPP
9
 
 
10
 
#include <boost/next_prior.hpp>
11
 
#include <boost/iterator.hpp>
12
 
#include <boost/iterator/iterator_adaptor.hpp>
13
 
 
14
 
namespace boost
15
 
{
16
 
 
17
 
  //
18
 
  //
19
 
  //
20
 
  template <class Iterator>
21
 
  class reverse_iterator
22
 
      : public iterator_adaptor< reverse_iterator<Iterator>, Iterator >
23
 
  {
24
 
      typedef iterator_adaptor< reverse_iterator<Iterator>, Iterator > super_t;
25
 
 
26
 
      friend class iterator_core_access;
27
 
 
28
 
   public:
29
 
      reverse_iterator() {}
30
 
 
31
 
      explicit reverse_iterator(Iterator x) 
32
 
          : super_t(x) {}
33
 
 
34
 
      template<class OtherIterator>
35
 
      reverse_iterator(
36
 
          reverse_iterator<OtherIterator> const& r
37
 
          , typename enable_if_convertible<OtherIterator, Iterator>::type* = 0
38
 
          )
39
 
          : super_t(r.base())
40
 
      {}
41
 
 
42
 
   private:
43
 
      typename super_t::reference dereference() const { return *boost::prior(this->base()); }
44
 
    
45
 
      void increment() { --this->base_reference(); }
46
 
      void decrement() { ++this->base_reference(); }
47
 
 
48
 
      void advance(typename super_t::difference_type n)
49
 
      {
50
 
          this->base_reference() += -n;
51
 
      }
52
 
 
53
 
      template <class OtherIterator>
54
 
      typename super_t::difference_type
55
 
      distance_to(reverse_iterator<OtherIterator> const& y) const
56
 
      {
57
 
          return this->base_reference() - y.base();
58
 
      }
59
 
  };
60
 
 
61
 
  template <class BidirectionalIterator>
62
 
  reverse_iterator<BidirectionalIterator> make_reverse_iterator(BidirectionalIterator x)
63
 
  {
64
 
      return reverse_iterator<BidirectionalIterator>(x);
65
 
  }
66
 
 
67
 
} // namespace boost
68
 
 
69
 
#endif // BOOST_REVERSE_ITERATOR_23022003THW_HPP