1//===-- SBEvent.h -----------------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_API_SBEVENT_H
10#define LLDB_API_SBEVENT_H
11
12#include "lldb/API/SBDefines.h"
13
14#include <cstdio>
15#include <vector>
16
17namespace lldb_private {
18namespace python {
19class SWIGBridge;
20}
21} // namespace lldb_private
22
23namespace lldb {
24
25class SBBroadcaster;
26
27class LLDB_API SBEvent {
28public:
29 SBEvent();
30
31 SBEvent(const lldb::SBEvent &rhs);
32
33 // Make an event that contains a C string.
34 SBEvent(uint32_t event, const char *cstr, uint32_t cstr_len);
35
36 ~SBEvent();
37
38 const SBEvent &operator=(const lldb::SBEvent &rhs);
39
40 explicit operator bool() const;
41
42 bool IsValid() const;
43
44 const char *GetDataFlavor();
45
46 uint32_t GetType() const;
47
48 lldb::SBBroadcaster GetBroadcaster() const;
49
50 const char *GetBroadcasterClass() const;
51
52#ifndef SWIG
53 bool BroadcasterMatchesPtr(const lldb::SBBroadcaster *broadcaster);
54#endif
55
56 bool BroadcasterMatchesRef(const lldb::SBBroadcaster &broadcaster);
57
58 void Clear();
59
60 static const char *GetCStringFromEvent(const lldb::SBEvent &event);
61
62 bool GetDescription(lldb::SBStream &description);
63
64 bool GetDescription(lldb::SBStream &description) const;
65
66protected:
67 friend class SBListener;
68 friend class SBBroadcaster;
69 friend class SBBreakpoint;
70 friend class SBDebugger;
71 friend class SBProcess;
72 friend class SBTarget;
73 friend class SBThread;
74 friend class SBWatchpoint;
75
76 friend class lldb_private::python::SWIGBridge;
77
78 SBEvent(lldb::EventSP &event_sp);
79
80 SBEvent(lldb_private::Event *event_sp);
81
82 lldb::EventSP &GetSP() const;
83
84 void reset(lldb::EventSP &event_sp);
85
86 void reset(lldb_private::Event *event);
87
88 lldb_private::Event *get() const;
89
90private:
91 mutable lldb::EventSP m_event_sp;
92 mutable lldb_private::Event *m_opaque_ptr = nullptr;
93};
94
95} // namespace lldb
96
97#endif // LLDB_API_SBEVENT_H
98

source code of lldb/include/lldb/API/SBEvent.h