From 0d4013536aae71daa774895715af2baf3309708a Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Thu, 27 Sep 2018 17:00:15 -0700 Subject: [PATCH] ircd::util: Add overload to ircd::string() to pubsetbuf() a provided buffer. --- include/ircd/util/string.h | 13 +++++++++++++ include/ircd/util/util.h | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/ircd/util/string.h b/include/ircd/util/string.h index c458bdecc..45ffc2037 100644 --- a/include/ircd/util/string.h +++ b/include/ircd/util/string.h @@ -32,6 +32,19 @@ string(const T &s) return ss.str(); } +/// Alternative to ircd::string() using a provided buffer for the +/// std::stringstream to avoid allocating one. +template +auto +string(const mutable_buffer &buf, + const T &s) +{ + std::stringstream ss; + pubsetbuf(ss, buf); + ss << s; + return ss.str(); +} + inline auto string(const char *const &buf, const size_t &size) diff --git a/include/ircd/util/util.h b/include/ircd/util/util.h index c56cb273d..932f930dd 100644 --- a/include/ircd/util/util.h +++ b/include/ircd/util/util.h @@ -46,8 +46,8 @@ namespace ircd #include "tuple.h" #include "timer.h" #include "life_guard.h" -#include "string.h" #include "pubsetbuf.h" +#include "string.h" #include "pointers.h" #include "iterator.h" #include "nothrow.h"