SBListener.h revision 271a5db096ae183e9235ebd273c4a6aab6130b3e
124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBListener.h --------------------------------------------*- C++ -*-===//
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//                     The LLVM Compiler Infrastructure
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details.
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef LLDB_SBListener_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_SBListener_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
135f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBDefines.h"
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb {
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBListener
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
20538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    SBListener ();
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
22538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    SBListener (const char *name);
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
24538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    SBListener (const SBListener &rhs);
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ~SBListener ();
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
28538eb82a89a68dbc57251915080bd5152b333978Greg Clayton#ifndef SWIG
29538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    const lldb::SBListener &
30538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    operator = (const lldb::SBListener &rhs);
31538eb82a89a68dbc57251915080bd5152b333978Greg Clayton#endif
32538eb82a89a68dbc57251915080bd5152b333978Greg Clayton
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    AddEvent (const lldb::SBEvent &event);
3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    Clear ();
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    IsValid () const;
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    uint32_t
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    StartListeningForEvents (const lldb::SBBroadcaster& broadcaster,
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                             uint32_t event_mask);
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    StopListeningForEvents (const lldb::SBBroadcaster& broadcaster,
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                            uint32_t event_mask);
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Returns true if an event was recieved, false if we timed out.
5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    WaitForEvent (uint32_t num_seconds,
5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                  lldb::SBEvent &event);
5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    WaitForEventForBroadcaster (uint32_t num_seconds,
5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                const lldb::SBBroadcaster &broadcaster,
5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                lldb::SBEvent &sb_event);
5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    WaitForEventForBroadcasterWithType (uint32_t num_seconds,
6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                        const lldb::SBBroadcaster &broadcaster,
6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                        uint32_t event_type_mask,
6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                        lldb::SBEvent &sb_event);
6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    PeekAtNextEvent (lldb::SBEvent &sb_event);
6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    PeekAtNextEventForBroadcaster (const lldb::SBBroadcaster &broadcaster,
7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                   lldb::SBEvent &sb_event);
7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    PeekAtNextEventForBroadcasterWithType (const lldb::SBBroadcaster &broadcaster,
7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                           uint32_t event_type_mask,
7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                           lldb::SBEvent &sb_event);
7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetNextEvent (lldb::SBEvent &sb_event);
8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetNextEventForBroadcaster (const lldb::SBBroadcaster &broadcaster,
8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                lldb::SBEvent &sb_event);
8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetNextEventForBroadcasterWithType (const lldb::SBBroadcaster &broadcaster,
8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                        uint32_t event_type_mask,
8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                                        lldb::SBEvent &sb_event);
8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool
9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    HandleBroadcastEvent (const lldb::SBEvent &event);
9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
93538eb82a89a68dbc57251915080bd5152b333978Greg Claytonprotected:
943f5ee7fd6991891f0892bd71537763d9b59acd12Greg Clayton    friend class SBBroadcaster;
953f5ee7fd6991891f0892bd71537763d9b59acd12Greg Clayton    friend class SBCommandInterpreter;
963f5ee7fd6991891f0892bd71537763d9b59acd12Greg Clayton    friend class SBDebugger;
973f5ee7fd6991891f0892bd71537763d9b59acd12Greg Clayton    friend class SBTarget;
9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
99538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    SBListener (lldb_private::Listener &listener);
100538eb82a89a68dbc57251915080bd5152b333978Greg Clayton
101538eb82a89a68dbc57251915080bd5152b333978Greg Claytonprivate:
102538eb82a89a68dbc57251915080bd5152b333978Greg Clayton
10324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef SWIG
10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
10524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb_private::Listener *
10624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator->() const;
10724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
10824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb_private::Listener *
10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    get() const;
11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb_private::Listener &
112271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    ref() const;
113271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton
114271a5db096ae183e9235ebd273c4a6aab6130b3eGreg Clayton    lldb_private::Listener &
11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator *();
11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const lldb_private::Listener &
11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator *() const;
11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
12063094e0bb161580564954dee512955c1c79d3476Greg Clayton    void
12163094e0bb161580564954dee512955c1c79d3476Greg Clayton    reset(lldb_private::Listener *listener, bool transfer_ownership);
12263094e0bb161580564954dee512955c1c79d3476Greg Clayton
12324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif
12424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
125538eb82a89a68dbc57251915080bd5152b333978Greg Clayton    lldb::ListenerSP m_opaque_sp;
12663094e0bb161580564954dee512955c1c79d3476Greg Clayton    lldb_private::Listener *m_opaque_ptr;
12724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
12824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
12924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb
13024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
13124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif  // LLDB_SBListener_h_
132