100 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			100 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | /* | ||
|  |  * | ||
|  |  * Copyright (c) 1998-2009 | ||
|  |  * John Maddock | ||
|  |  * | ||
|  |  * Use, modification and distribution are 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) | ||
|  |  * | ||
|  |  */ | ||
|  | 
 | ||
|  |  /* | ||
|  |   *   LOCATION:    see http://www.boost.org for most recent version. | ||
|  |   *   FILE         regex_format.hpp | ||
|  |   *   VERSION      see <boost/version.hpp> | ||
|  |   *   DESCRIPTION: Provides formatting output routines for search and replace | ||
|  |   *                operations.  Note this is an internal header file included | ||
|  |   *                by regex.hpp, do not include on its own. | ||
|  |   */ | ||
|  | 
 | ||
|  | #ifndef BOOST_REGEX_V4_REGEX_REPLACE_HPP | ||
|  | #define BOOST_REGEX_V4_REGEX_REPLACE_HPP | ||
|  | 
 | ||
|  | 
 | ||
|  | namespace boost{ | ||
|  | 
 | ||
|  | #ifdef BOOST_MSVC | ||
|  | #pragma warning(push) | ||
|  | #pragma warning(disable: 4103) | ||
|  | #endif | ||
|  | #ifdef BOOST_HAS_ABI_HEADERS | ||
|  | #  include BOOST_ABI_PREFIX | ||
|  | #endif | ||
|  | #ifdef BOOST_MSVC | ||
|  | #pragma warning(pop) | ||
|  | #endif | ||
|  | 
 | ||
|  | template <class OutputIterator, class BidirectionalIterator, class traits, class charT, class Formatter> | ||
|  | OutputIterator regex_replace(OutputIterator out, | ||
|  |                          BidirectionalIterator first, | ||
|  |                          BidirectionalIterator last, | ||
|  |                          const basic_regex<charT, traits>& e,  | ||
|  |                          Formatter fmt,  | ||
|  |                          match_flag_type flags = match_default) | ||
|  | { | ||
|  |    regex_iterator<BidirectionalIterator, charT, traits> i(first, last, e, flags); | ||
|  |    regex_iterator<BidirectionalIterator, charT, traits> j; | ||
|  |    if(i == j) | ||
|  |    { | ||
|  |       if(!(flags & regex_constants::format_no_copy)) | ||
|  |          out = BOOST_REGEX_DETAIL_NS::copy(first, last, out); | ||
|  |    } | ||
|  |    else | ||
|  |    { | ||
|  |       BidirectionalIterator last_m(first); | ||
|  |       while(i != j) | ||
|  |       { | ||
|  |          if(!(flags & regex_constants::format_no_copy)) | ||
|  |             out = BOOST_REGEX_DETAIL_NS::copy(i->prefix().first, i->prefix().second, out);  | ||
|  |          out = i->format(out, fmt, flags, e); | ||
|  |          last_m = (*i)[0].second; | ||
|  |          if(flags & regex_constants::format_first_only) | ||
|  |             break; | ||
|  |          ++i; | ||
|  |       } | ||
|  |       if(!(flags & regex_constants::format_no_copy)) | ||
|  |          out = BOOST_REGEX_DETAIL_NS::copy(last_m, last, out); | ||
|  |    } | ||
|  |    return out; | ||
|  | } | ||
|  | 
 | ||
|  | template <class traits, class charT, class Formatter> | ||
|  | std::basic_string<charT> regex_replace(const std::basic_string<charT>& s, | ||
|  |                          const basic_regex<charT, traits>& e,  | ||
|  |                          Formatter fmt, | ||
|  |                          match_flag_type flags = match_default) | ||
|  | { | ||
|  |    std::basic_string<charT> result; | ||
|  |    BOOST_REGEX_DETAIL_NS::string_out_iterator<std::basic_string<charT> > i(result); | ||
|  |    regex_replace(i, s.begin(), s.end(), e, fmt, flags); | ||
|  |    return result; | ||
|  | } | ||
|  | 
 | ||
|  | #ifdef BOOST_MSVC | ||
|  | #pragma warning(push) | ||
|  | #pragma warning(disable: 4103) | ||
|  | #endif | ||
|  | #ifdef BOOST_HAS_ABI_HEADERS | ||
|  | #  include BOOST_ABI_SUFFIX | ||
|  | #endif | ||
|  | #ifdef BOOST_MSVC | ||
|  | #pragma warning(pop) | ||
|  | #endif | ||
|  | 
 | ||
|  | } // namespace boost | ||
|  | 
 | ||
|  | #endif  // BOOST_REGEX_V4_REGEX_REPLACE_HPP | ||
|  | 
 | ||
|  | 
 |