BVB Source Codes

mars Show reverse_iterator.hpp Source code

Return Download mars: download reverse_iterator.hpp Source code - Download mars Source code - Type:.hpp
  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 mars_boost {} namespace boost = mars_boost; namespace mars_boost {
  15. namespace iterators {
  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 *mars_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.   inline reverse_iterator<BidirectionalIterator> make_reverse_iterator(BidirectionalIterator x)
  63.   {
  64.       return reverse_iterator<BidirectionalIterator>(x);
  65.   }
  66.  
  67. } // namespace iterators
  68.  
  69. using iterators::reverse_iterator;
  70. using iterators::make_reverse_iterator;
  71.  
  72. } // namespace mars_boost
  73.  
  74. #endif // BOOST_REVERSE_ITERATOR_23022003THW_HPP
  75.  
downloadreverse_iterator.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top