1 //===-- 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"
21 #include "lldb/Core/Options.h"
22 #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 
28 namespace lldb_private {
29 
30 //-------------------------------------------------------------------------
31 // CommandObjectMultiwordBreakpoint
32 //-------------------------------------------------------------------------
33 
34 class CommandObjectBreakpointCommand : public CommandObjectMultiword
35 {
36 public:
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 
55 class CommandObjectBreakpointCommandAdd : public CommandObject
56 {
57 public:
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 
120 private:
121     CommandOptions m_options;
122 };
123 
124 //-------------------------------------------------------------------------
125 // CommandObjectBreakpointCommandRemove
126 //-------------------------------------------------------------------------
127 
128 class CommandObjectBreakpointCommandRemove : public CommandObject
129 {
130 public:
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 
142 private:
143 };
144 
145 //-------------------------------------------------------------------------
146 // CommandObjectBreakpointCommandList
147 //-------------------------------------------------------------------------
148 
149 class CommandObjectBreakpointCommandList : public CommandObject
150 {
151 public:
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 
163 private:
164 };
165 
166 
167 } // namespace lldb_private
168 
169 #endif  // liblldb_CommandObjectBreakpointCommand_h_
170