static void write_object(Writer<StringBuffer>& writer, object_t* object) { switch (object->type) { case type_nil: writer.Null(); break; case type_bool: writer.Bool(object->b); break; case type_double: writer.Double(object->d); break; case type_int: writer.Int64(object->i); break; case type_uint: writer.Uint64(object->u); break; case type_str: writer.String(object->str, object->l); break; case type_array: writer.StartArray(); for (size_t i = 0; i < object->l; ++i) write_object(writer, object->children + i); writer.EndArray(); break; case type_map: writer.StartObject(); for (size_t i = 0; i < object->l; ++i) { writer.Key(object->children[i * 2].str, object->children[i * 2].l); write_object(writer, object->children + i * 2 + 1); } writer.EndObject(); break; default: assert(0); break; } }
void serialize(Writer& writer) override { writer.StartObject(); writer.Key("halt"); if(new_halt_ > old_halt_) serialized_halt_ = new_halt_ - old_halt_; writer.Uint64(serialized_halt_); writer.Key("total"); if(new_total_ > old_total_) serialized_total_ = new_total_ - old_total_; writer.Uint64(serialized_total_); writer.Key("interval"); writer.Double(interval_.count()); writer.EndObject(); }
void operator()(Writer& w, utility::uint64_t i) const { w.Uint64(i); }
void stringify(Writer& writer, uint64_t v) { writer.Uint64(v); }