]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
include/denc: parameterize string by allocator
authorSage Weil <sage@redhat.com>
Fri, 23 Dec 2016 17:20:27 +0000 (12:20 -0500)
committerSage Weil <sage@redhat.com>
Fri, 13 Jan 2017 16:48:03 +0000 (11:48 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/include/denc.h

index e137ee47f5e3d8d1456421de67328abdda4c4080..3ae4d6eab3c9691c3287b389d08d127e9b44e115 100644 (file)
@@ -520,20 +520,25 @@ inline typename std::enable_if<traits::supported != 0 &&
 //
 // std::string
 //
-template<>
-struct denc_traits<std::string> {
+template<typename A>
+struct denc_traits<std::basic_string<char,std::char_traits<char>,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<char,
+                          std::char_traits<char>,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<char,std::char_traits<char>,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<char,std::char_traits<char>,A>& s,
+                    buffer::ptr::iterator& p,
+                    uint64_t f=0) {
     uint32_t len;
     ::denc(len, p);
     s.clear();