From f9e3a786f80c36954c1cb0c77f96cda0314357ca Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 23 Dec 2016 12:20:27 -0500 Subject: [PATCH] include/denc: parameterize string by allocator Signed-off-by: Sage Weil --- src/include/denc.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/include/denc.h b/src/include/denc.h index e137ee47f5e..3ae4d6eab3c 100644 --- a/src/include/denc.h +++ b/src/include/denc.h @@ -520,20 +520,25 @@ inline typename std::enable_if -struct denc_traits { +template +struct denc_traits,A>> { enum { supported = true }; enum { featured = false }; enum { bounded = false }; - static void bound_encode(const std::string& s, size_t& p, uint64_t f=0) { + static void bound_encode(const std::basic_string,A>& s, size_t& p, + uint64_t f=0) { p += sizeof(uint32_t) + s.size(); } - static void encode(const std::string& s, buffer::list::contiguous_appender& p, + static void encode(const std::basic_string,A>& s, + buffer::list::contiguous_appender& p, uint64_t f=0) { ::denc((uint32_t)s.size(), p); memcpy(p.get_pos_add(s.size()), s.data(), s.size()); } - static void decode(std::string& s, buffer::ptr::iterator& p, uint64_t f=0) { + static void decode(std::basic_string,A>& s, + buffer::ptr::iterator& p, + uint64_t f=0) { uint32_t len; ::denc(len, p); s.clear(); -- 2.39.5