]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | // (C) Copyright John Maddock 2005. |
2 | // Use, modification and distribution are subject to the | |
3 | // Boost Software License, Version 1.0. (See accompanying file | |
4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
5 | ||
6 | #ifndef BOOST_TR1_FUNCTOR_IT_HPP_INCLUDED | |
7 | # define BOOST_TR1_FUNCTOR_IT_HPP_INCLUDED | |
8 | ||
9 | # include <boost/iterator/iterator_facade.hpp> | |
10 | ||
11 | namespace boost{ namespace tr1_details{ | |
12 | ||
13 | template <class Func, class R> | |
14 | struct functor2iterator : boost::iterator_facade<functor2iterator<Func,R>, const R, std::input_iterator_tag> | |
15 | { | |
16 | functor2iterator() : m_func(0){} | |
17 | functor2iterator(Func& f) | |
18 | : m_func(&f) | |
19 | { | |
20 | m_val = (*m_func)(); | |
21 | } | |
22 | const R& dereference()const | |
23 | { return m_val; } | |
24 | void increment(){ m_val = (*m_func)(); } | |
25 | bool equal(const functor2iterator&)const | |
26 | { return false; } | |
27 | private: | |
28 | Func* m_func; | |
29 | R m_val; | |
30 | }; | |
31 | ||
32 | } } | |
33 | ||
34 | #endif |