From 11a14db286e874bed34e1843d13e1d5c4caa1a45 Mon Sep 17 00:00:00 2001 From: Victor Zverovich Date: Sun, 30 May 2021 07:33:02 -0700 Subject: [PATCH] Update format_to taking a buffer and remove undocumented vformat_to overload --- include/fmt/format.h | 25 +++++++------------------ include/fmt/xchar.h | 10 ++++++++++ test/format-impl-test.cc | 2 +- test/format-test.cc | 2 +- test/wchar-test.cc | 6 ------ 5 files changed, 19 insertions(+), 26 deletions(-) diff --git a/include/fmt/format.h b/include/fmt/format.h index 88a8a1a6..633fa119 100644 --- a/include/fmt/format.h +++ b/include/fmt/format.h @@ -2795,25 +2795,14 @@ template ::value)> inline std::string format(const Locale& loc, format_string fmt, T&&... args) { - return vformat(loc, fmt, fmt::make_format_args(args...)); + return vformat(loc, string_view(fmt), fmt::make_format_args(args...)); } -template , - FMT_ENABLE_IF(detail::is_string::value)> -inline void vformat_to( - detail::buffer& buf, const S& format_str, - basic_format_args)> args) { - return detail::vformat_to(buf, to_string_view(format_str), args); -} - -template ::value)> -inline auto format_to(basic_memory_buffer& buf, - const S& format_str, Args&&... args) -> - typename buffer_context::iterator { - const auto& vargs = fmt::make_args_checked(format_str, args...); - detail::vformat_to(buf, to_string_view(format_str), vargs); - return detail::buffer_appender(buf); +template +inline auto format_to(basic_memory_buffer& buf, + format_string fmt, T&&... args) -> appender { + detail::vformat_to(buf, string_view(fmt), fmt::make_format_args(args...)); + return appender(buf); } template OutputIt { using detail::get_buffer; auto&& buf = get_buffer(out); - detail::vformat_to(buf, string_view(fmt), args, detail::locale_ref(loc)); + detail::vformat_to(buf, fmt, args, detail::locale_ref(loc)); return detail::get_iterator(buf); } diff --git a/include/fmt/xchar.h b/include/fmt/xchar.h index 835b87eb..7f07b6ea 100644 --- a/include/fmt/xchar.h +++ b/include/fmt/xchar.h @@ -111,6 +111,16 @@ inline auto format_to(OutputIt out, const S& fmt, Args&&... args) -> OutputIt { return vformat_to(out, to_string_view(fmt), vargs); } +template ::value)> +FMT_DEPRECATED auto format_to(basic_memory_buffer& buf, + const S& format_str, Args&&... args) -> + typename buffer_context::iterator { + const auto& vargs = fmt::make_args_checked(format_str, args...); + detail::vformat_to(buf, to_string_view(format_str), vargs); + return detail::buffer_appender(buf); +} + template , FMT_ENABLE_IF(detail::is_output_iterator::value&& diff --git a/test/format-impl-test.cc b/test/format-impl-test.cc index 877111af..d3333cd2 100644 --- a/test/format-impl-test.cc +++ b/test/format-impl-test.cc @@ -308,7 +308,7 @@ TEST(format_impl_test, format_error_code) { std::string msg = "error 42", sep = ": "; { fmt::memory_buffer buffer; - format_to(buffer, "garbage"); + format_to(fmt::appender(buffer), "garbage"); fmt::detail::format_error_code(buffer, 42, "test"); EXPECT_EQ("test: " + msg, to_string(buffer)); } diff --git a/test/format-test.cc b/test/format-test.cc index e271227e..83efd054 100644 --- a/test/format-test.cc +++ b/test/format-test.cc @@ -1664,7 +1664,7 @@ TEST(format_test, join_bytes) { std::string vformat_message(int id, const char* format, fmt::format_args args) { fmt::memory_buffer buffer; format_to(buffer, "[{}] ", id); - vformat_to(buffer, format, args); + vformat_to(fmt::appender(buffer), format, args); return to_string(buffer); } diff --git a/test/wchar-test.cc b/test/wchar-test.cc index 89556f18..4569a11a 100644 --- a/test/wchar-test.cc +++ b/test/wchar-test.cc @@ -42,12 +42,6 @@ TEST(wchar_test, vformat_to) { EXPECT_EQ(L"42", w); } -TEST(wchar_test, format_to_memory_buffer) { - auto buf = fmt::wmemory_buffer(); - fmt::format_to(buf, L"{}", L"foo"); - EXPECT_EQ(L"foo", to_string(buf)); -} - TEST(format_test, wide_format_to_n) { wchar_t buffer[4]; buffer[3] = L'x';