]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/lldb/include/lldb/Core/DebuggerEvents.h
zfs: merge openzfs/zfs@86783d7d9 (zfs-2.1-release) into stable/13
[FreeBSD/FreeBSD.git] / contrib / llvm-project / lldb / include / lldb / Core / DebuggerEvents.h
1 //===-- DebuggerEvents.h ----------------------------------------*- C++ -*-===//
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 #include "lldb/Utility/ConstString.h"
10 #include "lldb/Utility/Event.h"
11
12 #include <string>
13
14 #ifndef LLDB_CORE_DEBUGGER_EVENTS_H
15 #define LLDB_CORE_DEBUGGER_EVENTS_H
16
17 namespace lldb_private {
18 class Stream;
19
20 class ProgressEventData : public EventData {
21 public:
22   ProgressEventData(uint64_t progress_id, const std::string &message,
23                     uint64_t completed, uint64_t total, bool debugger_specific)
24       : m_message(message), m_id(progress_id), m_completed(completed),
25         m_total(total), m_debugger_specific(debugger_specific) {}
26
27   static ConstString GetFlavorString();
28
29   ConstString GetFlavor() const override;
30
31   void Dump(Stream *s) const override;
32
33   static const ProgressEventData *GetEventDataFromEvent(const Event *event_ptr);
34   uint64_t GetID() const { return m_id; }
35   bool IsFinite() const { return m_total != UINT64_MAX; }
36   uint64_t GetCompleted() const { return m_completed; }
37   uint64_t GetTotal() const { return m_total; }
38   const std::string &GetMessage() const { return m_message; }
39   bool IsDebuggerSpecific() const { return m_debugger_specific; }
40
41 private:
42   std::string m_message;
43   const uint64_t m_id;
44   uint64_t m_completed;
45   const uint64_t m_total;
46   const bool m_debugger_specific;
47   ProgressEventData(const ProgressEventData &) = delete;
48   const ProgressEventData &operator=(const ProgressEventData &) = delete;
49 };
50
51 class DiagnosticEventData : public EventData {
52 public:
53   enum class Type {
54     Warning,
55     Error,
56   };
57   DiagnosticEventData(Type type, std::string message, bool debugger_specific)
58       : m_message(std::move(message)), m_type(type),
59         m_debugger_specific(debugger_specific) {}
60   ~DiagnosticEventData() override = default;
61
62   const std::string &GetMessage() const { return m_message; }
63   bool IsDebuggerSpecific() const { return m_debugger_specific; }
64   Type GetType() const { return m_type; }
65
66   llvm::StringRef GetPrefix() const;
67
68   void Dump(Stream *s) const override;
69
70   static ConstString GetFlavorString();
71   ConstString GetFlavor() const override;
72
73   static const DiagnosticEventData *
74   GetEventDataFromEvent(const Event *event_ptr);
75
76 protected:
77   std::string m_message;
78   Type m_type;
79   const bool m_debugger_specific;
80
81   DiagnosticEventData(const DiagnosticEventData &) = delete;
82   const DiagnosticEventData &operator=(const DiagnosticEventData &) = delete;
83 };
84
85 } // namespace lldb_private
86
87 #endif // LLDB_CORE_DEBUGGER_EVENTS_H