You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
99 lines
2.8 KiB
99 lines
2.8 KiB
/* |
|
* |
|
* 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 = re_detail::copy(first, last, out); |
|
} |
|
else |
|
{ |
|
BidirectionalIterator last_m(first); |
|
while(i != j) |
|
{ |
|
if(!(flags & regex_constants::format_no_copy)) |
|
out = re_detail::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 = re_detail::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; |
|
re_detail::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 |
|
|
|
|
|
|