blob: 262ef1fb0901a7f8e5ca163287213ae0d7f2cbfa [file] [log] [blame]
Chris Lattner24943d22010-06-08 16:52:24 +00001//===-- CommandObjectBreakpointCommand.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_CommandObjectBreakpointCommand_h_
11#define liblldb_CommandObjectBreakpointCommand_h_
12
13// C Includes
14// C++ Includes
15
16
17// Other libraries and framework includes
18// Project includes
19
20#include "lldb/lldb-types.h"
Jim Ingham84cdc152010-06-15 19:49:27 +000021#include "lldb/Interpreter/Options.h"
Chris Lattner24943d22010-06-08 16:52:24 +000022#include "lldb/Core/InputReader.h"
23#include "lldb/Interpreter/CommandObject.h"
24#include "lldb/Interpreter/CommandReturnObject.h"
25#include "lldb/Interpreter/CommandObjectMultiword.h"
26
27
28namespace lldb_private {
29
30//-------------------------------------------------------------------------
31// CommandObjectMultiwordBreakpoint
32//-------------------------------------------------------------------------
33
34class CommandObjectBreakpointCommand : public CommandObjectMultiword
35{
36public:
Greg Clayton63094e02010-06-23 01:19:29 +000037 CommandObjectBreakpointCommand (CommandInterpreter &interpreter);
Chris Lattner24943d22010-06-08 16:52:24 +000038
39 virtual
40 ~CommandObjectBreakpointCommand ();
41
42
43 static bool
44 BreakpointOptionsCallbackFunction (void *baton,
45 StoppointCallbackContext *context,
46 lldb::user_id_t break_id,
47 lldb::user_id_t break_loc_id);
48};
49
50//-------------------------------------------------------------------------
51// CommandObjectBreakpointCommandAdd
52//-------------------------------------------------------------------------
53
54
55class CommandObjectBreakpointCommandAdd : public CommandObject
56{
57public:
58
59 CommandObjectBreakpointCommandAdd ();
60
61 virtual
62 ~CommandObjectBreakpointCommandAdd ();
63
64 virtual bool
Greg Clayton63094e02010-06-23 01:19:29 +000065 Execute (CommandInterpreter &interpreter,
66 Args& command,
Chris Lattner24943d22010-06-08 16:52:24 +000067 CommandReturnObject &result);
68
69 virtual Options *
70 GetOptions ();
71
72 void
Greg Clayton63094e02010-06-23 01:19:29 +000073 CollectDataForBreakpointCommandCallback (CommandInterpreter &interpreter,
74 BreakpointOptions *bp_options,
Chris Lattner24943d22010-06-08 16:52:24 +000075 CommandReturnObject &result);
76
Johnny Chenb81ed0d2010-09-11 00:18:09 +000077 void
78 SetBreakpointCommandCallback (CommandInterpreter &interpreter,
79 BreakpointOptions *bp_options,
80 const char *oneliner);
81
Chris Lattner24943d22010-06-08 16:52:24 +000082 static size_t
83 GenerateBreakpointCommandCallback (void *baton,
Greg Clayton63094e02010-06-23 01:19:29 +000084 InputReader &reader,
Chris Lattner24943d22010-06-08 16:52:24 +000085 lldb::InputReaderAction notification,
86 const char *bytes,
87 size_t bytes_len);
88
89 static bool
90 BreakpointOptionsCallbackFunction (void *baton,
91 StoppointCallbackContext *context,
92 lldb::user_id_t break_id,
93 lldb::user_id_t break_loc_id);
94
95
96 class CommandOptions : public Options
97 {
98 public:
99
100 CommandOptions ();
101
102 virtual
103 ~CommandOptions ();
104
105 virtual Error
106 SetOptionValue (int option_idx, const char *option_arg);
107
108 void
109 ResetOptionValues ();
110
111 const lldb::OptionDefinition*
112 GetDefinitions ();
113
114 // Options table: Required for subclasses of Options.
115
116 static lldb::OptionDefinition g_option_table[];
117
118 // Instance variables to hold the values for command options.
119
120 bool m_use_commands;
121 bool m_use_script_language;
122 lldb::ScriptLanguage m_script_language;
Johnny Chenb81ed0d2010-09-11 00:18:09 +0000123
124 // Instance variables to hold the values for one_liner options.
125 bool m_use_one_liner;
126 std::string m_one_liner;
Chris Lattner24943d22010-06-08 16:52:24 +0000127 };
128
129private:
130 CommandOptions m_options;
131};
132
133//-------------------------------------------------------------------------
134// CommandObjectBreakpointCommandRemove
135//-------------------------------------------------------------------------
136
137class CommandObjectBreakpointCommandRemove : public CommandObject
138{
139public:
140 CommandObjectBreakpointCommandRemove ();
141
142 virtual
143 ~CommandObjectBreakpointCommandRemove ();
144
145 virtual bool
Greg Clayton63094e02010-06-23 01:19:29 +0000146 Execute (CommandInterpreter &interpreter,
147 Args& command,
Chris Lattner24943d22010-06-08 16:52:24 +0000148 CommandReturnObject &result);
149
150private:
151};
152
153//-------------------------------------------------------------------------
154// CommandObjectBreakpointCommandList
155//-------------------------------------------------------------------------
156
157class CommandObjectBreakpointCommandList : public CommandObject
158{
159public:
160 CommandObjectBreakpointCommandList ();
161
162 virtual
163 ~CommandObjectBreakpointCommandList ();
164
165 virtual bool
Greg Clayton63094e02010-06-23 01:19:29 +0000166 Execute (CommandInterpreter &interpreter,
167 Args& command,
Chris Lattner24943d22010-06-08 16:52:24 +0000168 CommandReturnObject &result);
169
170private:
171};
172
173
174} // namespace lldb_private
175
176#endif // liblldb_CommandObjectBreakpointCommand_h_