From fb2e0f734e075c7531f1df0b02eb3998bef812fd Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 23 Feb 2023 18:13:01 +0100 Subject: [PATCH] lib/fmt/ToBuffer: add overload with StringBuffer parameter --- src/lib/fmt/ToBuffer.hxx | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/lib/fmt/ToBuffer.hxx b/src/lib/fmt/ToBuffer.hxx index cba9a40703..563223dda1 100644 --- a/src/lib/fmt/ToBuffer.hxx +++ b/src/lib/fmt/ToBuffer.hxx @@ -11,17 +11,40 @@ #endif template -[[nodiscard]] [[gnu::pure]] -auto -VFmtBuffer(fmt::string_view format_str, fmt::format_args args) noexcept +StringBuffer & +VFmtToBuffer(StringBuffer &buffer, + fmt::string_view format_str, fmt::format_args args) noexcept { - StringBuffer buffer; auto [p, _] = fmt::vformat_to_n(buffer.begin(), buffer.capacity() - 1, format_str, args); *p = 0; return buffer; } +template +[[nodiscard]] [[gnu::pure]] +auto +VFmtBuffer(fmt::string_view format_str, fmt::format_args args) noexcept +{ + StringBuffer buffer; + return VFmtToBuffer(buffer, format_str, args); +} + +template +StringBuffer & +FmtToBuffer(StringBuffer &buffer, + const S &format_str, Args&&... args) noexcept +{ +#if FMT_VERSION >= 90000 + return VFmtToBuffer(buffer, format_str, + fmt::make_format_args(args...)); +#else + return VFmtToBuffer(buffer, fmt::to_string_view(format_str), + fmt::make_args_checked(format_str, + args...)); +#endif +} + template [[nodiscard]] [[gnu::pure]] auto