boost/algorithm/string/detail/find_format_store.hpp
// Boost string_algo library find_format_store.hpp header file ---------------------------// // Copyright Pavol Droba 2002-2003. Use, modification and // distribution is subject to 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) // See http://www.boost.org for updates, documentation, and revision history. #ifndef BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP #define BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP #include <boost/algorithm/string/config.hpp> #include <boost/range/iterator_range.hpp> namespace boost { namespace algorithm { namespace detail { // temporary format and find result storage --------------------------------// template< typename ForwardIteratorT, typename FormatterT, typename FormatResultT > class find_format_store : public iterator_range<ForwardIteratorT> { public: // typedefs typedef iterator_range<ForwardIteratorT> base_type; typedef FormatterT formatter_type; typedef FormatResultT format_result_type; public: // Construction find_format_store( const base_type& FindResult, const format_result_type& FormatResult, const formatter_type& Formatter ) : base_type(FindResult), m_FormatResult(FormatResult), m_Formatter(Formatter) {} // Assignment template< typename FindResultT > find_format_store& operator=( FindResultT FindResult ) { iterator_range<ForwardIteratorT>::operator=(FindResult); m_FormatResult=m_Formatter(FindResult); return *this; } // Retrieve format result const format_result_type& format_result() { return m_FormatResult; } private: format_result_type m_FormatResult; const formatter_type& m_Formatter; }; } // namespace detail } // namespace algorithm } // namespace boost #endif // BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP