CommandObjectBreakpoint.h revision d457122516eb9c27f64b8f03a566fdfd0de0f2e6
1//===-- CommandObjectBreakpoint.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 liblldb_CommandObjectBreakpoint_h_
11#define liblldb_CommandObjectBreakpoint_h_
12
13// C Includes
14// C++ Includes
15
16#include <utility>
17#include <vector>
18
19// Other libraries and framework includes
20// Project includes
21#include "lldb/Core/Address.h"
22#include "lldb/Interpreter/CommandObjectMultiword.h"
23#include "lldb/Interpreter/Options.h"
24#include "lldb/Core/STLUtils.h"
25
26namespace lldb_private {
27
28//-------------------------------------------------------------------------
29// CommandObjectMultiwordBreakpoint
30//-------------------------------------------------------------------------
31
32class CommandObjectMultiwordBreakpoint : public CommandObjectMultiword
33{
34public:
35    CommandObjectMultiwordBreakpoint (CommandInterpreter *interpreter);
36
37    virtual
38    ~CommandObjectMultiwordBreakpoint ();
39
40    static void
41    VerifyBreakpointIDs (Args &args, Target *target, CommandReturnObject &result, BreakpointIDList *valid_ids);
42
43};
44
45//-------------------------------------------------------------------------
46// CommandObjectMultiwordBreakpointSet
47//-------------------------------------------------------------------------
48
49
50class CommandObjectBreakpointSet : public CommandObject
51{
52public:
53
54    typedef enum BreakpointSetType
55    {
56        eSetTypeInvalid,
57        eSetTypeFileAndLine,
58        eSetTypeAddress,
59        eSetTypeFunctionName,
60        eSetTypeFunctionRegexp
61    } BreakpointSetType;
62
63    CommandObjectBreakpointSet ();
64
65    virtual
66    ~CommandObjectBreakpointSet ();
67
68    virtual bool
69    Execute (Args& command,
70             CommandContext *context,
71             CommandInterpreter *interpreter,
72             CommandReturnObject &result);
73
74    virtual Options *
75    GetOptions ();
76
77    class CommandOptions : public Options
78    {
79    public:
80
81        CommandOptions ();
82
83        virtual
84        ~CommandOptions ();
85
86        virtual Error
87        SetOptionValue (int option_idx, const char *option_arg);
88
89        void
90        ResetOptionValues ();
91
92        const lldb::OptionDefinition*
93        GetDefinitions ();
94
95        // Options table: Required for subclasses of Options.
96
97        static lldb::OptionDefinition g_option_table[];
98
99        // Instance variables to hold the values for command options.
100
101        std::string m_filename;
102        unsigned int m_line_num;
103        unsigned int m_column;
104        bool m_ignore_inlines;
105        std::string m_func_name;
106        std::string m_func_regexp;
107        lldb::addr_t m_load_addr;
108        STLStringArray m_modules;
109        int32_t m_ignore_count;
110        lldb::tid_t m_thread_id;
111        uint32_t m_thread_index;
112        std::string m_thread_name;
113        std::string m_queue_name;
114
115    };
116
117private:
118    CommandOptions m_options;
119};
120
121//-------------------------------------------------------------------------
122// CommandObjectMultiwordBreakpointModify
123//-------------------------------------------------------------------------
124
125
126class CommandObjectBreakpointModify : public CommandObject
127{
128public:
129
130    CommandObjectBreakpointModify ();
131
132    virtual
133    ~CommandObjectBreakpointModify ();
134
135    virtual bool
136    Execute (Args& command,
137             CommandContext *context,
138             CommandInterpreter *interpreter,
139             CommandReturnObject &result);
140
141    virtual Options *
142    GetOptions ();
143
144    class CommandOptions : public Options
145    {
146    public:
147
148        CommandOptions ();
149
150        virtual
151        ~CommandOptions ();
152
153        virtual Error
154        SetOptionValue (int option_idx, const char *option_arg);
155
156        void
157        ResetOptionValues ();
158
159        const lldb::OptionDefinition*
160        GetDefinitions ();
161
162        // Options table: Required for subclasses of Options.
163
164        static lldb::OptionDefinition g_option_table[];
165
166        // Instance variables to hold the values for command options.
167
168        int32_t m_ignore_count;
169        lldb::tid_t m_thread_id;
170        uint32_t m_thread_index;
171        std::string m_thread_name;
172        std::string m_queue_name;
173        bool m_enable_passed;
174        bool m_enable_value;
175        bool m_name_passed;
176        bool m_queue_passed;
177
178    };
179
180private:
181    CommandOptions m_options;
182};
183
184//-------------------------------------------------------------------------
185// CommandObjectBreakpointEnable
186//-------------------------------------------------------------------------
187
188class CommandObjectBreakpointEnable : public CommandObject
189{
190public:
191    CommandObjectBreakpointEnable ();
192
193    virtual
194    ~CommandObjectBreakpointEnable ();
195
196    virtual bool
197    Execute (Args& command,
198             CommandContext *context,
199             CommandInterpreter *interpreter,
200             CommandReturnObject &result);
201
202private:
203};
204
205//-------------------------------------------------------------------------
206// CommandObjectBreakpointDisable
207//-------------------------------------------------------------------------
208
209class CommandObjectBreakpointDisable : public CommandObject
210{
211public:
212    CommandObjectBreakpointDisable ();
213
214    virtual
215    ~CommandObjectBreakpointDisable ();
216
217    virtual bool
218    Execute (Args& command,
219             CommandContext *context,
220             CommandInterpreter *interpreter,
221             CommandReturnObject &result);
222
223private:
224};
225
226//-------------------------------------------------------------------------
227// CommandObjectBreakpointList
228//-------------------------------------------------------------------------
229
230class CommandObjectBreakpointList : public CommandObject
231{
232public:
233    CommandObjectBreakpointList ();
234
235    virtual
236    ~CommandObjectBreakpointList ();
237
238    virtual bool
239    Execute (Args& command,
240             CommandContext *context,
241             CommandInterpreter *interpreter,
242             CommandReturnObject &result);
243
244    virtual Options *
245    GetOptions ();
246
247    class CommandOptions : public Options
248    {
249    public:
250
251        CommandOptions ();
252
253        virtual
254        ~CommandOptions ();
255
256        virtual Error
257        SetOptionValue (int option_idx, const char *option_arg);
258
259        void
260        ResetOptionValues ();
261
262        const lldb::OptionDefinition *
263        GetDefinitions ();
264
265        // Options table: Required for subclasses of Options.
266
267        static lldb::OptionDefinition g_option_table[];
268
269        // Instance variables to hold the values for command options.
270
271        lldb::DescriptionLevel m_level;
272
273        bool m_internal;
274    };
275
276private:
277    CommandOptions m_options;
278};
279
280//-------------------------------------------------------------------------
281// CommandObjectBreakpointDelete
282//-------------------------------------------------------------------------
283
284class CommandObjectBreakpointDelete : public CommandObject
285{
286public:
287    CommandObjectBreakpointDelete ();
288
289    virtual
290    ~CommandObjectBreakpointDelete ();
291
292    virtual bool
293    Execute (Args& command,
294             CommandContext *context,
295             CommandInterpreter *interpreter,
296             CommandReturnObject &result);
297
298private:
299};
300
301} // namespace lldb_private
302
303#endif  // liblldb_CommandObjectBreakpoint_h_
304