From 5aa81b9755c2dbed3da2159393058005a5730b3d Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Thu, 19 Nov 2015 10:59:30 -0800 Subject: [PATCH] ceph_json: add deque encode/decode Signed-off-by: Yehuda Sadeh --- src/common/ceph_json.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/common/ceph_json.h b/src/common/ceph_json.h index 35b6dae405041..a812d7af1a267 100644 --- a/src/common/ceph_json.h +++ b/src/common/ceph_json.h @@ -164,6 +164,21 @@ void decode_json_obj(list& l, JSONObj *obj) } } +template +void decode_json_obj(deque& l, JSONObj *obj) +{ + l.clear(); + + JSONObjIter iter = obj->find_first(); + + for (; !iter.end(); ++iter) { + T val; + JSONObj *o = *iter; + decode_json_obj(val, o); + l.push_back(val); + } +} + template void decode_json_obj(set& l, JSONObj *obj) { @@ -342,6 +357,14 @@ static void encode_json(const char *name, const std::list& l, ceph::Formatter f->close_section(); } template +static void encode_json(const char *name, const std::deque& l, ceph::Formatter *f) +{ + f->open_array_section(name); + for (typename std::deque::const_iterator iter = l.begin(); iter != l.end(); ++iter) { + encode_json("obj", *iter, f); + } + f->close_section(); +}template static void encode_json(const char *name, const std::set& l, ceph::Formatter *f) { f->open_array_section(name); -- 2.39.5