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/Core/ModuleSpec.h" 10 #include "lldb/Utility/ConstString.h" 11 #include "lldb/Utility/Event.h" 12 13 #include <string> 14 15 #ifndef LLDB_CORE_DEBUGGER_EVENTS_H 16 #define LLDB_CORE_DEBUGGER_EVENTS_H 17 18 namespace lldb_private { 19 class Stream; 20 21 class ProgressEventData : public EventData { 22 public: ProgressEventData(uint64_t progress_id,const std::string & message,uint64_t completed,uint64_t total,bool debugger_specific)23 ProgressEventData(uint64_t progress_id, const std::string &message, 24 uint64_t completed, uint64_t total, bool debugger_specific) 25 : m_message(message), m_id(progress_id), m_completed(completed), 26 m_total(total), m_debugger_specific(debugger_specific) {} 27 28 static ConstString GetFlavorString(); 29 30 ConstString GetFlavor() const override; 31 32 void Dump(Stream *s) const override; 33 34 static const ProgressEventData *GetEventDataFromEvent(const Event *event_ptr); GetID()35 uint64_t GetID() const { return m_id; } IsFinite()36 bool IsFinite() const { return m_total != UINT64_MAX; } GetCompleted()37 uint64_t GetCompleted() const { return m_completed; } GetTotal()38 uint64_t GetTotal() const { return m_total; } GetMessage()39 const std::string &GetMessage() const { return m_message; } IsDebuggerSpecific()40 bool IsDebuggerSpecific() const { return m_debugger_specific; } 41 42 private: 43 std::string m_message; 44 const uint64_t m_id; 45 uint64_t m_completed; 46 const uint64_t m_total; 47 const bool m_debugger_specific; 48 ProgressEventData(const ProgressEventData &) = delete; 49 const ProgressEventData &operator=(const ProgressEventData &) = delete; 50 }; 51 52 class DiagnosticEventData : public EventData { 53 public: 54 enum class Type { 55 Info, 56 Warning, 57 Error, 58 }; DiagnosticEventData(Type type,std::string message,bool debugger_specific)59 DiagnosticEventData(Type type, std::string message, bool debugger_specific) 60 : m_message(std::move(message)), m_type(type), 61 m_debugger_specific(debugger_specific) {} 62 ~DiagnosticEventData() override = default; 63 GetMessage()64 const std::string &GetMessage() const { return m_message; } IsDebuggerSpecific()65 bool IsDebuggerSpecific() const { return m_debugger_specific; } GetType()66 Type GetType() const { return m_type; } 67 68 llvm::StringRef GetPrefix() const; 69 70 void Dump(Stream *s) const override; 71 72 static ConstString GetFlavorString(); 73 ConstString GetFlavor() const override; 74 75 static const DiagnosticEventData * 76 GetEventDataFromEvent(const Event *event_ptr); 77 78 protected: 79 std::string m_message; 80 Type m_type; 81 const bool m_debugger_specific; 82 83 DiagnosticEventData(const DiagnosticEventData &) = delete; 84 const DiagnosticEventData &operator=(const DiagnosticEventData &) = delete; 85 }; 86 87 class SymbolChangeEventData : public EventData { 88 public: SymbolChangeEventData(lldb::DebuggerWP debugger_wp,ModuleSpec module_spec)89 SymbolChangeEventData(lldb::DebuggerWP debugger_wp, ModuleSpec module_spec) 90 : m_debugger_wp(debugger_wp), m_module_spec(std::move(module_spec)) {} 91 92 static ConstString GetFlavorString(); 93 ConstString GetFlavor() const override; 94 95 static const SymbolChangeEventData * 96 GetEventDataFromEvent(const Event *event_ptr); 97 98 void DoOnRemoval(Event *event_ptr) override; 99 100 private: 101 lldb::DebuggerWP m_debugger_wp; 102 ModuleSpec m_module_spec; 103 104 SymbolChangeEventData(const SymbolChangeEventData &) = delete; 105 const SymbolChangeEventData & 106 operator=(const SymbolChangeEventData &) = delete; 107 }; 108 109 } // namespace lldb_private 110 111 #endif // LLDB_CORE_DEBUGGER_EVENTS_H 112