================ @@ -44,4 +44,223 @@ bool fromJSON(const json::Value &Params, Source &S, json::Path P) { O.mapOptional("sourceReference", S.sourceReference); } +json::Value toJSON(const ExceptionBreakpointsFilter &EBF) { + json::Object result{{"filter", EBF.filter}, {"label", EBF.label}}; + + if (EBF.description) + result.insert({"description", *EBF.description}); + if (EBF.defaultState) + result.insert({"default", *EBF.defaultState}); + if (EBF.supportsCondition) + result.insert({"supportsCondition", *EBF.supportsCondition}); + if (EBF.conditionDescription) + result.insert({"conditionDescription", *EBF.conditionDescription}); + + return result; +} + +json::Value toJSON(const ColumnDescriptor::Type &T) { + switch (T) { + case ColumnDescriptor::Type::String: + return "string"; + case ColumnDescriptor::Type::Number: + return "number"; + case ColumnDescriptor::Type::Boolean: + return "boolean"; + case ColumnDescriptor::Type::Timestamp: + return "unixTimestampUTC"; + } +} + +json::Value toJSON(const ColumnDescriptor &CD) { + json::Object result{{"attributeName", CD.attributeName}, {"label", CD.label}}; + + if (CD.format) + result.insert({"format", *CD.format}); + if (CD.type) + result.insert({"type", *CD.type}); + if (CD.width) + result.insert({"width", *CD.width}); + + return result; +} + +json::Value toJSON(const ChecksumAlgorithm &CA) { + switch (CA) { + case ChecksumAlgorithm::md5: + return "MD5"; + case ChecksumAlgorithm::sha1: + return "SHA1"; + case ChecksumAlgorithm::sha256: + return "SHA256"; + case ChecksumAlgorithm::timestamp: + return "timestamp"; + } +} + +json::Value toJSON(const BreakpointModeApplicability &BMA) { + switch (BMA) { + case BreakpointModeApplicability::source: + return "source"; + case BreakpointModeApplicability::exception: + return "exception"; + case BreakpointModeApplicability::data: + return "data"; + case BreakpointModeApplicability::instruction: + return "instruction"; + } +} + +json::Value toJSON(const BreakpointMode &BM) { + json::Object result{ + {"mode", BM.mode}, + {"label", BM.label}, + {"appliesTo", BM.appliesTo}, + }; + + if (BM.description) + result.insert({"description", *BM.description}); + + return result; +} + +json::Value toJSON(const Capabilities &C) { + json::Object result; + + for (const auto &feature : C.supportedFeatures) + switch (feature) { + case Capabilities::Feature::supportsANSIStyling: + result.insert({"supportsANSIStyling", true}); + break; ---------------- JDevlieghere wrote:
I would create a (static) helper that converts the enum values to strings and then do ```result.insert({GetFeatureAsString(feature), true})';``` https://github.com/llvm/llvm-project/pull/133007 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits