From 15370d2f54f9a6a286897715d74ffbf3bdf3e02e Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 4 Jun 2021 14:29:50 +0200 Subject: Make regex_replace_match_results() part of public API --- libbutl/regex.ixx | 9 +++++++++ libbutl/regex.mxx | 14 ++++++++++++++ libbutl/regex.txx | 5 +---- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/libbutl/regex.ixx b/libbutl/regex.ixx index 805acd1..f55cb07 100644 --- a/libbutl/regex.ixx +++ b/libbutl/regex.ixx @@ -38,4 +38,13 @@ LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason. return regex_replace_parse ( s, std::basic_string::traits_type::length (s), f); } + + template + inline std::basic_string + regex_replace_match_results ( + const std::match_results::const_iterator>& m, + const std::basic_string& fmt) + { + return regex_replace_match_results (m, fmt.c_str (), fmt.size ()); + } } diff --git a/libbutl/regex.mxx b/libbutl/regex.mxx index b5490b1..b1ba1b9 100644 --- a/libbutl/regex.mxx +++ b/libbutl/regex.mxx @@ -95,6 +95,20 @@ LIBBUTL_MODEXPORT namespace butl const std::basic_regex&, const std::basic_string& fmt); + // As above but using match_results. + // + template + std::basic_string + regex_replace_match_results ( + const std::match_results::const_iterator>&, + const std::basic_string& fmt); + + template + std::basic_string + regex_replace_match_results ( + const std::match_results::const_iterator>&, + const C* fmt, std::size_t fmt_n); + // Parse the '///' replacement string into the regex/format // pair. Other character can be used as a delimiter instead of '/'. Throw // std::invalid_argument or std::regex_error on parsing error. diff --git a/libbutl/regex.txx b/libbutl/regex.txx index aa845be..8fe5308 100644 --- a/libbutl/regex.txx +++ b/libbutl/regex.txx @@ -3,13 +3,11 @@ LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason. { - // Replace the regex match results using the format string. - // template std::basic_string regex_replace_match_results ( const std::match_results::const_iterator>& m, - const std::basic_string& fmt) + const C* fmt, std::size_t n) { using namespace std; @@ -60,7 +58,6 @@ LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason. } }; - size_t n (fmt.size ()); for (size_t i (0); i < n; ++i) { C c (fmt[i]); -- cgit v1.1