123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // (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_ITERATOR_FUNCTION_OUTPUT_ITERATOR_HPP
- #define BOOST_ITERATOR_FUNCTION_OUTPUT_ITERATOR_HPP
- #include <iterator>
- namespace boost {
- namespace iterators {
- 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 iterators
- using iterators::function_output_iterator;
- using iterators::make_function_output_iterator;
- } // namespace boost
- #endif // BOOST_ITERATOR_FUNCTION_OUTPUT_ITERATOR_HPP
|