1//===-- SBBroadcaster.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_SBBroadcaster_h_
11#define LLDB_SBBroadcaster_h_
12
13#include "lldb/API/SBDefines.h"
14
15namespace lldb {
16
17class SBBroadcaster
18{
19public:
20    SBBroadcaster ();
21
22    SBBroadcaster (const char *name);
23
24    SBBroadcaster (const SBBroadcaster &rhs);
25
26    const SBBroadcaster &
27    operator = (const SBBroadcaster &rhs);
28
29    ~SBBroadcaster();
30
31    bool
32    IsValid () const;
33
34    void
35    Clear ();
36
37    void
38    BroadcastEventByType (uint32_t event_type, bool unique = false);
39
40    void
41    BroadcastEvent (const lldb::SBEvent &event, bool unique = false);
42
43    void
44    AddInitialEventsToListener (const lldb::SBListener &listener, uint32_t requested_events);
45
46    uint32_t
47    AddListener (const lldb::SBListener &listener, uint32_t event_mask);
48
49    const char *
50    GetName () const;
51
52    bool
53    EventTypeHasListeners (uint32_t event_type);
54
55    bool
56    RemoveListener (const lldb::SBListener &listener, uint32_t event_mask = UINT32_MAX);
57
58    // This comparison is checking if the internal opaque pointer value
59    // is equal to that in "rhs".
60    bool
61    operator == (const lldb::SBBroadcaster &rhs) const;
62
63    // This comparison is checking if the internal opaque pointer value
64    // is not equal to that in "rhs".
65    bool
66    operator != (const lldb::SBBroadcaster &rhs) const;
67
68    // This comparison is checking if the internal opaque pointer value
69    // is less than that in "rhs" so SBBroadcaster objects can be contained
70    // in ordered containers.
71    bool
72    operator < (const lldb::SBBroadcaster &rhs) const;
73
74protected:
75    friend class SBCommandInterpreter;
76    friend class SBCommunication;
77    friend class SBEvent;
78    friend class SBListener;
79    friend class SBProcess;
80    friend class SBTarget;
81
82    SBBroadcaster (lldb_private::Broadcaster *broadcaster, bool owns);
83
84    lldb_private::Broadcaster *
85    get () const;
86
87    void
88    reset (lldb_private::Broadcaster *broadcaster, bool owns);
89
90private:
91    lldb::BroadcasterSP m_opaque_sp;
92    lldb_private::Broadcaster *m_opaque_ptr;
93};
94
95} // namespace lldb
96
97#endif  // LLDB_SBBroadcaster_h_
98