1//===-- ProtocolEvents.h --------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This file contains POD structs based on the DAP specification at
10// https://microsoft.github.io/debug-adapter-protocol/specification
11//
12// This is not meant to be a complete implementation, new interfaces are added
13// when they're needed.
14//
15// Each struct has a toJSON and fromJSON function, that converts between
16// the struct and a JSON representation. (See JSON.h)
17//
18//===----------------------------------------------------------------------===//
19
20#ifndef LLDB_TOOLS_LLDB_DAP_PROTOCOL_PROTOCOL_EVENTS_H
21#define LLDB_TOOLS_LLDB_DAP_PROTOCOL_PROTOCOL_EVENTS_H
22
23#include "Protocol/ProtocolTypes.h"
24#include "llvm/Support/JSON.h"
25
26namespace lldb_dap::protocol {
27
28/// The event indicates that one or more capabilities have changed.
29///
30/// Since the capabilities are dependent on the client and its UI, it might not
31/// be possible to change that at random times (or too late).
32///
33/// Consequently this event has a hint characteristic: a client can only be
34/// expected to make a 'best effort' in honoring individual capabilities but
35/// there are no guarantees.
36///
37/// Only changed capabilities need to be included, all other capabilities keep
38/// their values.
39struct CapabilitiesEventBody {
40 Capabilities capabilities;
41};
42llvm::json::Value toJSON(const CapabilitiesEventBody &);
43
44/// The event indicates that some information about a module has changed.
45struct ModuleEventBody {
46 enum Reason : unsigned { eReasonNew, eReasonChanged, eReasonRemoved };
47
48 /// The new, changed, or removed module. In case of `removed` only the module
49 /// id is used.
50 Module module;
51
52 /// The reason for the event.
53 /// Values: 'new', 'changed', 'removed'
54 Reason reason;
55};
56llvm::json::Value toJSON(const ModuleEventBody::Reason &);
57llvm::json::Value toJSON(const ModuleEventBody &);
58
59} // end namespace lldb_dap::protocol
60
61#endif
62

source code of lldb/tools/lldb-dap/Protocol/ProtocolEvents.h