Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/editor/debugger/debug_adapter/debug_adapter_parser.h
9913 views
1
/**************************************************************************/
2
/* debug_adapter_parser.h */
3
/**************************************************************************/
4
/* This file is part of: */
5
/* GODOT ENGINE */
6
/* https://godotengine.org */
7
/**************************************************************************/
8
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
9
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
10
/* */
11
/* Permission is hereby granted, free of charge, to any person obtaining */
12
/* a copy of this software and associated documentation files (the */
13
/* "Software"), to deal in the Software without restriction, including */
14
/* without limitation the rights to use, copy, modify, merge, publish, */
15
/* distribute, sublicense, and/or sell copies of the Software, and to */
16
/* permit persons to whom the Software is furnished to do so, subject to */
17
/* the following conditions: */
18
/* */
19
/* The above copyright notice and this permission notice shall be */
20
/* included in all copies or substantial portions of the Software. */
21
/* */
22
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
23
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
24
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
25
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
26
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
27
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
28
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
29
/**************************************************************************/
30
31
#pragma once
32
33
#include "core/config/project_settings.h"
34
#include "core/debugger/remote_debugger.h"
35
#include "debug_adapter_protocol.h"
36
#include "debug_adapter_types.h"
37
38
struct DAPeer;
39
class DebugAdapterProtocol;
40
41
class DebugAdapterParser : public Object {
42
GDCLASS(DebugAdapterParser, Object);
43
44
private:
45
friend DebugAdapterProtocol;
46
47
_FORCE_INLINE_ bool is_valid_path(const String &p_path) const {
48
// If path contains \, it's a Windows path, so we need to convert it to /, and check as case-insensitive.
49
if (p_path.contains_char('\\')) {
50
String project_path = ProjectSettings::get_singleton()->get_resource_path();
51
String path = p_path.replace_char('\\', '/');
52
return path.containsn(project_path);
53
}
54
return p_path.begins_with(ProjectSettings::get_singleton()->get_resource_path());
55
}
56
57
protected:
58
static void _bind_methods();
59
60
Dictionary prepare_base_event() const;
61
Dictionary prepare_success_response(const Dictionary &p_params) const;
62
Dictionary prepare_error_response(const Dictionary &p_params, DAP::ErrorType err_type, const Dictionary &variables = Dictionary()) const;
63
64
Dictionary ev_stopped() const;
65
66
public:
67
// Requests
68
Dictionary req_initialize(const Dictionary &p_params) const;
69
Dictionary req_launch(const Dictionary &p_params) const;
70
Dictionary req_disconnect(const Dictionary &p_params) const;
71
Dictionary req_attach(const Dictionary &p_params) const;
72
Dictionary req_restart(const Dictionary &p_params) const;
73
Dictionary req_terminate(const Dictionary &p_params) const;
74
Dictionary req_configurationDone(const Dictionary &p_params) const;
75
Dictionary req_pause(const Dictionary &p_params) const;
76
Dictionary req_continue(const Dictionary &p_params) const;
77
Dictionary req_threads(const Dictionary &p_params) const;
78
Dictionary req_stackTrace(const Dictionary &p_params) const;
79
Dictionary req_setBreakpoints(const Dictionary &p_params) const;
80
Dictionary req_breakpointLocations(const Dictionary &p_params) const;
81
Dictionary req_scopes(const Dictionary &p_params) const;
82
Dictionary req_variables(const Dictionary &p_params) const;
83
Dictionary req_next(const Dictionary &p_params) const;
84
Dictionary req_stepIn(const Dictionary &p_params) const;
85
Dictionary req_evaluate(const Dictionary &p_params) const;
86
Dictionary req_godot_put_msg(const Dictionary &p_params) const;
87
88
// Internal requests
89
Dictionary _launch_process(const Dictionary &p_params) const;
90
91
// Events
92
Dictionary ev_initialized() const;
93
Dictionary ev_process(const String &p_command) const;
94
Dictionary ev_terminated() const;
95
Dictionary ev_exited(const int &p_exitcode) const;
96
Dictionary ev_stopped_paused() const;
97
Dictionary ev_stopped_exception(const String &p_error) const;
98
Dictionary ev_stopped_breakpoint(const int &p_id) const;
99
Dictionary ev_stopped_step() const;
100
Dictionary ev_continued() const;
101
Dictionary ev_output(const String &p_message, RemoteDebugger::MessageType p_type) const;
102
Dictionary ev_custom_data(const String &p_msg, const Array &p_data) const;
103
Dictionary ev_breakpoint(const DAP::Breakpoint &p_breakpoint, const bool &p_enabled) const;
104
};
105
106