1 //  Boost string_algo library formatter_regex.hpp header file  ---------------------------//
2 
3 //  Copyright Pavol Droba 2002-2003.
4 //
5 // Distributed under the Boost Software License, Version 1.0.
6 //    (See accompanying file LICENSE_1_0.txt or copy at
7 //          http://www.boost.org/LICENSE_1_0.txt)
8 
9 //  See http://www.boost.org/ for updates, documentation, and revision history.
10 
11 #ifndef BOOST_STRING_FORMATTER_REGEX_DETAIL_HPP
12 #define BOOST_STRING_FORMATTER_REGEX_DETAIL_HPP
13 
14 #include <boost/algorithm/string/config.hpp>
15 #include <string>
16 #include <boost/regex.hpp>
17 #include <boost/algorithm/string/detail/finder_regex.hpp>
18 
19 namespace boost {
20     namespace algorithm {
21         namespace detail {
22 
23 //  regex format functor -----------------------------------------//
24 
25             // regex format functor
26             template<typename StringT>
27             struct regex_formatF
28             {
29             private:
30                 typedef StringT result_type;
31                 typedef BOOST_STRING_TYPENAME StringT::value_type char_type;
32 
33             public:
34                 // Construction
regex_formatFboost::algorithm::detail::regex_formatF35                 regex_formatF( const StringT& Fmt, match_flag_type Flags=format_default ) :
36                     m_Fmt(Fmt), m_Flags( Flags ) {}
37 
38                 template<typename InputIteratorT>
operator ()boost::algorithm::detail::regex_formatF39                 result_type operator()(
40                     const regex_search_result<InputIteratorT>& Replace ) const
41                 {
42                     if ( Replace.empty() )
43                     {
44                         return result_type();
45                     }
46                     else
47                     {
48                         return Replace.match_results().format( m_Fmt, m_Flags );
49                     }
50                 }
51             private:
52                 const StringT& m_Fmt;
53                 match_flag_type m_Flags;
54             };
55 
56 
57         } // namespace detail
58     } // namespace algorithm
59 } // namespace boost
60 
61 #endif  // BOOST_STRING_FORMATTER_DETAIL_HPP
62