]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/API/SBBreakpoint.h
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / include / lldb / API / SBBreakpoint.h
1 //===-- SBBreakpoint.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_SBBreakpoint_h_
11 #define LLDB_SBBreakpoint_h_
12
13 #include "lldb/API/SBDefines.h"
14
15 class SBBreakpointListImpl;
16
17 namespace lldb {
18
19 class LLDB_API SBBreakpoint {
20 public:
21
22   SBBreakpoint();
23
24   SBBreakpoint(const lldb::SBBreakpoint &rhs);
25
26   SBBreakpoint(const lldb::BreakpointSP &bp_sp);
27
28   ~SBBreakpoint();
29
30   const lldb::SBBreakpoint &operator=(const lldb::SBBreakpoint &rhs);
31
32   // Tests to see if the opaque breakpoint object in this object matches the
33   // opaque breakpoint object in "rhs".
34   bool operator==(const lldb::SBBreakpoint &rhs);
35
36   bool operator!=(const lldb::SBBreakpoint &rhs);
37
38   break_id_t GetID() const;
39
40   bool IsValid() const;
41
42   void ClearAllBreakpointSites();
43
44   lldb::SBBreakpointLocation FindLocationByAddress(lldb::addr_t vm_addr);
45
46   lldb::break_id_t FindLocationIDByAddress(lldb::addr_t vm_addr);
47
48   lldb::SBBreakpointLocation FindLocationByID(lldb::break_id_t bp_loc_id);
49
50   lldb::SBBreakpointLocation GetLocationAtIndex(uint32_t index);
51
52   void SetEnabled(bool enable);
53
54   bool IsEnabled();
55
56   void SetOneShot(bool one_shot);
57
58   bool IsOneShot() const;
59
60   bool IsInternal();
61
62   uint32_t GetHitCount() const;
63
64   void SetIgnoreCount(uint32_t count);
65
66   uint32_t GetIgnoreCount() const;
67
68   void SetCondition(const char *condition);
69
70   const char *GetCondition();
71
72   void SetAutoContinue(bool auto_continue);
73
74   bool GetAutoContinue();
75
76   void SetThreadID(lldb::tid_t sb_thread_id);
77
78   lldb::tid_t GetThreadID();
79
80   void SetThreadIndex(uint32_t index);
81
82   uint32_t GetThreadIndex() const;
83
84   void SetThreadName(const char *thread_name);
85
86   const char *GetThreadName() const;
87
88   void SetQueueName(const char *queue_name);
89
90   const char *GetQueueName() const;
91
92   void SetCallback(SBBreakpointHitCallback callback, void *baton);
93
94   void SetScriptCallbackFunction(const char *callback_function_name);
95
96   void SetCommandLineCommands(SBStringList &commands);
97
98   bool GetCommandLineCommands(SBStringList &commands);
99
100   SBError SetScriptCallbackBody(const char *script_body_text);
101
102   bool AddName(const char *new_name);
103
104   void RemoveName(const char *name_to_remove);
105
106   bool MatchesName(const char *name);
107
108   void GetNames(SBStringList &names);
109
110   size_t GetNumResolvedLocations() const;
111
112   size_t GetNumLocations() const;
113
114   bool GetDescription(lldb::SBStream &description);
115
116   bool GetDescription(lldb::SBStream &description, bool include_locations);
117
118   static bool EventIsBreakpointEvent(const lldb::SBEvent &event);
119
120   static lldb::BreakpointEventType
121   GetBreakpointEventTypeFromEvent(const lldb::SBEvent &event);
122
123   static lldb::SBBreakpoint GetBreakpointFromEvent(const lldb::SBEvent &event);
124
125   static lldb::SBBreakpointLocation
126   GetBreakpointLocationAtIndexFromEvent(const lldb::SBEvent &event,
127                                         uint32_t loc_idx);
128
129   static uint32_t
130   GetNumBreakpointLocationsFromEvent(const lldb::SBEvent &event_sp);
131
132   bool IsHardware() const;
133
134   // Can only be called from a ScriptedBreakpointResolver...
135   SBError
136   AddLocation(SBAddress &address);
137   
138 private:
139   friend class SBBreakpointList;
140   friend class SBBreakpointLocation;
141   friend class SBBreakpointName;
142   friend class SBTarget;
143
144   lldb::BreakpointSP GetSP() const;
145
146   lldb::BreakpointWP m_opaque_wp;
147 };
148
149 class LLDB_API SBBreakpointList {
150 public:
151   SBBreakpointList(SBTarget &target);
152
153   ~SBBreakpointList();
154
155   size_t GetSize() const;
156
157   SBBreakpoint GetBreakpointAtIndex(size_t idx);
158
159   SBBreakpoint FindBreakpointByID(lldb::break_id_t);
160
161   void Append(const SBBreakpoint &sb_bkpt);
162
163   bool AppendIfUnique(const SBBreakpoint &sb_bkpt);
164
165   void AppendByID(lldb::break_id_t id);
166
167   void Clear();
168
169 protected:
170   friend class SBTarget;
171
172   void CopyToBreakpointIDList(lldb_private::BreakpointIDList &bp_id_list);
173
174 private:
175   std::shared_ptr<SBBreakpointListImpl> m_opaque_sp;
176 };
177
178 } // namespace lldb
179
180 #endif // LLDB_SBBreakpoint_h_