summaryrefslogtreecommitdiffstats
path: root/Source/cmDebuggerProtocol.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmDebuggerProtocol.h')
-rw-r--r--Source/cmDebuggerProtocol.h191
1 files changed, 191 insertions, 0 deletions
diff --git a/Source/cmDebuggerProtocol.h b/Source/cmDebuggerProtocol.h
new file mode 100644
index 0000000..4334aed
--- /dev/null
+++ b/Source/cmDebuggerProtocol.h
@@ -0,0 +1,191 @@
+/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
+ file Copyright.txt or https://cmake.org/licensing for details. */
+#pragma once
+
+#include "cmConfigure.h" // IWYU pragma: keep
+
+#include <vector>
+
+#include <cm3p/cppdap/protocol.h>
+
+#include <cmcppdap/include/dap/optional.h>
+#include <cmcppdap/include/dap/typeof.h>
+#include <cmcppdap/include/dap/types.h>
+
+namespace dap {
+
+// Represents the cmake version.
+struct CMakeVersion : public InitializeResponse
+{
+ // The major version number.
+ integer major;
+ // The minor version number.
+ integer minor;
+ // The patch number.
+ integer patch;
+ // The full version string.
+ string full;
+};
+
+DAP_DECLARE_STRUCT_TYPEINFO(CMakeVersion);
+
+// Response to `initialize` request.
+struct CMakeInitializeResponse : public Response
+{
+ // The set of additional module information exposed by the debug adapter.
+ optional<array<ColumnDescriptor>> additionalModuleColumns;
+ // The set of characters that should trigger completion in a REPL. If not
+ // specified, the UI should assume the `.` character.
+ optional<array<string>> completionTriggerCharacters;
+ // Available exception filter options for the `setExceptionBreakpoints`
+ // request.
+ optional<array<ExceptionBreakpointsFilter>> exceptionBreakpointFilters;
+ // The debug adapter supports the `suspendDebuggee` attribute on the
+ // `disconnect` request.
+ optional<boolean> supportSuspendDebuggee;
+ // The debug adapter supports the `terminateDebuggee` attribute on the
+ // `disconnect` request.
+ optional<boolean> supportTerminateDebuggee;
+ // Checksum algorithms supported by the debug adapter.
+ optional<array<ChecksumAlgorithm>> supportedChecksumAlgorithms;
+ // The debug adapter supports the `breakpointLocations` request.
+ optional<boolean> supportsBreakpointLocationsRequest;
+ // The debug adapter supports the `cancel` request.
+ optional<boolean> supportsCancelRequest;
+ // The debug adapter supports the `clipboard` context value in the `evaluate`
+ // request.
+ optional<boolean> supportsClipboardContext;
+ // The debug adapter supports the `completions` request.
+ optional<boolean> supportsCompletionsRequest;
+ // The debug adapter supports conditional breakpoints.
+ optional<boolean> supportsConditionalBreakpoints;
+ // The debug adapter supports the `configurationDone` request.
+ optional<boolean> supportsConfigurationDoneRequest;
+ // The debug adapter supports data breakpoints.
+ optional<boolean> supportsDataBreakpoints;
+ // The debug adapter supports the delayed loading of parts of the stack,
+ // which requires that both the `startFrame` and `levels` arguments and the
+ // `totalFrames` result of the `stackTrace` request are supported.
+ optional<boolean> supportsDelayedStackTraceLoading;
+ // The debug adapter supports the `disassemble` request.
+ optional<boolean> supportsDisassembleRequest;
+ // The debug adapter supports a (side effect free) `evaluate` request for
+ // data hovers.
+ optional<boolean> supportsEvaluateForHovers;
+ // The debug adapter supports `filterOptions` as an argument on the
+ // `setExceptionBreakpoints` request.
+ optional<boolean> supportsExceptionFilterOptions;
+ // The debug adapter supports the `exceptionInfo` request.
+ optional<boolean> supportsExceptionInfoRequest;
+ // The debug adapter supports `exceptionOptions` on the
+ // `setExceptionBreakpoints` request.
+ optional<boolean> supportsExceptionOptions;
+ // The debug adapter supports function breakpoints.
+ optional<boolean> supportsFunctionBreakpoints;
+ // The debug adapter supports the `gotoTargets` request.
+ optional<boolean> supportsGotoTargetsRequest;
+ // The debug adapter supports breakpoints that break execution after a
+ // specified number of hits.
+ optional<boolean> supportsHitConditionalBreakpoints;
+ // The debug adapter supports adding breakpoints based on instruction
+ // references.
+ optional<boolean> supportsInstructionBreakpoints;
+ // The debug adapter supports the `loadedSources` request.
+ optional<boolean> supportsLoadedSourcesRequest;
+ // The debug adapter supports log points by interpreting the `logMessage`
+ // attribute of the `SourceBreakpoint`.
+ optional<boolean> supportsLogPoints;
+ // The debug adapter supports the `modules` request.
+ optional<boolean> supportsModulesRequest;
+ // The debug adapter supports the `readMemory` request.
+ optional<boolean> supportsReadMemoryRequest;
+ // The debug adapter supports restarting a frame.
+ optional<boolean> supportsRestartFrame;
+ // The debug adapter supports the `restart` request. In this case a client
+ // should not implement `restart` by terminating and relaunching the adapter
+ // but by calling the `restart` request.
+ optional<boolean> supportsRestartRequest;
+ // The debug adapter supports the `setExpression` request.
+ optional<boolean> supportsSetExpression;
+ // The debug adapter supports setting a variable to a value.
+ optional<boolean> supportsSetVariable;
+ // The debug adapter supports the `singleThread` property on the execution
+ // requests (`continue`, `next`, `stepIn`, `stepOut`, `reverseContinue`,
+ // `stepBack`).
+ optional<boolean> supportsSingleThreadExecutionRequests;
+ // The debug adapter supports stepping back via the `stepBack` and
+ // `reverseContinue` requests.
+ optional<boolean> supportsStepBack;
+ // The debug adapter supports the `stepInTargets` request.
+ optional<boolean> supportsStepInTargetsRequest;
+ // The debug adapter supports stepping granularities (argument `granularity`)
+ // for the stepping requests.
+ optional<boolean> supportsSteppingGranularity;
+ // The debug adapter supports the `terminate` request.
+ optional<boolean> supportsTerminateRequest;
+ // The debug adapter supports the `terminateThreads` request.
+ optional<boolean> supportsTerminateThreadsRequest;
+ // The debug adapter supports a `format` attribute on the `stackTrace`,
+ // `variables`, and `evaluate` requests.
+ optional<boolean> supportsValueFormattingOptions;
+ // The debug adapter supports the `writeMemory` request.
+ optional<boolean> supportsWriteMemoryRequest;
+ // The CMake version.
+ CMakeVersion cmakeVersion;
+};
+
+DAP_DECLARE_STRUCT_TYPEINFO(CMakeInitializeResponse);
+
+// The `initialize` request is sent as the first request from the client to the
+// debug adapter in order to configure it with client capabilities and to
+// retrieve capabilities from the debug adapter. Until the debug adapter has
+// responded with an `initialize` response, the client must not send any
+// additional requests or events to the debug adapter. In addition the debug
+// adapter is not allowed to send any requests or events to the client until it
+// has responded with an `initialize` response. The `initialize` request may
+// only be sent once.
+struct CMakeInitializeRequest : public Request
+{
+ using Response = CMakeInitializeResponse;
+ // The ID of the debug adapter.
+ string adapterID;
+ // The ID of the client using this adapter.
+ optional<string> clientID;
+ // The human-readable name of the client using this adapter.
+ optional<string> clientName;
+ // If true all column numbers are 1-based (default).
+ optional<boolean> columnsStartAt1;
+ // If true all line numbers are 1-based (default).
+ optional<boolean> linesStartAt1;
+ // The ISO-639 locale of the client using this adapter, e.g. en-US or de-CH.
+ optional<string> locale;
+ // Determines in what format paths are specified. The default is `path`,
+ // which is the native format.
+ //
+ // May be one of the following enumeration values:
+ // 'path', 'uri'
+ optional<string> pathFormat;
+ // Client supports the `argsCanBeInterpretedByShell` attribute on the
+ // `runInTerminal` request.
+ optional<boolean> supportsArgsCanBeInterpretedByShell;
+ // Client supports the `invalidated` event.
+ optional<boolean> supportsInvalidatedEvent;
+ // Client supports the `memory` event.
+ optional<boolean> supportsMemoryEvent;
+ // Client supports memory references.
+ optional<boolean> supportsMemoryReferences;
+ // Client supports progress reporting.
+ optional<boolean> supportsProgressReporting;
+ // Client supports the `runInTerminal` request.
+ optional<boolean> supportsRunInTerminalRequest;
+ // Client supports the `startDebugging` request.
+ optional<boolean> supportsStartDebuggingRequest;
+ // Client supports the paging of variables.
+ optional<boolean> supportsVariablePaging;
+ // Client supports the `type` attribute for variables.
+ optional<boolean> supportsVariableType;
+};
+
+DAP_DECLARE_STRUCT_TYPEINFO(CMakeInitializeRequest);
+
+} // namespace dap