1use crate::utils::eq_default;
2use serde::{Deserialize, Serialize};
3use serde_json::Value;
4use std::collections::HashMap;
5use typed_builder::TypedBuilder;
6
7#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
9pub struct Breakpoint {
10 #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
12 #[builder(default)]
13 pub id: Option<i32>,
14
15 #[serde(rename = "verified")]
17 pub verified: bool,
18
19 #[serde(rename = "message", skip_serializing_if = "Option::is_none")]
23 #[builder(default)]
24 pub message: Option<String>,
25
26 #[serde(rename = "source", skip_serializing_if = "Option::is_none")]
28 #[builder(default)]
29 pub source: Option<Source>,
30
31 #[serde(rename = "line", skip_serializing_if = "Option::is_none")]
33 #[builder(default)]
34 pub line: Option<i32>,
35
36 #[serde(rename = "column", skip_serializing_if = "Option::is_none")]
38 #[builder(default)]
39 pub column: Option<i32>,
40
41 #[serde(rename = "endLine", skip_serializing_if = "Option::is_none")]
43 #[builder(default)]
44 pub end_line: Option<i32>,
45
46 #[serde(rename = "endColumn", skip_serializing_if = "Option::is_none")]
50 #[builder(default)]
51 pub end_column: Option<i32>,
52
53 #[serde(
55 rename = "instructionReference",
56 skip_serializing_if = "Option::is_none"
57 )]
58 #[builder(default)]
59 pub instruction_reference: Option<String>,
60
61 #[serde(rename = "offset", skip_serializing_if = "Option::is_none")]
65 #[builder(default)]
66 pub offset: Option<i32>,
67
68 #[serde(skip)]
69 #[builder(default, setter(skip))]
70 private: (),
71}
72
73#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
75pub struct BreakpointLocation {
76 #[serde(rename = "line")]
78 pub line: i32,
79
80 #[serde(rename = "column", skip_serializing_if = "Option::is_none")]
82 #[builder(default)]
83 pub column: Option<i32>,
84
85 #[serde(rename = "endLine", skip_serializing_if = "Option::is_none")]
87 #[builder(default)]
88 pub end_line: Option<i32>,
89
90 #[serde(rename = "endColumn", skip_serializing_if = "Option::is_none")]
92 #[builder(default)]
93 pub end_column: Option<i32>,
94
95 #[serde(skip)]
96 #[builder(default, setter(skip))]
97 private: (),
98}
99
100#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
102pub struct Capabilities {
103 #[serde(
105 rename = "supportsConfigurationDoneRequest",
106 default,
107 skip_serializing_if = "eq_default"
108 )]
109 #[builder(default)]
110 pub supports_configuration_done_request: bool,
111
112 #[serde(
114 rename = "supportsFunctionBreakpoints",
115 default,
116 skip_serializing_if = "eq_default"
117 )]
118 #[builder(default)]
119 pub supports_function_breakpoints: bool,
120
121 #[serde(
123 rename = "supportsConditionalBreakpoints",
124 default,
125 skip_serializing_if = "eq_default"
126 )]
127 #[builder(default)]
128 pub supports_conditional_breakpoints: bool,
129
130 #[serde(
132 rename = "supportsHitConditionalBreakpoints",
133 default,
134 skip_serializing_if = "eq_default"
135 )]
136 #[builder(default)]
137 pub supports_hit_conditional_breakpoints: bool,
138
139 #[serde(
141 rename = "supportsEvaluateForHovers",
142 default,
143 skip_serializing_if = "eq_default"
144 )]
145 #[builder(default)]
146 pub supports_evaluate_for_hovers: bool,
147
148 #[serde(
150 rename = "exceptionBreakpointFilters",
151 default,
152 skip_serializing_if = "Vec::is_empty"
153 )]
154 #[builder(default)]
155 pub exception_breakpoint_filters: Vec<ExceptionBreakpointsFilter>,
156
157 #[serde(
159 rename = "supportsStepBack",
160 default,
161 skip_serializing_if = "eq_default"
162 )]
163 #[builder(default)]
164 pub supports_step_back: bool,
165
166 #[serde(
168 rename = "supportsSetVariable",
169 default,
170 skip_serializing_if = "eq_default"
171 )]
172 #[builder(default)]
173 pub supports_set_variable: bool,
174
175 #[serde(
177 rename = "supportsRestartFrame",
178 default,
179 skip_serializing_if = "eq_default"
180 )]
181 #[builder(default)]
182 pub supports_restart_frame: bool,
183
184 #[serde(
186 rename = "supportsGotoTargetsRequest",
187 default,
188 skip_serializing_if = "eq_default"
189 )]
190 #[builder(default)]
191 pub supports_goto_targets_request: bool,
192
193 #[serde(
195 rename = "supportsStepInTargetsRequest",
196 default,
197 skip_serializing_if = "eq_default"
198 )]
199 #[builder(default)]
200 pub supports_step_in_targets_request: bool,
201
202 #[serde(
204 rename = "supportsCompletionsRequest",
205 default,
206 skip_serializing_if = "eq_default"
207 )]
208 #[builder(default)]
209 pub supports_completions_request: bool,
210
211 #[serde(
213 rename = "completionTriggerCharacters",
214 skip_serializing_if = "Option::is_none"
215 )]
216 #[builder(default)]
217 pub completion_trigger_characters: Option<Vec<String>>,
218
219 #[serde(
221 rename = "supportsModulesRequest",
222 default,
223 skip_serializing_if = "eq_default"
224 )]
225 #[builder(default)]
226 pub supports_modules_request: bool,
227
228 #[serde(
230 rename = "additionalModuleColumns",
231 default,
232 skip_serializing_if = "Vec::is_empty"
233 )]
234 #[builder(default)]
235 pub additional_module_columns: Vec<ColumnDescriptor>,
236
237 #[serde(
239 rename = "supportedChecksumAlgorithms",
240 default,
241 skip_serializing_if = "Vec::is_empty"
242 )]
243 #[builder(default)]
244 pub supported_checksum_algorithms: Vec<ChecksumAlgorithm>,
245
246 #[serde(
248 rename = "supportsRestartRequest",
249 default,
250 skip_serializing_if = "eq_default"
251 )]
252 #[builder(default)]
253 pub supports_restart_request: bool,
254
255 #[serde(
257 rename = "supportsExceptionOptions",
258 default,
259 skip_serializing_if = "eq_default"
260 )]
261 #[builder(default)]
262 pub supports_exception_options: bool,
263
264 #[serde(
266 rename = "supportsValueFormattingOptions",
267 default,
268 skip_serializing_if = "eq_default"
269 )]
270 #[builder(default)]
271 pub supports_value_formatting_options: bool,
272
273 #[serde(
275 rename = "supportsExceptionInfoRequest",
276 default,
277 skip_serializing_if = "eq_default"
278 )]
279 #[builder(default)]
280 pub supports_exception_info_request: bool,
281
282 #[serde(
284 rename = "supportTerminateDebuggee",
285 default,
286 skip_serializing_if = "eq_default"
287 )]
288 #[builder(default)]
289 pub support_terminate_debuggee: bool,
290
291 #[serde(
293 rename = "supportSuspendDebuggee",
294 default,
295 skip_serializing_if = "eq_default"
296 )]
297 #[builder(default)]
298 pub support_suspend_debuggee: bool,
299
300 #[serde(
302 rename = "supportsDelayedStackTraceLoading",
303 default,
304 skip_serializing_if = "eq_default"
305 )]
306 #[builder(default)]
307 pub supports_delayed_stack_trace_loading: bool,
308
309 #[serde(
311 rename = "supportsLoadedSourcesRequest",
312 default,
313 skip_serializing_if = "eq_default"
314 )]
315 #[builder(default)]
316 pub supports_loaded_sources_request: bool,
317
318 #[serde(
320 rename = "supportsLogPoints",
321 default,
322 skip_serializing_if = "eq_default"
323 )]
324 #[builder(default)]
325 pub supports_log_points: bool,
326
327 #[serde(
329 rename = "supportsTerminateThreadsRequest",
330 default,
331 skip_serializing_if = "eq_default"
332 )]
333 #[builder(default)]
334 pub supports_terminate_threads_request: bool,
335
336 #[serde(
338 rename = "supportsSetExpression",
339 default,
340 skip_serializing_if = "eq_default"
341 )]
342 #[builder(default)]
343 pub supports_set_expression: bool,
344
345 #[serde(
347 rename = "supportsTerminateRequest",
348 default,
349 skip_serializing_if = "eq_default"
350 )]
351 #[builder(default)]
352 pub supports_terminate_request: bool,
353
354 #[serde(
356 rename = "supportsDataBreakpoints",
357 default,
358 skip_serializing_if = "eq_default"
359 )]
360 #[builder(default)]
361 pub supports_data_breakpoints: bool,
362
363 #[serde(
365 rename = "supportsReadMemoryRequest",
366 default,
367 skip_serializing_if = "eq_default"
368 )]
369 #[builder(default)]
370 pub supports_read_memory_request: bool,
371
372 #[serde(
374 rename = "supportsDisassembleRequest",
375 default,
376 skip_serializing_if = "eq_default"
377 )]
378 #[builder(default)]
379 pub supports_disassemble_request: bool,
380
381 #[serde(
383 rename = "supportsCancelRequest",
384 default,
385 skip_serializing_if = "eq_default"
386 )]
387 #[builder(default)]
388 pub supports_cancel_request: bool,
389
390 #[serde(
392 rename = "supportsBreakpointLocationsRequest",
393 default,
394 skip_serializing_if = "eq_default"
395 )]
396 #[builder(default)]
397 pub supports_breakpoint_locations_request: bool,
398
399 #[serde(
401 rename = "supportsClipboardContext",
402 default,
403 skip_serializing_if = "eq_default"
404 )]
405 #[builder(default)]
406 pub supports_clipboard_context: bool,
407
408 #[serde(
410 rename = "supportsSteppingGranularity",
411 default,
412 skip_serializing_if = "eq_default"
413 )]
414 #[builder(default)]
415 pub supports_stepping_granularity: bool,
416
417 #[serde(
419 rename = "supportsInstructionBreakpoints",
420 default,
421 skip_serializing_if = "eq_default"
422 )]
423 #[builder(default)]
424 pub supports_instruction_breakpoints: bool,
425
426 #[serde(
428 rename = "supportsExceptionFilterOptions",
429 default,
430 skip_serializing_if = "eq_default"
431 )]
432 #[builder(default)]
433 pub supports_exception_filter_options: bool,
434
435 #[serde(skip)]
436 #[builder(default, setter(skip))]
437 private: (),
438}
439
440#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
442pub struct Checksum {
443 #[serde(rename = "algorithm")]
445 pub algorithm: ChecksumAlgorithm,
446
447 #[serde(rename = "checksum")]
449 pub checksum: String,
450
451 #[serde(skip)]
452 #[builder(default, setter(skip))]
453 private: (),
454}
455
456#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
458pub enum ChecksumAlgorithm {
459 #[serde(rename = "MD5")]
460 MD5,
461
462 #[serde(rename = "SHA1")]
463 SHA1,
464
465 #[serde(rename = "SHA256")]
466 SHA256,
467
468 #[serde(rename = "timestamp")]
469 Timestamp,
470}
471
472#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
478pub struct ColumnDescriptor {
479 #[serde(rename = "attributeName")]
481 pub attribute_name: String,
482
483 #[serde(rename = "label")]
485 pub label: String,
486
487 #[serde(rename = "format", skip_serializing_if = "Option::is_none")]
489 #[builder(default)]
490 pub format: Option<String>,
491
492 #[serde(rename = "type", default, skip_serializing_if = "eq_default")]
494 #[builder(default)]
495 pub type_: ColumnDescriptorType,
496
497 #[serde(rename = "width", skip_serializing_if = "Option::is_none")]
499 #[builder(default)]
500 pub width: Option<i32>,
501
502 #[serde(skip)]
503 #[builder(default, setter(skip))]
504 private: (),
505}
506
507#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
508pub enum ColumnDescriptorType {
509 #[serde(rename = "string")]
510 String,
511
512 #[serde(rename = "number")]
513 Number,
514
515 #[serde(rename = "boolean")]
516 Boolean,
517
518 #[serde(rename = "unixTimestampUTC")]
519 UnixTimestampUTC,
520}
521
522impl Default for ColumnDescriptorType {
523 fn default() -> Self {
524 ColumnDescriptorType::String
525 }
526}
527
528#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
530pub struct CompletionItem {
531 #[serde(rename = "label")]
533 pub label: String,
534
535 #[serde(rename = "text", skip_serializing_if = "Option::is_none")]
537 #[builder(default)]
538 pub text: Option<String>,
539
540 #[serde(rename = "sortText", skip_serializing_if = "Option::is_none")]
542 #[builder(default)]
543 pub sort_text: Option<String>,
544
545 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
547 #[builder(default)]
548 pub type_: Option<CompletionItemType>,
549
550 #[serde(rename = "start", skip_serializing_if = "Option::is_none")]
554 #[builder(default)]
555 pub start: Option<i32>,
556
557 #[serde(rename = "length", default, skip_serializing_if = "eq_default")]
561 #[builder(default)]
562 pub length: i32,
563
564 #[serde(rename = "selectionStart", skip_serializing_if = "Option::is_none")]
570 #[builder(default)]
571 pub selection_start: Option<i32>,
572
573 #[serde(
579 rename = "selectionLength",
580 default,
581 skip_serializing_if = "eq_default"
582 )]
583 #[builder(default)]
584 pub selection_length: i32,
585
586 #[serde(skip)]
587 #[builder(default, setter(skip))]
588 private: (),
589}
590
591#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
593pub enum CompletionItemType {
594 #[serde(rename = "method")]
595 Method,
596
597 #[serde(rename = "function")]
598 Function,
599
600 #[serde(rename = "constructor")]
601 Constructor,
602
603 #[serde(rename = "field")]
604 Field,
605
606 #[serde(rename = "variable")]
607 Variable,
608
609 #[serde(rename = "class")]
610 Class,
611
612 #[serde(rename = "interface")]
613 Interface,
614
615 #[serde(rename = "module")]
616 Module,
617
618 #[serde(rename = "property")]
619 Property,
620
621 #[serde(rename = "unit")]
622 Unit,
623
624 #[serde(rename = "value")]
625 Value,
626
627 #[serde(rename = "enum")]
628 Enum,
629
630 #[serde(rename = "keyword")]
631 Keyword,
632
633 #[serde(rename = "snippet")]
634 Snippet,
635
636 #[serde(rename = "text")]
637 Text,
638
639 #[serde(rename = "color")]
640 Color,
641
642 #[serde(rename = "file")]
643 File,
644
645 #[serde(rename = "reference")]
646 Reference,
647
648 #[serde(rename = "customcolor")]
649 Customcolor,
650}
651
652#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
654pub struct DataBreakpoint {
655 #[serde(rename = "dataId")]
657 pub data_id: String,
658
659 #[serde(rename = "accessType", skip_serializing_if = "Option::is_none")]
661 #[builder(default)]
662 pub access_type: Option<DataBreakpointAccessType>,
663
664 #[serde(rename = "condition", skip_serializing_if = "Option::is_none")]
666 #[builder(default)]
667 pub condition: Option<String>,
668
669 #[serde(rename = "hitCondition", skip_serializing_if = "Option::is_none")]
673 #[builder(default)]
674 pub hit_condition: Option<String>,
675
676 #[serde(skip)]
677 #[builder(default, setter(skip))]
678 private: (),
679}
680
681#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
683pub enum DataBreakpointAccessType {
684 #[serde(rename = "read")]
685 Read,
686
687 #[serde(rename = "write")]
688 Write,
689
690 #[serde(rename = "readWrite")]
691 ReadWrite,
692}
693
694#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
696pub struct DisassembledInstruction {
697 #[serde(rename = "address")]
699 pub address: String,
700
701 #[serde(rename = "instructionBytes", skip_serializing_if = "Option::is_none")]
703 #[builder(default)]
704 pub instruction_bytes: Option<String>,
705
706 #[serde(rename = "instruction")]
708 pub instruction: String,
709
710 #[serde(rename = "symbol", skip_serializing_if = "Option::is_none")]
712 #[builder(default)]
713 pub symbol: Option<String>,
714
715 #[serde(rename = "location", skip_serializing_if = "Option::is_none")]
721 #[builder(default)]
722 pub location: Option<Source>,
723
724 #[serde(rename = "line", skip_serializing_if = "Option::is_none")]
726 #[builder(default)]
727 pub line: Option<i32>,
728
729 #[serde(rename = "column", skip_serializing_if = "Option::is_none")]
731 #[builder(default)]
732 pub column: Option<i32>,
733
734 #[serde(rename = "endLine", skip_serializing_if = "Option::is_none")]
736 #[builder(default)]
737 pub end_line: Option<i32>,
738
739 #[serde(rename = "endColumn", skip_serializing_if = "Option::is_none")]
741 #[builder(default)]
742 pub end_column: Option<i32>,
743
744 #[serde(skip)]
745 #[builder(default, setter(skip))]
746 private: (),
747}
748
749#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
759pub enum ExceptionBreakMode {
760 #[serde(rename = "never")]
761 Never,
762
763 #[serde(rename = "always")]
764 Always,
765
766 #[serde(rename = "unhandled")]
767 Unhandled,
768
769 #[serde(rename = "userUnhandled")]
770 UserUnhandled,
771}
772
773#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
775pub struct ExceptionBreakpointsFilter {
776 #[serde(rename = "filter")]
778 pub filter: String,
779
780 #[serde(rename = "label")]
782 pub label: String,
783
784 #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
786 #[builder(default)]
787 pub description: Option<String>,
788
789 #[serde(rename = "default", default, skip_serializing_if = "eq_default")]
791 #[builder(default)]
792 pub default: bool,
793
794 #[serde(
796 rename = "supportsCondition",
797 default,
798 skip_serializing_if = "eq_default"
799 )]
800 #[builder(default)]
801 pub supports_condition: bool,
802
803 #[serde(
805 rename = "conditionDescription",
806 skip_serializing_if = "Option::is_none"
807 )]
808 #[builder(default)]
809 pub condition_description: Option<String>,
810
811 #[serde(skip)]
812 #[builder(default, setter(skip))]
813 private: (),
814}
815
816#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
818pub struct ExceptionDetails {
819 #[serde(rename = "message", skip_serializing_if = "Option::is_none")]
821 #[builder(default)]
822 pub message: Option<String>,
823
824 #[serde(rename = "typeName", skip_serializing_if = "Option::is_none")]
826 #[builder(default)]
827 pub type_name: Option<String>,
828
829 #[serde(rename = "fullTypeName", skip_serializing_if = "Option::is_none")]
831 #[builder(default)]
832 pub full_type_name: Option<String>,
833
834 #[serde(rename = "evaluateName", skip_serializing_if = "Option::is_none")]
836 #[builder(default)]
837 pub evaluate_name: Option<String>,
838
839 #[serde(rename = "stackTrace", skip_serializing_if = "Option::is_none")]
841 #[builder(default)]
842 pub stack_trace: Option<String>,
843
844 #[serde(
846 rename = "innerException",
847 default,
848 skip_serializing_if = "Vec::is_empty"
849 )]
850 #[builder(default)]
851 pub inner_exception: Vec<ExceptionDetails>,
852
853 #[serde(skip)]
854 #[builder(default, setter(skip))]
855 private: (),
856}
857
858#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
860pub struct ExceptionFilterOptions {
861 #[serde(rename = "filterId")]
863 pub filter_id: String,
864
865 #[serde(rename = "condition", skip_serializing_if = "Option::is_none")]
869 #[builder(default)]
870 pub condition: Option<String>,
871
872 #[serde(skip)]
873 #[builder(default, setter(skip))]
874 private: (),
875}
876
877#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
879pub struct ExceptionOptions {
880 #[serde(rename = "path", default, skip_serializing_if = "Vec::is_empty")]
884 #[builder(default)]
885 pub path: Vec<ExceptionPathSegment>,
886
887 #[serde(rename = "breakMode")]
889 pub break_mode: ExceptionBreakMode,
890
891 #[serde(skip)]
892 #[builder(default, setter(skip))]
893 private: (),
894}
895
896#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
902pub struct ExceptionPathSegment {
903 #[serde(rename = "negate", default, skip_serializing_if = "eq_default")]
905 #[builder(default)]
906 pub negate: bool,
907
908 #[serde(rename = "names")]
910 pub names: Vec<String>,
911
912 #[serde(skip)]
913 #[builder(default, setter(skip))]
914 private: (),
915}
916
917#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
919pub struct FunctionBreakpoint {
920 #[serde(rename = "name")]
922 pub name: String,
923
924 #[serde(rename = "condition", skip_serializing_if = "Option::is_none")]
928 #[builder(default)]
929 pub condition: Option<String>,
930
931 #[serde(rename = "hitCondition", skip_serializing_if = "Option::is_none")]
937 #[builder(default)]
938 pub hit_condition: Option<String>,
939
940 #[serde(skip)]
941 #[builder(default, setter(skip))]
942 private: (),
943}
944
945#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
949pub struct GotoTarget {
950 #[serde(rename = "id")]
952 pub id: i32,
953
954 #[serde(rename = "label")]
956 pub label: String,
957
958 #[serde(rename = "line")]
960 pub line: i32,
961
962 #[serde(rename = "column", skip_serializing_if = "Option::is_none")]
964 #[builder(default)]
965 pub column: Option<i32>,
966
967 #[serde(rename = "endLine", skip_serializing_if = "Option::is_none")]
969 #[builder(default)]
970 pub end_line: Option<i32>,
971
972 #[serde(rename = "endColumn", skip_serializing_if = "Option::is_none")]
974 #[builder(default)]
975 pub end_column: Option<i32>,
976
977 #[serde(
979 rename = "instructionPointerReference",
980 skip_serializing_if = "Option::is_none"
981 )]
982 #[builder(default)]
983 pub instruction_pointer_reference: Option<String>,
984
985 #[serde(skip)]
986 #[builder(default, setter(skip))]
987 private: (),
988}
989
990#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
992pub struct InstructionBreakpoint {
993 #[serde(rename = "instructionReference")]
997 pub instruction_reference: String,
998
999 #[serde(rename = "offset", skip_serializing_if = "Option::is_none")]
1003 #[builder(default)]
1004 pub offset: Option<i32>,
1005
1006 #[serde(rename = "condition", skip_serializing_if = "Option::is_none")]
1010 #[builder(default)]
1011 pub condition: Option<String>,
1012
1013 #[serde(rename = "hitCondition", skip_serializing_if = "Option::is_none")]
1019 #[builder(default)]
1020 pub hit_condition: Option<String>,
1021
1022 #[serde(skip)]
1023 #[builder(default, setter(skip))]
1024 private: (),
1025}
1026
1027#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
1029pub enum InvalidatedAreas {
1030 #[serde(rename = "all")]
1032 All,
1033
1034 #[serde(rename = "stacks")]
1036 Stacks,
1037
1038 #[serde(rename = "threads")]
1040 Threads,
1041
1042 #[serde(rename = "variables")]
1044 Variables,
1045}
1046
1047#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
1049pub struct Message {
1050 #[serde(rename = "id")]
1052 pub id: i32,
1053
1054 #[serde(rename = "format")]
1058 pub format: String,
1059
1060 #[serde(
1062 rename = "variables",
1063 default,
1064 skip_serializing_if = "HashMap::is_empty"
1065 )]
1066 #[builder(default)]
1067 pub variables: HashMap<String, String>,
1068
1069 #[serde(rename = "sendTelemetry", default, skip_serializing_if = "eq_default")]
1071 #[builder(default)]
1072 pub send_telemetry: bool,
1073
1074 #[serde(rename = "showUser", default, skip_serializing_if = "eq_default")]
1076 #[builder(default)]
1077 pub show_user: bool,
1078
1079 #[serde(rename = "url", skip_serializing_if = "Option::is_none")]
1081 #[builder(default)]
1082 pub url: Option<String>,
1083
1084 #[serde(rename = "urlLabel", skip_serializing_if = "Option::is_none")]
1086 #[builder(default)]
1087 pub url_label: Option<String>,
1088
1089 #[serde(skip)]
1090 #[builder(default, setter(skip))]
1091 private: (),
1092}
1093
1094#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
1110pub struct Module {
1111 #[serde(rename = "id")]
1113 pub id: ModuleId,
1114
1115 #[serde(rename = "name")]
1117 pub name: String,
1118
1119 #[serde(rename = "path", skip_serializing_if = "Option::is_none")]
1127 #[builder(default)]
1128 pub path: Option<String>,
1129
1130 #[serde(rename = "isOptimized", skip_serializing_if = "Option::is_none")]
1132 #[builder(default)]
1133 pub is_optimized: Option<bool>,
1134
1135 #[serde(rename = "isUserCode", skip_serializing_if = "Option::is_none")]
1137 #[builder(default)]
1138 pub is_user_code: Option<bool>,
1139
1140 #[serde(rename = "version", skip_serializing_if = "Option::is_none")]
1142 #[builder(default)]
1143 pub version: Option<String>,
1144
1145 #[serde(rename = "symbolStatus", skip_serializing_if = "Option::is_none")]
1147 #[builder(default)]
1148 pub symbol_status: Option<String>,
1149
1150 #[serde(rename = "symbolFilePath", skip_serializing_if = "Option::is_none")]
1152 #[builder(default)]
1153 pub symbol_file_path: Option<String>,
1154
1155 #[serde(rename = "dateTimeStamp", skip_serializing_if = "Option::is_none")]
1157 #[builder(default)]
1158 pub date_time_stamp: Option<String>,
1159
1160 #[serde(rename = "addressRange", skip_serializing_if = "Option::is_none")]
1162 #[builder(default)]
1163 pub address_range: Option<String>,
1164
1165 #[serde(skip)]
1166 #[builder(default, setter(skip))]
1167 private: (),
1168}
1169
1170#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
1171#[serde(untagged)]
1172pub enum ModuleId {
1173 Integer(i32),
1174 String(String),
1175}
1176
1177#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
1181pub struct ModulesViewDescriptor {
1182 #[serde(rename = "columns")]
1183 pub columns: Vec<ColumnDescriptor>,
1184
1185 #[serde(skip)]
1186 #[builder(default, setter(skip))]
1187 private: (),
1188}
1189
1190#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
1192pub struct Scope {
1193 #[serde(rename = "name")]
1195 pub name: String,
1196
1197 #[serde(rename = "presentationHint", skip_serializing_if = "Option::is_none")]
1199 #[builder(default)]
1200 pub presentation_hint: Option<ScopePresentationHint>,
1201
1202 #[serde(rename = "variablesReference")]
1204 pub variables_reference: i32,
1205
1206 #[serde(rename = "namedVariables", skip_serializing_if = "Option::is_none")]
1210 #[builder(default)]
1211 pub named_variables: Option<i32>,
1212
1213 #[serde(rename = "indexedVariables", skip_serializing_if = "Option::is_none")]
1217 #[builder(default)]
1218 pub indexed_variables: Option<i32>,
1219
1220 #[serde(rename = "expensive")]
1222 pub expensive: bool,
1223
1224 #[serde(rename = "source", skip_serializing_if = "Option::is_none")]
1226 #[builder(default)]
1227 pub source: Option<Source>,
1228
1229 #[serde(rename = "line", skip_serializing_if = "Option::is_none")]
1231 #[builder(default)]
1232 pub line: Option<i32>,
1233
1234 #[serde(rename = "column", skip_serializing_if = "Option::is_none")]
1236 #[builder(default)]
1237 pub column: Option<i32>,
1238
1239 #[serde(rename = "endLine", skip_serializing_if = "Option::is_none")]
1241 #[builder(default)]
1242 pub end_line: Option<i32>,
1243
1244 #[serde(rename = "endColumn", skip_serializing_if = "Option::is_none")]
1246 #[builder(default)]
1247 pub end_column: Option<i32>,
1248
1249 #[serde(skip)]
1250 #[builder(default, setter(skip))]
1251 private: (),
1252}
1253
1254#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
1255pub enum ScopePresentationHint {
1256 #[serde(rename = "arguments")]
1258 Arguments,
1259
1260 #[serde(rename = "locals")]
1262 Locals,
1263
1264 #[serde(rename = "registers")]
1266 Registers,
1267}
1268
1269#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
1273pub struct Source {
1274 #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
1278 #[builder(default)]
1279 pub name: Option<String>,
1280
1281 #[serde(rename = "path", skip_serializing_if = "Option::is_none")]
1285 #[builder(default)]
1286 pub path: Option<String>,
1287
1288 #[serde(rename = "sourceReference", skip_serializing_if = "Option::is_none")]
1294 #[builder(default)]
1295 pub source_reference: Option<i32>,
1296
1297 #[serde(rename = "presentationHint", skip_serializing_if = "Option::is_none")]
1301 #[builder(default)]
1302 pub presentation_hint: Option<SourcePresentationHint>,
1303
1304 #[serde(rename = "origin", skip_serializing_if = "Option::is_none")]
1306 #[builder(default)]
1307 pub origin: Option<String>,
1308
1309 #[serde(rename = "sources", default, skip_serializing_if = "Vec::is_empty")]
1311 #[builder(default)]
1312 pub sources: Vec<Source>,
1313
1314 #[serde(rename = "adapterData", skip_serializing_if = "Option::is_none")]
1318 #[builder(default)]
1319 pub adapter_data: Option<Value>,
1320
1321 #[serde(rename = "checksums", default, skip_serializing_if = "Vec::is_empty")]
1323 #[builder(default)]
1324 pub checksums: Vec<Checksum>,
1325
1326 #[serde(skip)]
1327 #[builder(default, setter(skip))]
1328 private: (),
1329}
1330
1331#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
1335pub enum SourcePresentationHint {
1336 #[serde(rename = "normal")]
1337 Normal,
1338
1339 #[serde(rename = "emphasize")]
1340 Emphasize,
1341
1342 #[serde(rename = "deemphasize")]
1343 Deemphasize,
1344}
1345
1346#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
1348pub struct SourceBreakpoint {
1349 #[serde(rename = "line")]
1351 pub line: i32,
1352
1353 #[serde(rename = "column", skip_serializing_if = "Option::is_none")]
1355 #[builder(default)]
1356 pub column: Option<i32>,
1357
1358 #[serde(rename = "condition", skip_serializing_if = "Option::is_none")]
1362 #[builder(default)]
1363 pub condition: Option<String>,
1364
1365 #[serde(rename = "hitCondition", skip_serializing_if = "Option::is_none")]
1371 #[builder(default)]
1372 pub hit_condition: Option<String>,
1373
1374 #[serde(rename = "logMessage", skip_serializing_if = "Option::is_none")]
1380 #[builder(default)]
1381 pub log_message: Option<String>,
1382
1383 #[serde(skip)]
1384 #[builder(default, setter(skip))]
1385 private: (),
1386}
1387
1388#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
1390pub struct StackFrame {
1391 #[serde(rename = "id")]
1395 pub id: i32,
1396
1397 #[serde(rename = "name")]
1399 pub name: String,
1400
1401 #[serde(rename = "source", skip_serializing_if = "Option::is_none")]
1403 #[builder(default)]
1404 pub source: Option<Source>,
1405
1406 #[serde(rename = "line")]
1408 pub line: i32,
1409
1410 #[serde(rename = "column")]
1412 pub column: i32,
1413
1414 #[serde(rename = "endLine", skip_serializing_if = "Option::is_none")]
1416 #[builder(default)]
1417 pub end_line: Option<i32>,
1418
1419 #[serde(rename = "endColumn", skip_serializing_if = "Option::is_none")]
1421 #[builder(default)]
1422 pub end_column: Option<i32>,
1423
1424 #[serde(rename = "canRestart", skip_serializing_if = "Option::is_none")]
1426 #[builder(default)]
1427 pub can_restart: Option<bool>,
1428
1429 #[serde(
1431 rename = "instructionPointerReference",
1432 skip_serializing_if = "Option::is_none"
1433 )]
1434 #[builder(default)]
1435 pub instruction_pointer_reference: Option<String>,
1436
1437 #[serde(rename = "moduleId", skip_serializing_if = "Option::is_none")]
1439 #[builder(default)]
1440 pub module_id: Option<ModuleId>,
1441
1442 #[serde(rename = "presentationHint", skip_serializing_if = "Option::is_none")]
1446 #[builder(default)]
1447 pub presentation_hint: Option<StackFramePresentationHint>,
1448
1449 #[serde(skip)]
1450 #[builder(default, setter(skip))]
1451 private: (),
1452}
1453
1454#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
1455pub enum StackFramePresentationHint {
1456 #[serde(rename = "normal")]
1457 Normal,
1458
1459 #[serde(rename = "label")]
1460 Label,
1461
1462 #[serde(rename = "subtle")]
1463 Subtle,
1464}
1465
1466#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
1468pub struct StackFrameFormat {
1469 #[serde(rename = "parameters", skip_serializing_if = "Option::is_none")]
1471 #[builder(default)]
1472 pub parameters: Option<bool>,
1473
1474 #[serde(rename = "parameterTypes", skip_serializing_if = "Option::is_none")]
1476 #[builder(default)]
1477 pub parameter_types: Option<bool>,
1478
1479 #[serde(rename = "parameterNames", skip_serializing_if = "Option::is_none")]
1481 #[builder(default)]
1482 pub parameter_names: Option<bool>,
1483
1484 #[serde(rename = "parameterValues", skip_serializing_if = "Option::is_none")]
1486 #[builder(default)]
1487 pub parameter_values: Option<bool>,
1488
1489 #[serde(rename = "line", skip_serializing_if = "Option::is_none")]
1491 #[builder(default)]
1492 pub line: Option<bool>,
1493
1494 #[serde(rename = "module", skip_serializing_if = "Option::is_none")]
1496 #[builder(default)]
1497 pub module: Option<bool>,
1498
1499 #[serde(rename = "includeAll", skip_serializing_if = "Option::is_none")]
1501 #[builder(default)]
1502 pub include_all: Option<bool>,
1503
1504 #[serde(skip)]
1505 #[builder(default, setter(skip))]
1506 private: (),
1507}
1508
1509#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
1511pub struct StepInTarget {
1512 #[serde(rename = "id")]
1514 pub id: i32,
1515
1516 #[serde(rename = "label")]
1518 pub label: String,
1519
1520 #[serde(skip)]
1521 #[builder(default, setter(skip))]
1522 private: (),
1523}
1524
1525#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
1527pub enum SteppingGranularity {
1528 #[serde(rename = "statement")]
1534 Statement,
1535
1536 #[serde(rename = "line")]
1538 Line,
1539
1540 #[serde(rename = "instruction")]
1542 Instruction,
1543}
1544
1545impl Default for SteppingGranularity {
1546 fn default() -> Self {
1547 SteppingGranularity::Statement
1548 }
1549}
1550
1551#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
1553pub struct Thread {
1554 #[serde(rename = "id")]
1556 pub id: i32,
1557
1558 #[serde(rename = "name")]
1560 pub name: String,
1561
1562 #[serde(skip)]
1563 #[builder(default, setter(skip))]
1564 private: (),
1565}
1566
1567#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
1569pub struct ValueFormat {
1570 #[serde(rename = "hex", skip_serializing_if = "Option::is_none")]
1572 #[builder(default)]
1573 pub hex: Option<bool>,
1574
1575 #[serde(skip)]
1576 #[builder(default, setter(skip))]
1577 private: (),
1578}
1579
1580#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
1592pub struct Variable {
1593 #[serde(rename = "name")]
1595 pub name: String,
1596
1597 #[serde(rename = "value")]
1599 pub value: String,
1600
1601 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
1605 #[builder(default)]
1606 pub type_: Option<String>,
1607
1608 #[serde(rename = "presentationHint", skip_serializing_if = "Option::is_none")]
1610 #[builder(default)]
1611 pub presentation_hint: Option<VariablePresentationHint>,
1612
1613 #[serde(rename = "evaluateName", skip_serializing_if = "Option::is_none")]
1615 #[builder(default)]
1616 pub evaluate_name: Option<String>,
1617
1618 #[serde(rename = "variablesReference")]
1620 pub variables_reference: i32,
1621
1622 #[serde(rename = "namedVariables", skip_serializing_if = "Option::is_none")]
1626 #[builder(default)]
1627 pub named_variables: Option<i32>,
1628
1629 #[serde(rename = "indexedVariables", skip_serializing_if = "Option::is_none")]
1633 #[builder(default)]
1634 pub indexed_variables: Option<i32>,
1635
1636 #[serde(rename = "memoryReference", skip_serializing_if = "Option::is_none")]
1640 #[builder(default)]
1641 pub memory_reference: Option<String>,
1642
1643 #[serde(skip)]
1644 #[builder(default, setter(skip))]
1645 private: (),
1646}
1647
1648#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize, TypedBuilder)]
1650pub struct VariablePresentationHint {
1651 #[serde(rename = "kind", skip_serializing_if = "Option::is_none")]
1653 #[builder(default)]
1654 pub kind: Option<VariableKind>,
1655
1656 #[serde(rename = "attributes", default, skip_serializing_if = "Vec::is_empty")]
1658 #[builder(default)]
1659 pub attributes: Vec<VariableAttribute>,
1660
1661 #[serde(rename = "visibility", skip_serializing_if = "Option::is_none")]
1663 #[builder(default)]
1664 pub visibility: Option<VariableVisibility>,
1665
1666 #[serde(skip)]
1667 #[builder(default, setter(skip))]
1668 private: (),
1669}
1670
1671#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
1672pub enum VariableKind {
1673 #[serde(rename = "property")]
1675 Property,
1676
1677 #[serde(rename = "method")]
1679 Method,
1680
1681 #[serde(rename = "class")]
1683 Class,
1684
1685 #[serde(rename = "data")]
1687 Data,
1688
1689 #[serde(rename = "event")]
1691 Event,
1692
1693 #[serde(rename = "baseClass")]
1695 BaseClass,
1696
1697 #[serde(rename = "innerClass")]
1699 InnerClass,
1700
1701 #[serde(rename = "interface")]
1703 Interface,
1704
1705 #[serde(rename = "mostDerivedClass")]
1707 MostDerivedClass,
1708
1709 #[serde(rename = "virtual")]
1713 Virtual,
1714
1715 #[serde(rename = "dataBreakpoint")]
1717 DataBreakpoint,
1718}
1719
1720#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
1721pub enum VariableAttribute {
1722 #[serde(rename = "static")]
1724 Static,
1725
1726 #[serde(rename = "constant")]
1728 Constant,
1729
1730 #[serde(rename = "readOnly")]
1732 ReadOnly,
1733
1734 #[serde(rename = "rawString")]
1736 RawString,
1737
1738 #[serde(rename = "hasObjectId")]
1740 HasObjectId,
1741
1742 #[serde(rename = "canHaveObjectId")]
1744 CanHaveObjectId,
1745
1746 #[serde(rename = "hasSideEffects")]
1748 HasSideEffects,
1749
1750 #[serde(rename = "hasDataBreakpoint")]
1752 HasDataBreakpoint,
1753}
1754
1755#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
1756pub enum VariableVisibility {
1757 #[serde(rename = "public")]
1758 Public,
1759
1760 #[serde(rename = "private")]
1761 Private,
1762
1763 #[serde(rename = "protected")]
1764 Protected,
1765
1766 #[serde(rename = "internal")]
1767 Internal,
1768
1769 #[serde(rename = "final")]
1770 Final,
1771}