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