mirror of
https://github.com/ceph/ceph
synced 2025-01-20 10:01:45 +00:00
ceph_json: add decode / encoder for multimap
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
This commit is contained in:
parent
4e6a66b55e
commit
55594623e2
@ -185,6 +185,23 @@ void decode_json_obj(map<K, V>& m, JSONObj *obj)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class K, class V>
|
||||||
|
void decode_json_obj(multimap<K, V>& m, JSONObj *obj)
|
||||||
|
{
|
||||||
|
m.clear();
|
||||||
|
|
||||||
|
JSONObjIter iter = obj->find_first();
|
||||||
|
|
||||||
|
for (; !iter.end(); ++iter) {
|
||||||
|
K key;
|
||||||
|
V val;
|
||||||
|
JSONObj *o = *iter;
|
||||||
|
JSONDecoder::decode_json("key", key, o);
|
||||||
|
JSONDecoder::decode_json("val", val, o);
|
||||||
|
m.insert(make_pair<K, V>(key, val));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
template<class C>
|
template<class C>
|
||||||
void decode_json_obj(C& container, void (*cb)(C&, JSONObj *obj), JSONObj *obj)
|
void decode_json_obj(C& container, void (*cb)(C&, JSONObj *obj), JSONObj *obj)
|
||||||
{
|
{
|
||||||
@ -302,6 +319,18 @@ static void encode_json(const char *name, const std::map<K, V>& m, ceph::Formatt
|
|||||||
f->close_section();
|
f->close_section();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class K, class V>
|
||||||
|
static void encode_json(const char *name, const std::multimap<K, V>& m, ceph::Formatter *f)
|
||||||
|
{
|
||||||
|
f->open_array_section(name);
|
||||||
|
for (typename std::multimap<K, V>::const_iterator i = m.begin(); i != m.end(); ++i) {
|
||||||
|
f->open_object_section("entry");
|
||||||
|
encode_json("key", i->first, f);
|
||||||
|
encode_json("val", i->second, f);
|
||||||
|
f->close_section();
|
||||||
|
}
|
||||||
|
f->close_section();
|
||||||
|
}
|
||||||
template<class T>
|
template<class T>
|
||||||
static void encode_json(const char *name, const std::list<T>& l, ceph::Formatter *f)
|
static void encode_json(const char *name, const std::list<T>& l, ceph::Formatter *f)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user