| 1 | // SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. |
| 2 | // |
| 3 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 4 | #ifndef OBJECTS_HPP |
| 5 | #define OBJECTS_HPP |
| 6 | |
| 7 | #include <QObject> |
| 8 | |
| 9 | namespace objects { |
| 10 | |
| 11 | /** |
| 12 | * Copies all properties of source into destination. The optional parameter "overwrite" allows to control |
| 13 | * if existing properties on the destination should be overwritten or not. Defaults to true (overwrite). |
| 14 | */ |
| 15 | template <class T, class K> |
| 16 | T mixin(T destination, K source, bool overwrite = true) |
| 17 | { |
| 18 | if (overwrite) { |
| 19 | // TODO(mozart):Modify according to the comment. |
| 20 | // The set of additional module information exposed by the debug adapter. |
| 21 | destination.additionalModuleColumns = source.additionalModuleColumns; |
| 22 | // The set of characters that should trigger completion in a REPL. If not |
| 23 | // specified, the UI should assume the '.' character. |
| 24 | destination.completionTriggerCharacters = source.completionTriggerCharacters; |
| 25 | // Available exception filter options for the 'setExceptionBreakpoints' |
| 26 | // request. |
| 27 | destination.exceptionBreakpointFilters = source.exceptionBreakpointFilters; |
| 28 | // The debug adapter supports the 'terminateDebuggee' attribute on the |
| 29 | // 'disconnect' request. |
| 30 | destination.supportTerminateDebuggee = source.supportTerminateDebuggee; |
| 31 | // Checksum algorithms supported by the debug adapter. |
| 32 | destination.supportedChecksumAlgorithms = source.supportedChecksumAlgorithms; |
| 33 | // The debug adapter supports the 'breakpointLocations' request. |
| 34 | destination.supportsBreakpointLocationsRequest = source.supportsBreakpointLocationsRequest; |
| 35 | // The debug adapter supports the 'cancel' request. |
| 36 | destination.supportsCancelRequest = source.supportsCancelRequest; |
| 37 | // The debug adapter supports the 'clipboard' context value in the 'evaluate' |
| 38 | // request. |
| 39 | destination.supportsClipboardContext = source.supportsClipboardContext; |
| 40 | // The debug adapter supports the 'completions' request. |
| 41 | destination.supportsCompletionsRequest = source.supportsClipboardContext; |
| 42 | // The debug adapter supports conditional breakpoints. |
| 43 | destination.supportsConditionalBreakpoints = source.supportsConditionalBreakpoints; |
| 44 | // The debug adapter supports the 'configurationDone' request. |
| 45 | destination.supportsConfigurationDoneRequest = source.supportsConfigurationDoneRequest; |
| 46 | // The debug adapter supports data breakpoints. |
| 47 | destination.supportsDataBreakpoints = source.supportsDataBreakpoints; |
| 48 | // The debug adapter supports the delayed loading of parts of the stack, which |
| 49 | // requires that both the 'startFrame' and 'levels' arguments and an optional |
| 50 | // 'totalFrames' result of the 'StackTrace' request are supported. |
| 51 | destination.supportsDelayedStackTraceLoading = source.supportsDelayedStackTraceLoading; |
| 52 | // The debug adapter supports the 'disassemble' request. |
| 53 | destination.supportsDisassembleRequest = source.supportsDisassembleRequest; |
| 54 | // The debug adapter supports a (side effect free) evaluate request for data |
| 55 | // hovers. |
| 56 | destination.supportsEvaluateForHovers = source.supportsEvaluateForHovers; |
| 57 | // The debug adapter supports 'filterOptions' as an argument on the |
| 58 | // 'setExceptionBreakpoints' request. |
| 59 | destination.supportsExceptionFilterOptions = source.supportsExceptionFilterOptions; |
| 60 | // The debug adapter supports the 'exceptionInfo' request. |
| 61 | destination.supportsExceptionInfoRequest = source.supportsExceptionInfoRequest; |
| 62 | // The debug adapter supports 'exceptionOptions' on the |
| 63 | // setExceptionBreakpoints request. |
| 64 | destination.supportsExceptionOptions = source.supportsExceptionOptions; |
| 65 | // The debug adapter supports function breakpoints. |
| 66 | destination.supportsFunctionBreakpoints = source.supportsFunctionBreakpoints; |
| 67 | // The debug adapter supports the 'gotoTargets' request. |
| 68 | destination.supportsGotoTargetsRequest = source.supportsGotoTargetsRequest; |
| 69 | // The debug adapter supports breakpoints that break execution after a |
| 70 | // specified number of hits. |
| 71 | destination.supportsHitConditionalBreakpoints = source.supportsHitConditionalBreakpoints; |
| 72 | // The debug adapter supports adding breakpoints based on instruction |
| 73 | // references. |
| 74 | destination.supportsInstructionBreakpoints = source.supportsInstructionBreakpoints; |
| 75 | // The debug adapter supports the 'loadedSources' request. |
| 76 | destination.supportsLoadedSourcesRequest = source.supportsLoadedSourcesRequest; |
| 77 | // The debug adapter supports logpoints by interpreting the 'logMessage' |
| 78 | // attribute of the SourceBreakpoint. |
| 79 | destination.supportsLogPoints = source.supportsLogPoints; |
| 80 | // The debug adapter supports the 'modules' request. |
| 81 | destination.supportsModulesRequest = source.supportsModulesRequest; |
| 82 | // The debug adapter supports the 'readMemory' request. |
| 83 | destination.supportsReadMemoryRequest = source.supportsReadMemoryRequest; |
| 84 | // The debug adapter supports restarting a frame. |
| 85 | destination.supportsRestartFrame = source.supportsRestartFrame; |
| 86 | // The debug adapter supports the 'restart' request. In this case a client |
| 87 | // should not implement 'restart' by terminating and relaunching the adapter |
| 88 | // but by calling the RestartRequest. |
| 89 | destination.supportsRestartRequest = source.supportsRestartRequest; |
| 90 | // The debug adapter supports the 'setExpression' request. |
| 91 | destination.supportsSetExpression = source.supportsSetExpression; |
| 92 | // The debug adapter supports setting a variable to a value. |
| 93 | destination.supportsSetVariable = source.supportsSetVariable; |
| 94 | // The debug adapter supports stepping back via the 'stepBack' and |
| 95 | // 'reverseContinue' requests. |
| 96 | destination.supportsStepBack = source.supportsStepBack; |
| 97 | // The debug adapter supports the 'stepInTargets' request. |
| 98 | destination.supportsStepInTargetsRequest = source.supportsStepInTargetsRequest; |
| 99 | // The debug adapter supports stepping granularities (argument 'granularity') |
| 100 | // for the stepping requests. |
| 101 | destination.supportsSteppingGranularity = source.supportsSteppingGranularity; |
| 102 | // The debug adapter supports the 'terminate' request. |
| 103 | destination.supportsTerminateRequest = source.supportsTerminateRequest; |
| 104 | // The debug adapter supports the 'terminateThreads' request. |
| 105 | destination.supportsTerminateThreadsRequest = source.supportsTerminateThreadsRequest; |
| 106 | // The debug adapter supports a 'format' attribute on the stackTraceRequest, |
| 107 | // variablesRequest, and evaluateRequest. |
| 108 | destination.supportsValueFormattingOptions = source.supportsValueFormattingOptions; |
| 109 | } else { |
| 110 | // mix not supported yet. |
| 111 | } |
| 112 | return destination; |
| 113 | } |
| 114 | |
| 115 | } |
| 116 | |
| 117 | #endif // OBJECTS_HPP |
| 118 | |