imgtools/imglib/boostlibrary/boost/tr1/detail/functor2iterator.hpp
changeset 600 6d08f4a05d93
equal deleted inserted replaced
599:fa7a3cc6effd 600:6d08f4a05d93
       
     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