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