62 lines
2.2 KiB
C++
62 lines
2.2 KiB
C++
//===-- ProtocolEvents.h --------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file contains POD structs based on the DAP specification at
|
|
// https://microsoft.github.io/debug-adapter-protocol/specification
|
|
//
|
|
// This is not meant to be a complete implementation, new interfaces are added
|
|
// when they're needed.
|
|
//
|
|
// Each struct has a toJSON and fromJSON function, that converts between
|
|
// the struct and a JSON representation. (See JSON.h)
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLDB_TOOLS_LLDB_DAP_PROTOCOL_PROTOCOL_EVENTS_H
|
|
#define LLDB_TOOLS_LLDB_DAP_PROTOCOL_PROTOCOL_EVENTS_H
|
|
|
|
#include "Protocol/ProtocolTypes.h"
|
|
#include "llvm/Support/JSON.h"
|
|
|
|
namespace lldb_dap::protocol {
|
|
|
|
/// The event indicates that one or more capabilities have changed.
|
|
///
|
|
/// Since the capabilities are dependent on the client and its UI, it might not
|
|
/// be possible to change that at random times (or too late).
|
|
///
|
|
/// Consequently this event has a hint characteristic: a client can only be
|
|
/// expected to make a 'best effort' in honoring individual capabilities but
|
|
/// there are no guarantees.
|
|
///
|
|
/// Only changed capabilities need to be included, all other capabilities keep
|
|
/// their values.
|
|
struct CapabilitiesEventBody {
|
|
Capabilities capabilities;
|
|
};
|
|
llvm::json::Value toJSON(const CapabilitiesEventBody &);
|
|
|
|
/// The event indicates that some information about a module has changed.
|
|
struct ModuleEventBody {
|
|
enum Reason : unsigned { eReasonNew, eReasonChanged, eReasonRemoved };
|
|
|
|
/// The new, changed, or removed module. In case of `removed` only the module
|
|
/// id is used.
|
|
Module module;
|
|
|
|
/// The reason for the event.
|
|
/// Values: 'new', 'changed', 'removed'
|
|
Reason reason;
|
|
};
|
|
llvm::json::Value toJSON(const ModuleEventBody::Reason &);
|
|
llvm::json::Value toJSON(const ModuleEventBody &);
|
|
|
|
} // end namespace lldb_dap::protocol
|
|
|
|
#endif
|