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