forked from boostorg/iterator
		
	
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// (C) Copyright Jeremy Siek 2001.
 | 
						|
// Distributed under the Boost Software License, Version 1.0. (See
 | 
						|
// accompanying file LICENSE_1_0.txt or copy at
 | 
						|
// http://www.boost.org/LICENSE_1_0.txt)
 | 
						|
 | 
						|
// Revision History:
 | 
						|
 | 
						|
// 27 Feb 2001   Jeremy Siek
 | 
						|
//      Initial checkin.
 | 
						|
 | 
						|
#ifndef BOOST_FUNCTION_OUTPUT_ITERATOR_HPP
 | 
						|
#define BOOST_FUNCTION_OUTPUT_ITERATOR_HPP
 | 
						|
 | 
						|
#include <iterator>
 | 
						|
 | 
						|
namespace boost {
 | 
						|
 | 
						|
  template <class UnaryFunction>
 | 
						|
  class function_output_iterator {
 | 
						|
    typedef function_output_iterator self;
 | 
						|
  public:
 | 
						|
    typedef std::output_iterator_tag iterator_category;
 | 
						|
    typedef void                value_type;
 | 
						|
    typedef void                difference_type;
 | 
						|
    typedef void                pointer;
 | 
						|
    typedef void                reference;
 | 
						|
 | 
						|
    explicit function_output_iterator() {}
 | 
						|
 | 
						|
    explicit function_output_iterator(const UnaryFunction& f)
 | 
						|
      : m_f(f) {}
 | 
						|
 | 
						|
    struct output_proxy {
 | 
						|
      output_proxy(UnaryFunction& f) : m_f(f) { }
 | 
						|
      template <class T> output_proxy& operator=(const T& value) {
 | 
						|
        m_f(value); 
 | 
						|
        return *this; 
 | 
						|
      }
 | 
						|
      UnaryFunction& m_f;
 | 
						|
    };
 | 
						|
    output_proxy operator*() { return output_proxy(m_f); }
 | 
						|
    self& operator++() { return *this; } 
 | 
						|
    self& operator++(int) { return *this; }
 | 
						|
  private:
 | 
						|
    UnaryFunction m_f;
 | 
						|
  };
 | 
						|
 | 
						|
  template <class UnaryFunction>
 | 
						|
  inline function_output_iterator<UnaryFunction>
 | 
						|
  make_function_output_iterator(const UnaryFunction& f = UnaryFunction()) {
 | 
						|
    return function_output_iterator<UnaryFunction>(f);
 | 
						|
  }
 | 
						|
 | 
						|
} // namespace boost
 | 
						|
 | 
						|
#endif // BOOST_FUNCTION_OUTPUT_ITERATOR_HPP
 |