From 1e901bb67dcb74832296d1e5d83ae4b1dd76aebb Mon Sep 17 00:00:00 2001 From: sageweil Date: Mon, 26 Mar 2007 20:41:56 +0000 Subject: [PATCH] * buffer: deque map> git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1305 29311d96-e01e-0410-9327-a35deaab8ce9 --- .../aleung/security1/ceph/include/buffer.h | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/branches/aleung/security1/ceph/include/buffer.h b/branches/aleung/security1/ceph/include/buffer.h index 4634c2f5b590e..9c6576deeb415 100644 --- a/branches/aleung/security1/ceph/include/buffer.h +++ b/branches/aleung/security1/ceph/include/buffer.h @@ -799,6 +799,7 @@ inline void _decode(bufferlist& s, bufferlist& bl, int& off) #include +#include #include #include #include @@ -889,6 +890,37 @@ inline void _decode(std::set& s, bufferlist& bl, int& off) assert(s.size() == (unsigned)n); } +// deque +template +inline void _encode(const std::deque& s, bufferlist& bl) +{ + int n = s.size(); + bl.append((char*)&n, sizeof(n)); + for (typename std::deque::const_iterator it = s.begin(); + it != s.end(); + it++) { + T v = *it; + bl.append((char*)&v, sizeof(v)); + n--; + } + assert(n==0); +} +template +inline void _decode(std::deque& s, bufferlist& bl, int& off) +{ + s.clear(); + int n; + bl.copy(off, sizeof(n), (char*)&n); + off += sizeof(n); + for (int i=0; i template inline void _encode(std::vector& s, bufferlist& bl) @@ -1141,6 +1173,38 @@ inline void _decode(std::map >& s, bufferlist& bl, int& off) assert(s.size() == (unsigned)n); } +// map> +template +inline void _encode(const std::map >& s, bufferlist& bl) +{ + int n = s.size(); + bl.append((char*)&n, sizeof(n)); + for (typename std::map >::const_iterator it = s.begin(); + it != s.end(); + it++) { + T k = it->first; + bl.append((char*)&k, sizeof(k)); + ::_encode(it->second, bl); + n--; + } + assert(n==0); +} +template +inline void _decode(std::map >& s, bufferlist& bl, int& off) +{ + s.clear(); + int n; + bl.copy(off, sizeof(n), (char*)&n); + off += sizeof(n); + for (int i=0; i template -- 2.39.5