/Src/Dependencies/Boost/boost/algorithm/string/detail/find_format_store.hpp
http://hadesmem.googlecode.com/ · C++ Header · 89 lines · 62 code · 15 blank · 12 comment · 1 complexity · c4b845bf98724f0f0502b446ee37e272 MD5 · raw file
- // 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 <boost/algorithm/string/config.hpp>
- #include <boost/range/iterator_range.hpp>
- 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<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);
- if( !this->empty() ) {
- 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;
- };
- template<typename InputT, typename FindResultT>
- bool check_find_result(InputT&, FindResultT& FindResult)
- {
- typedef BOOST_STRING_TYPENAME
- range_const_iterator<InputT>::type input_iterator_type;
- iterator_range<input_iterator_type> ResultRange(FindResult);
- return !ResultRange.empty();
- }
- #if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)
- #pragma warning(pop)
- #endif
- } // namespace detail
- } // namespace algorithm
- } // namespace boost
- #endif // BOOST_STRING_FIND_FORMAT_STORE_DETAIL_HPP