//===-- TraceIntelPTJSONStructs.cpp ---------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "TraceIntelPTJSONStructs.h" #include "llvm/Support/JSON.h" #include using namespace lldb; using namespace lldb_private; using namespace lldb_private::trace_intel_pt; using namespace llvm; namespace llvm { namespace json { bool fromJSON(const Value &value, JSONTraceIntelPTSettings &plugin_settings, Path path) { ObjectMapper o(value, path); return o && o.map("cpuInfo", plugin_settings.cpuInfo) && fromJSON(value, (JSONTracePluginSettings &)plugin_settings, path); } bool fromJSON(const json::Value &value, JSONTraceIntelPTCPUInfo &cpu_info, Path path) { ObjectMapper o(value, path); return o && o.map("vendor", cpu_info.vendor) && o.map("family", cpu_info.family) && o.map("model", cpu_info.model) && o.map("stepping", cpu_info.stepping); } Value toJSON(const JSONTraceIntelPTCPUInfo &cpu_info) { return Value(Object{{"family", cpu_info.family}, {"model", cpu_info.model}, {"stepping", cpu_info.stepping}, {"vendor", cpu_info.vendor}}); } llvm::json::Value toJSON(const JSONTraceIntelPTTrace &trace) { llvm::json::Object json_trace; json_trace["type"] = trace.type; json_trace["cpuInfo"] = toJSON(trace.cpuInfo); return std::move(json_trace); } llvm::json::Value toJSON(const JSONTraceIntelPTSession &session) { llvm::json::Object json_session; json_session["trace"] = toJSON(session.ipt_trace); json_session["processes"] = toJSON(session.session_base); return std::move(json_session); } } // namespace json } // namespace llvm