blob: 344eccea2ef08867005d6043eaea21ea280f8d17 [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:
37 CommandObjectBreakpointCommand (CommandInterpreter *interpreter);
38
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
65 Execute (Args& command,
66 CommandContext *context,
67 CommandInterpreter *interpreter,
68 CommandReturnObject &result);
69
70 virtual Options *
71 GetOptions ();
72
73 void
74 CollectDataForBreakpointCommandCallback (BreakpointOptions *bp_options,
75 CommandReturnObject &result);
76
77 static size_t
78 GenerateBreakpointCommandCallback (void *baton,
79 InputReader *reader,
80 lldb::InputReaderAction notification,
81 const char *bytes,
82 size_t bytes_len);
83
84 static bool
85 BreakpointOptionsCallbackFunction (void *baton,
86 StoppointCallbackContext *context,
87 lldb::user_id_t break_id,
88 lldb::user_id_t break_loc_id);
89
90
91 class CommandOptions : public Options
92 {
93 public:
94
95 CommandOptions ();
96
97 virtual
98 ~CommandOptions ();
99
100 virtual Error
101 SetOptionValue (int option_idx, const char *option_arg);
102
103 void
104 ResetOptionValues ();
105
106 const lldb::OptionDefinition*
107 GetDefinitions ();
108
109 // Options table: Required for subclasses of Options.
110
111 static lldb::OptionDefinition g_option_table[];
112
113 // Instance variables to hold the values for command options.
114
115 bool m_use_commands;
116 bool m_use_script_language;
117 lldb::ScriptLanguage m_script_language;
118 };
119
120private:
121 CommandOptions m_options;
122};
123
124//-------------------------------------------------------------------------
125// CommandObjectBreakpointCommandRemove
126//-------------------------------------------------------------------------
127
128class CommandObjectBreakpointCommandRemove : public CommandObject
129{
130public:
131 CommandObjectBreakpointCommandRemove ();
132
133 virtual
134 ~CommandObjectBreakpointCommandRemove ();
135
136 virtual bool
137 Execute (Args& command,
138 CommandContext *context,
139 CommandInterpreter *interpreter,
140 CommandReturnObject &result);
141
142private:
143};
144
145//-------------------------------------------------------------------------
146// CommandObjectBreakpointCommandList
147//-------------------------------------------------------------------------
148
149class CommandObjectBreakpointCommandList : public CommandObject
150{
151public:
152 CommandObjectBreakpointCommandList ();
153
154 virtual
155 ~CommandObjectBreakpointCommandList ();
156
157 virtual bool
158 Execute (Args& command,
159 CommandContext *context,
160 CommandInterpreter *interpreter,
161 CommandReturnObject &result);
162
163private:
164};
165
166
167} // namespace lldb_private
168
169#endif // liblldb_CommandObjectBreakpointCommand_h_