1 //===-- SBListener.h --------------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef LLDB_SBListener_h_
11 #define LLDB_SBListener_h_
13 #include "lldb/API/SBDefines.h"
17 class LLDB_API SBListener {
21 SBListener(const char *name);
23 SBListener(const SBListener &rhs);
27 const lldb::SBListener &operator=(const lldb::SBListener &rhs);
29 void AddEvent(const lldb::SBEvent &event);
35 uint32_t StartListeningForEventClass(SBDebugger &debugger,
36 const char *broadcaster_class,
39 bool StopListeningForEventClass(SBDebugger &debugger,
40 const char *broadcaster_class,
43 uint32_t StartListeningForEvents(const lldb::SBBroadcaster &broadcaster,
46 bool StopListeningForEvents(const lldb::SBBroadcaster &broadcaster,
49 // Returns true if an event was received, false if we timed out.
50 bool WaitForEvent(uint32_t num_seconds, lldb::SBEvent &event);
52 bool WaitForEventForBroadcaster(uint32_t num_seconds,
53 const lldb::SBBroadcaster &broadcaster,
54 lldb::SBEvent &sb_event);
56 bool WaitForEventForBroadcasterWithType(
57 uint32_t num_seconds, const lldb::SBBroadcaster &broadcaster,
58 uint32_t event_type_mask, lldb::SBEvent &sb_event);
60 bool PeekAtNextEvent(lldb::SBEvent &sb_event);
62 bool PeekAtNextEventForBroadcaster(const lldb::SBBroadcaster &broadcaster,
63 lldb::SBEvent &sb_event);
66 PeekAtNextEventForBroadcasterWithType(const lldb::SBBroadcaster &broadcaster,
67 uint32_t event_type_mask,
68 lldb::SBEvent &sb_event);
70 bool GetNextEvent(lldb::SBEvent &sb_event);
72 bool GetNextEventForBroadcaster(const lldb::SBBroadcaster &broadcaster,
73 lldb::SBEvent &sb_event);
76 GetNextEventForBroadcasterWithType(const lldb::SBBroadcaster &broadcaster,
77 uint32_t event_type_mask,
78 lldb::SBEvent &sb_event);
80 bool HandleBroadcastEvent(const lldb::SBEvent &event);
83 friend class SBAttachInfo;
84 friend class SBBroadcaster;
85 friend class SBCommandInterpreter;
86 friend class SBDebugger;
87 friend class SBLaunchInfo;
88 friend class SBTarget;
90 SBListener(const lldb::ListenerSP &listener_sp);
92 lldb::ListenerSP GetSP() { return m_opaque_sp; }
95 lldb_private::Listener *operator->() const;
97 lldb_private::Listener *get() const;
99 void reset(lldb::ListenerSP listener_sp);
101 lldb::ListenerSP m_opaque_sp;
102 lldb_private::Listener *m_unused_ptr;
107 #endif // LLDB_SBListener_h_