void SerializeMatch(Writer &writer, const Match &match) { writer.StartObject(); writer.Key("startEA"); writer.Uint(match.getStartEA().getValue()); writer.Key("endEA"); writer.Uint(match.getEndEA().getValue()); writer.Key("patternName"); writer.String(match.getPatternName()); writer.EndObject(); }
void stringify(Writer& writer, const Function<T>& f) { writer.StartObject(); writer.Key("base"); writer.Double(f.getBase()); writer.Key("stops"); writer.StartArray(); for (const auto& stop : f.getStops()) { writer.StartArray(); writer.Double(stop.first); stringify(writer, stop.second); writer.EndArray(); } writer.EndArray(); writer.EndObject(); }
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 stringify(Writer& writer, const std::unordered_map<std::string, T>& m) { writer.StartObject(); for (const auto& p : m) { writer.Key(p.first.data(), static_cast<unsigned>(p.first.size())); stringify(writer, p.second); } writer.EndObject(); }
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 serialize(Writer& writer) override { writer.StartObject(); auto samples = ::StackSampler::results(sample_size_); auto total = ::StackSampler::samples_total(); auto asleep = ::StackSampler::samples_asleep(); writer.Key("active"); double active = total / (double)(total+asleep) * 100.0; writer.Double(active); writer.Key("asleep"); double asleep_perc = asleep / (double)(total+asleep) * 100.0; writer.Double(asleep_perc); writer.Key("samples"); writer.StartArray(); for (auto& sa : samples) { writer.StartObject(); writer.Key("address"); writer.Uint((uintptr_t)sa.addr); writer.Key("name"); writer.String(sa.name); writer.Key("total"); writer.Uint(sa.samp); // percentage of total samples float perc = sa.samp / (float)total * 100.0f; writer.Key("percent"); writer.Double(perc); writer.EndObject(); } writer.EndArray(); writer.EndObject(); }
void SerializeMatchPersistence(Writer &writer, const MatchPersistence &matchPersistence) { writer.StartObject(); writer.Key("executableName"); writer.String(matchPersistence.getExectuableName()); writer.Key("matcherName"); writer.String(matchPersistence.getMatcherName()); writer.Key("executableArchitecture"); writer.String(matchPersistence.getExecutableArchitecture()); writer.Key("realTime"); writer.Double(matchPersistence.getRealTime()); writer.Key("cpuTime"); writer.Double(matchPersistence.getCpuTime()); writer.Key("matches"); writer.StartArray(); for (auto &match : matchPersistence.getMatches()) { SerializeMatch(writer,*match); } writer.EndArray(); writer.EndObject(); }
void stringify(Writer& writer, const PropertyValue<T>& value) { if (value) { writer.Key(Property::key); stringify(writer, value); } }