X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Finclude%2Fencoding_btree.h;fp=src%2Fceph%2Fsrc%2Finclude%2Fencoding_btree.h;h=19faf4b838962b21774ddadcb0754f1522566f67;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/src/include/encoding_btree.h b/src/ceph/src/include/encoding_btree.h new file mode 100644 index 0000000..19faf4b --- /dev/null +++ b/src/ceph/src/include/encoding_btree.h @@ -0,0 +1,60 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#ifndef CEPH_INCLUDE_ENCODING_BTREE_H +#define CEPH_INCLUDE_ENCODING_BTREE_H + +#include "include/cpp-btree/btree_map.h" + +template +inline void encode(const btree::btree_map& m, bufferlist& bl) +{ + __u32 n = (__u32)(m.size()); + encode(n, bl); + for (typename btree::btree_map::const_iterator p = m.begin(); p != m.end(); ++p) { + encode(p->first, bl); + encode(p->second, bl); + } +} +template +inline void encode(const btree::btree_map& m, bufferlist& bl, uint64_t features) +{ + __u32 n = (__u32)(m.size()); + encode(n, bl); + for (typename btree::btree_map::const_iterator p = m.begin(); p != m.end(); ++p) { + encode(p->first, bl, features); + encode(p->second, bl, features); + } +} +template +inline void decode(btree::btree_map& m, bufferlist::iterator& p) +{ + __u32 n; + decode(n, p); + m.clear(); + while (n--) { + T k; + decode(k, p); + decode(m[k], p); + } +} +template +inline void encode_nohead(const btree::btree_map& m, bufferlist& bl) +{ + for (typename btree::btree_map::const_iterator p = m.begin(); p != m.end(); ++p) { + encode(p->first, bl); + encode(p->second, bl); + } +} +template +inline void decode_nohead(int n, btree::btree_map& m, bufferlist::iterator& p) +{ + m.clear(); + while (n--) { + T k; + decode(k, p); + decode(m[k], p); + } +} + +#endif