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