SBListener.h revision 280031
1//===-- SBListener.h --------------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#ifndef LLDB_SBListener_h_ 11#define LLDB_SBListener_h_ 12 13#include "lldb/API/SBDefines.h" 14 15namespace lldb { 16 17class SBListener 18{ 19public: 20 SBListener (); 21 22 SBListener (const char *name); 23 24 SBListener (const SBListener &rhs); 25 26 ~SBListener (); 27 28 const lldb::SBListener & 29 operator = (const lldb::SBListener &rhs); 30 31 void 32 AddEvent (const lldb::SBEvent &event); 33 34 void 35 Clear (); 36 37 bool 38 IsValid () const; 39 40 uint32_t 41 StartListeningForEventClass (SBDebugger &debugger, 42 const char *broadcaster_class, 43 uint32_t event_mask); 44 45 bool 46 StopListeningForEventClass (SBDebugger &debugger, 47 const char *broadcaster_class, 48 uint32_t event_mask); 49 50 uint32_t 51 StartListeningForEvents (const lldb::SBBroadcaster& broadcaster, 52 uint32_t event_mask); 53 54 bool 55 StopListeningForEvents (const lldb::SBBroadcaster& broadcaster, 56 uint32_t event_mask); 57 58 // Returns true if an event was received, false if we timed out. 59 bool 60 WaitForEvent (uint32_t num_seconds, 61 lldb::SBEvent &event); 62 63 bool 64 WaitForEventForBroadcaster (uint32_t num_seconds, 65 const lldb::SBBroadcaster &broadcaster, 66 lldb::SBEvent &sb_event); 67 68 bool 69 WaitForEventForBroadcasterWithType (uint32_t num_seconds, 70 const lldb::SBBroadcaster &broadcaster, 71 uint32_t event_type_mask, 72 lldb::SBEvent &sb_event); 73 74 bool 75 PeekAtNextEvent (lldb::SBEvent &sb_event); 76 77 bool 78 PeekAtNextEventForBroadcaster (const lldb::SBBroadcaster &broadcaster, 79 lldb::SBEvent &sb_event); 80 81 bool 82 PeekAtNextEventForBroadcasterWithType (const lldb::SBBroadcaster &broadcaster, 83 uint32_t event_type_mask, 84 lldb::SBEvent &sb_event); 85 86 bool 87 GetNextEvent (lldb::SBEvent &sb_event); 88 89 bool 90 GetNextEventForBroadcaster (const lldb::SBBroadcaster &broadcaster, 91 lldb::SBEvent &sb_event); 92 93 bool 94 GetNextEventForBroadcasterWithType (const lldb::SBBroadcaster &broadcaster, 95 uint32_t event_type_mask, 96 lldb::SBEvent &sb_event); 97 98 bool 99 HandleBroadcastEvent (const lldb::SBEvent &event); 100 101protected: 102 friend class SBAttachInfo; 103 friend class SBBroadcaster; 104 friend class SBCommandInterpreter; 105 friend class SBDebugger; 106 friend class SBLaunchInfo; 107 friend class SBTarget; 108 109 SBListener (lldb_private::Listener &listener); 110 111 SBListener (const lldb::ListenerSP &listener_sp); 112 113 lldb::ListenerSP 114 GetSP () 115 { 116 return m_opaque_sp; 117 } 118 119private: 120 121 lldb_private::Listener * 122 operator->() const; 123 124 lldb_private::Listener * 125 get() const; 126 127 lldb_private::Listener & 128 ref() const; 129 130 lldb_private::Listener & 131 operator *(); 132 133 const lldb_private::Listener & 134 operator *() const; 135 136 void 137 reset(lldb_private::Listener *listener, bool transfer_ownership); 138 139 lldb::ListenerSP m_opaque_sp; 140 lldb_private::Listener *m_opaque_ptr; 141}; 142 143} // namespace lldb 144 145#endif // LLDB_SBListener_h_ 146