[Lldb-commits] [lldb] [lldb-dap] Migrating DAP 'initialize' to new typed RequestHandler. (PR #133007)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Wed Mar 26 16:16:24 PDT 2025
================
@@ -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
More information about the lldb-commits
mailing list