// Boost string_algo library find_format_store.hpp header file ---------------------------// // Copyright Pavol Droba 2002-2003. // // 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) // 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 #include namespace boost { namespace algorithm { namespace detail { // temporary format and find result storage --------------------------------// #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) #pragma warning(push) #pragma warning(disable:4512) //assignment operator could not be generated #endif template< typename ForwardIteratorT, typename FormatterT, typename FormatResultT > class find_format_store : public iterator_range { public: // typedefs typedef iterator_range 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::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; }; #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) #pragma warning(pop) #endif } // namespace detail } // namespace algorithm } // namespace boost #endif // BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP