| /* 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 <string> | |
| #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 |