From a33895e05a002d9d03e65172097b3b4dfc311061 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 22 Jul 2015 11:33:19 -0400 Subject: [PATCH] include/encoding: handle set<> with comparator Signed-off-by: Sage Weil --- src/include/encoding.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/include/encoding.h b/src/include/encoding.h index 1abdcf194d233..a4b5d03d33e3f 100644 --- a/src/include/encoding.h +++ b/src/include/encoding.h @@ -453,6 +453,27 @@ inline void decode(std::set& s, bufferlist::iterator& p) } } +template +inline void encode(const std::set& s, bufferlist& bl) +{ + __u32 n = (__u32)(s.size()); + encode(n, bl); + for (typename std::set::const_iterator p = s.begin(); p != s.end(); ++p) + encode(*p, bl); +} +template +inline void decode(std::set& s, bufferlist::iterator& p) +{ + __u32 n; + decode(n, p); + s.clear(); + while (n--) { + T v; + decode(v, p); + s.insert(v); + } +} + template inline void encode_nohead(const std::set& s, bufferlist& bl) { -- 2.39.5