1 //===-- SBBroadcaster.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 #ifndef LLDB_API_SBBROADCASTER_H 10 #define LLDB_API_SBBROADCASTER_H 11 12 #include "lldb/API/SBDefines.h" 13 14 namespace lldb { 15 16 class LLDB_API SBBroadcaster { 17 public: 18 SBBroadcaster(); 19 20 SBBroadcaster(const char *name); 21 22 SBBroadcaster(const SBBroadcaster &rhs); 23 24 const SBBroadcaster &operator=(const SBBroadcaster &rhs); 25 26 ~SBBroadcaster(); 27 28 explicit operator bool() const; 29 30 bool IsValid() const; 31 32 void Clear(); 33 34 void BroadcastEventByType(uint32_t event_type, bool unique = false); 35 36 void BroadcastEvent(const lldb::SBEvent &event, bool unique = false); 37 38 void AddInitialEventsToListener(const lldb::SBListener &listener, 39 uint32_t requested_events); 40 41 uint32_t AddListener(const lldb::SBListener &listener, uint32_t event_mask); 42 43 const char *GetName() const; 44 45 bool EventTypeHasListeners(uint32_t event_type); 46 47 bool RemoveListener(const lldb::SBListener &listener, 48 uint32_t event_mask = UINT32_MAX); 49 50 // This comparison is checking if the internal opaque pointer value is equal 51 // to that in "rhs". 52 bool operator==(const lldb::SBBroadcaster &rhs) const; 53 54 // This comparison is checking if the internal opaque pointer value is not 55 // equal to that in "rhs". 56 bool operator!=(const lldb::SBBroadcaster &rhs) const; 57 58 // This comparison is checking if the internal opaque pointer value is less 59 // than that in "rhs" so SBBroadcaster objects can be contained in ordered 60 // containers. 61 bool operator<(const lldb::SBBroadcaster &rhs) const; 62 63 protected: 64 friend class SBCommandInterpreter; 65 friend class SBCommunication; 66 friend class SBEvent; 67 friend class SBListener; 68 friend class SBProcess; 69 friend class SBTarget; 70 71 SBBroadcaster(lldb_private::Broadcaster *broadcaster, bool owns); 72 73 lldb_private::Broadcaster *get() const; 74 75 void reset(lldb_private::Broadcaster *broadcaster, bool owns); 76 77 private: 78 lldb::BroadcasterSP m_opaque_sp; 79 lldb_private::Broadcaster *m_opaque_ptr; 80 }; 81 82 } // namespace lldb 83 84 #endif // LLDB_API_SBBROADCASTER_H 85