]> git.proxmox.com Git - ceph.git/blame - ceph/src/include/btree_map.h
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / include / btree_map.h
CommitLineData
7c673cae
FG
1// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2// vim: ts=8 sw=2 smarttab
3
94b18763
FG
4#ifndef CEPH_INCLUDE_BTREE_MAP_H
5#define CEPH_INCLUDE_BTREE_MAP_H
7c673cae 6
94b18763 7#include "include/cpp-btree/btree.h"
7c673cae 8#include "include/cpp-btree/btree_map.h"
11fdf7f2 9#include "include/ceph_assert.h" // cpp-btree uses system assert, blech
94b18763 10#include "include/encoding.h"
7c673cae
FG
11
12template<class T, class U>
13inline void encode(const btree::btree_map<T,U>& m, bufferlist& bl)
14{
15 __u32 n = (__u32)(m.size());
16 encode(n, bl);
17 for (typename btree::btree_map<T,U>::const_iterator p = m.begin(); p != m.end(); ++p) {
18 encode(p->first, bl);
19 encode(p->second, bl);
20 }
21}
22template<class T, class U>
23inline void encode(const btree::btree_map<T,U>& m, bufferlist& bl, uint64_t features)
24{
25 __u32 n = (__u32)(m.size());
26 encode(n, bl);
27 for (typename btree::btree_map<T,U>::const_iterator p = m.begin(); p != m.end(); ++p) {
28 encode(p->first, bl, features);
29 encode(p->second, bl, features);
30 }
31}
32template<class T, class U>
11fdf7f2 33inline void decode(btree::btree_map<T,U>& m, bufferlist::const_iterator& p)
7c673cae
FG
34{
35 __u32 n;
36 decode(n, p);
37 m.clear();
38 while (n--) {
39 T k;
40 decode(k, p);
41 decode(m[k], p);
42 }
43}
44template<class T, class U>
45inline void encode_nohead(const btree::btree_map<T,U>& m, bufferlist& bl)
46{
47 for (typename btree::btree_map<T,U>::const_iterator p = m.begin(); p != m.end(); ++p) {
48 encode(p->first, bl);
49 encode(p->second, bl);
50 }
51}
52template<class T, class U>
11fdf7f2 53inline void decode_nohead(int n, btree::btree_map<T,U>& m, bufferlist::const_iterator& p)
7c673cae
FG
54{
55 m.clear();
56 while (n--) {
57 T k;
58 decode(k, p);
59 decode(m[k], p);
60 }
61}
62
63#endif