| 244 | } |
| 245 | |
| 246 | bool JsonCppSerializer::object( |
| 247 | const std::function<bool(dap::FieldSerializer*)>& cb) { |
| 248 | struct FS : public FieldSerializer { |
| 249 | Json::Value* const json; |
| 250 | |
| 251 | FS(Json::Value* json) : json(json) {} |
| 252 | bool field(const std::string& name, const SerializeFunc& cb) override { |
| 253 | JsonCppSerializer s(&(*json)[name]); |
| 254 | auto res = cb(&s); |
| 255 | if (s.removed) { |
| 256 | json->removeMember(name); |
| 257 | } |
| 258 | return res; |
| 259 | } |
| 260 | }; |
| 261 | |
| 262 | *json = Json::Value(Json::objectValue); |
| 263 | FS fs{json}; |
| 264 | return cb(&fs); |
| 265 | } |
| 266 | |
| 267 | void JsonCppSerializer::remove() { |
| 268 | removed = true; |