annotate DEPENDENCIES/generic/include/boost/random/detail/iterator_mixin.hpp @ 125:34e428693f5d vext

Vext -> Repoint
author Chris Cannam
date Thu, 14 Jun 2018 11:15:39 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 /* boost random/detail/iterator_mixin.hpp header file
Chris@16 2 *
Chris@16 3 * Copyright Jens Maurer 2000-2001
Chris@16 4 * Distributed under the Boost Software License, Version 1.0. (See
Chris@16 5 * accompanying file LICENSE_1_0.txt or copy at
Chris@16 6 * http://www.boost.org/LICENSE_1_0.txt)
Chris@16 7 *
Chris@16 8 * See http://www.boost.org for most recent version including documentation.
Chris@16 9 *
Chris@16 10 * Revision history
Chris@16 11 */
Chris@16 12
Chris@16 13 #ifndef BOOST_ITERATOR_MIXIN_HPP
Chris@16 14 #define BOOST_ITERATOR_MIXIN_HPP
Chris@16 15
Chris@16 16 #include <boost/operators.hpp>
Chris@16 17
Chris@16 18 namespace boost {
Chris@16 19
Chris@16 20 // must be in boost namespace, otherwise the inline friend trick fails
Chris@16 21 template<class Generator, class ResultType>
Chris@16 22 class generator_iterator_mixin_adapter
Chris@16 23 : incrementable<Generator>, equality_comparable<Generator>
Chris@16 24 {
Chris@16 25 public:
Chris@16 26 typedef std::input_iterator_tag iterator_category;
Chris@16 27 typedef ResultType value_type;
Chris@16 28 typedef std::ptrdiff_t difference_type;
Chris@16 29 typedef const value_type * pointer;
Chris@16 30 typedef const value_type & reference;
Chris@16 31 Generator& operator++() { v = cast()(); return cast(); }
Chris@16 32 const value_type& operator*() const { return v; }
Chris@16 33
Chris@16 34 protected:
Chris@16 35 // instantiate from derived classes only
Chris@16 36 generator_iterator_mixin_adapter() { }
Chris@16 37 void iterator_init() { operator++(); }
Chris@16 38 private:
Chris@16 39 Generator & cast() { return static_cast<Generator&>(*this); }
Chris@16 40 value_type v;
Chris@16 41 };
Chris@16 42
Chris@16 43 } // namespace boost
Chris@16 44
Chris@16 45 #endif // BOOST_ITERATOR_MIXIN_HPP