]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - include/lldb/API/SBListener.h
Vendor import of lldb trunk r290819:
[FreeBSD/FreeBSD.git] / include / lldb / API / SBListener.h
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
15 namespace lldb {
16
17 class LLDB_API SBListener {
18 public:
19   SBListener();
20
21   SBListener(const char *name);
22
23   SBListener(const SBListener &rhs);
24
25   ~SBListener();
26
27   const lldb::SBListener &operator=(const lldb::SBListener &rhs);
28
29   void AddEvent(const lldb::SBEvent &event);
30
31   void Clear();
32
33   bool IsValid() const;
34
35   uint32_t StartListeningForEventClass(SBDebugger &debugger,
36                                        const char *broadcaster_class,
37                                        uint32_t event_mask);
38
39   bool StopListeningForEventClass(SBDebugger &debugger,
40                                   const char *broadcaster_class,
41                                   uint32_t event_mask);
42
43   uint32_t StartListeningForEvents(const lldb::SBBroadcaster &broadcaster,
44                                    uint32_t event_mask);
45
46   bool StopListeningForEvents(const lldb::SBBroadcaster &broadcaster,
47                               uint32_t event_mask);
48
49   // Returns true if an event was received, false if we timed out.
50   bool WaitForEvent(uint32_t num_seconds, lldb::SBEvent &event);
51
52   bool WaitForEventForBroadcaster(uint32_t num_seconds,
53                                   const lldb::SBBroadcaster &broadcaster,
54                                   lldb::SBEvent &sb_event);
55
56   bool WaitForEventForBroadcasterWithType(
57       uint32_t num_seconds, const lldb::SBBroadcaster &broadcaster,
58       uint32_t event_type_mask, lldb::SBEvent &sb_event);
59
60   bool PeekAtNextEvent(lldb::SBEvent &sb_event);
61
62   bool PeekAtNextEventForBroadcaster(const lldb::SBBroadcaster &broadcaster,
63                                      lldb::SBEvent &sb_event);
64
65   bool
66   PeekAtNextEventForBroadcasterWithType(const lldb::SBBroadcaster &broadcaster,
67                                         uint32_t event_type_mask,
68                                         lldb::SBEvent &sb_event);
69
70   bool GetNextEvent(lldb::SBEvent &sb_event);
71
72   bool GetNextEventForBroadcaster(const lldb::SBBroadcaster &broadcaster,
73                                   lldb::SBEvent &sb_event);
74
75   bool
76   GetNextEventForBroadcasterWithType(const lldb::SBBroadcaster &broadcaster,
77                                      uint32_t event_type_mask,
78                                      lldb::SBEvent &sb_event);
79
80   bool HandleBroadcastEvent(const lldb::SBEvent &event);
81
82 protected:
83   friend class SBAttachInfo;
84   friend class SBBroadcaster;
85   friend class SBCommandInterpreter;
86   friend class SBDebugger;
87   friend class SBLaunchInfo;
88   friend class SBTarget;
89
90   SBListener(const lldb::ListenerSP &listener_sp);
91
92   lldb::ListenerSP GetSP() { return m_opaque_sp; }
93
94 private:
95   lldb_private::Listener *operator->() const;
96
97   lldb_private::Listener *get() const;
98
99   void reset(lldb::ListenerSP listener_sp);
100
101   lldb::ListenerSP m_opaque_sp;
102   lldb_private::Listener *m_unused_ptr;
103 };
104
105 } // namespace lldb
106
107 #endif // LLDB_SBListener_h_