SBListener.h revision 7dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2
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 StartListeningForEvents (const lldb::SBBroadcaster& broadcaster, 42 uint32_t event_mask); 43 44 bool 45 StopListeningForEvents (const lldb::SBBroadcaster& broadcaster, 46 uint32_t event_mask); 47 48 // Returns true if an event was recieved, false if we timed out. 49 bool 50 WaitForEvent (uint32_t num_seconds, 51 lldb::SBEvent &event); 52 53 bool 54 WaitForEventForBroadcaster (uint32_t num_seconds, 55 const lldb::SBBroadcaster &broadcaster, 56 lldb::SBEvent &sb_event); 57 58 bool 59 WaitForEventForBroadcasterWithType (uint32_t num_seconds, 60 const lldb::SBBroadcaster &broadcaster, 61 uint32_t event_type_mask, 62 lldb::SBEvent &sb_event); 63 64 bool 65 PeekAtNextEvent (lldb::SBEvent &sb_event); 66 67 bool 68 PeekAtNextEventForBroadcaster (const lldb::SBBroadcaster &broadcaster, 69 lldb::SBEvent &sb_event); 70 71 bool 72 PeekAtNextEventForBroadcasterWithType (const lldb::SBBroadcaster &broadcaster, 73 uint32_t event_type_mask, 74 lldb::SBEvent &sb_event); 75 76 bool 77 GetNextEvent (lldb::SBEvent &sb_event); 78 79 bool 80 GetNextEventForBroadcaster (const lldb::SBBroadcaster &broadcaster, 81 lldb::SBEvent &sb_event); 82 83 bool 84 GetNextEventForBroadcasterWithType (const lldb::SBBroadcaster &broadcaster, 85 uint32_t event_type_mask, 86 lldb::SBEvent &sb_event); 87 88 bool 89 HandleBroadcastEvent (const lldb::SBEvent &event); 90 91protected: 92 friend class SBBroadcaster; 93 friend class SBCommandInterpreter; 94 friend class SBDebugger; 95 friend class SBTarget; 96 97 SBListener (lldb_private::Listener &listener); 98 99private: 100 101 lldb_private::Listener * 102 operator->() const; 103 104 lldb_private::Listener * 105 get() const; 106 107 lldb_private::Listener & 108 ref() const; 109 110 lldb_private::Listener & 111 operator *(); 112 113 const lldb_private::Listener & 114 operator *() const; 115 116 void 117 reset(lldb_private::Listener *listener, bool transfer_ownership); 118 119 lldb::ListenerSP m_opaque_sp; 120 lldb_private::Listener *m_opaque_ptr; 121}; 122 123} // namespace lldb 124 125#endif // LLDB_SBListener_h_ 126