1 //===-- CommandObjectSettings.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_CommandObjectSettings_h_
11 #define liblldb_CommandObjectSettings_h_
12 
13 // C Includes
14 // C++ Includes
15 // Other libraries and framework includes
16 // Project includes
17 #include "lldb/Interpreter/CommandObject.h"
18 #include "lldb/Interpreter/CommandObjectMultiword.h"
19 #include "lldb/Interpreter/Options.h"
20 
21 
22 namespace lldb_private {
23 
24 //-------------------------------------------------------------------------
25 // CommandObjectMultiwordSettings
26 //-------------------------------------------------------------------------
27 
28 class CommandObjectMultiwordSettings : public CommandObjectMultiword
29 {
30 public:
31 
32     CommandObjectMultiwordSettings (CommandInterpreter &interpreter);
33 
34     virtual
35     ~CommandObjectMultiwordSettings ();
36 
37 };
38 
39 //-------------------------------------------------------------------------
40 // CommandObjectSettingsSet
41 //-------------------------------------------------------------------------
42 
43 class CommandObjectSettingsSet : public CommandObject
44 {
45 public:
46     CommandObjectSettingsSet (CommandInterpreter &interpreter);
47 
48     virtual
49     ~CommandObjectSettingsSet ();
50 
51     virtual bool
52     Execute (Args& command,
53              CommandReturnObject &result)
54     { return false; }
55 
56     virtual bool
57     WantsRawCommandString() { return true; }
58 
59     // Overrides base class's behavior where WantsCompletion = !WantsRawCommandString.
60     virtual bool
61     WantsCompletion() { return true; }
62 
63     virtual bool
64     ExecuteRawCommandString (const char *raw_command,
65                              CommandReturnObject &result);
66 
67     virtual Options *
68     GetOptions ();
69 
70     class CommandOptions : public Options
71     {
72     public:
73 
74         CommandOptions (CommandInterpreter &interpreter);
75 
76         virtual
77         ~CommandOptions ();
78 
79         virtual Error
80         SetOptionValue (uint32_t option_idx, const char *option_arg);
81 
82         void
83         OptionParsingStarting ();
84 
85         const OptionDefinition*
86         GetDefinitions ();
87 
88         // Options table: Required for subclasses of Options.
89 
90         static OptionDefinition g_option_table[];
91 
92         // Instance variables to hold the values for command options.
93 
94         bool m_override;
95         bool m_reset;
96 
97     };
98 
99     virtual int
100     HandleArgumentCompletion (Args &input,
101                               int &cursor_index,
102                               int &cursor_char_position,
103                               OptionElementVector &opt_element_vector,
104                               int match_start_point,
105                               int max_return_elements,
106                               bool &word_complete,
107                               StringList &matches);
108 
109 private:
110     CommandOptions m_options;
111 };
112 
113 //-------------------------------------------------------------------------
114 // CommandObjectSettingsShow -- Show current values
115 //-------------------------------------------------------------------------
116 
117 class CommandObjectSettingsShow : public CommandObject
118 {
119 public:
120     CommandObjectSettingsShow (CommandInterpreter &interpreter);
121 
122     virtual
123     ~CommandObjectSettingsShow ();
124 
125     virtual bool
126     Execute (Args& command,
127              CommandReturnObject &result);
128 
129 
130     virtual int
131     HandleArgumentCompletion (Args &input,
132                               int &cursor_index,
133                               int &cursor_char_position,
134                               OptionElementVector &opt_element_vector,
135                               int match_start_point,
136                               int max_return_elements,
137                               bool &word_complete,
138                               StringList &matches);
139 
140 private:
141 };
142 
143 //-------------------------------------------------------------------------
144 // CommandObjectSettingsList -- List settable variables
145 //-------------------------------------------------------------------------
146 
147 class CommandObjectSettingsList : public CommandObject
148 {
149 public:
150     CommandObjectSettingsList (CommandInterpreter &interpreter);
151 
152     virtual
153     ~CommandObjectSettingsList ();
154 
155     virtual bool
156     Execute (Args& command,
157              CommandReturnObject &result);
158 
159     virtual int
160     HandleArgumentCompletion (Args &input,
161                               int &cursor_index,
162                               int &cursor_char_position,
163                               OptionElementVector &opt_element_vector,
164                               int match_start_point,
165                               int max_return_elements,
166                               bool &word_complete,
167                               StringList &matches);
168 
169 private:
170 };
171 
172 //-------------------------------------------------------------------------
173 // CommandObjectSettingsRemove
174 //-------------------------------------------------------------------------
175 
176 class CommandObjectSettingsRemove : public CommandObject
177 {
178 public:
179     CommandObjectSettingsRemove (CommandInterpreter &interpreter);
180 
181     virtual
182     ~CommandObjectSettingsRemove ();
183 
184     virtual bool
185     Execute (Args& command,
186              CommandReturnObject &result);
187 
188     virtual int
189     HandleArgumentCompletion (Args &input,
190                               int &cursor_index,
191                               int &cursor_char_position,
192                               OptionElementVector &opt_element_vector,
193                               int match_start_point,
194                               int max_return_elements,
195                               bool &word_complete,
196                               StringList &matches);
197 
198 private:
199 };
200 
201 //-------------------------------------------------------------------------
202 // CommandObjectSettingsReplace
203 //-------------------------------------------------------------------------
204 
205 class CommandObjectSettingsReplace : public CommandObject
206 {
207 public:
208     CommandObjectSettingsReplace (CommandInterpreter &interpreter);
209 
210     virtual
211     ~CommandObjectSettingsReplace ();
212 
213     virtual bool
214     Execute (Args& command,
215              CommandReturnObject &result)
216     { return false; }
217 
218     virtual bool
219     WantsRawCommandString() { return true; }
220 
221     // Overrides base class's behavior where WantsCompletion = !WantsRawCommandString.
222     virtual bool
223     WantsCompletion() { return true; }
224 
225     virtual bool
226     ExecuteRawCommandString (const char *raw_command,
227                              CommandReturnObject &result);
228 
229     virtual int
230     HandleArgumentCompletion (Args &input,
231                               int &cursor_index,
232                               int &cursor_char_position,
233                               OptionElementVector &opt_element_vector,
234                               int match_start_point,
235                               int max_return_elements,
236                               bool &word_complete,
237                               StringList &matches);
238 
239 private:
240 };
241 
242 //-------------------------------------------------------------------------
243 // CommandObjectSettingsInsertBefore
244 //-------------------------------------------------------------------------
245 
246 class CommandObjectSettingsInsertBefore : public CommandObject
247 {
248 public:
249     CommandObjectSettingsInsertBefore (CommandInterpreter &interpreter);
250 
251     virtual
252     ~CommandObjectSettingsInsertBefore ();
253 
254     virtual bool
255     Execute (Args& command,
256              CommandReturnObject &result)
257     { return false; }
258 
259     virtual bool
260     WantsRawCommandString() { return true; }
261 
262     // Overrides base class's behavior where WantsCompletion = !WantsRawCommandString.
263     virtual bool
264     WantsCompletion() { return true; }
265 
266     virtual bool
267     ExecuteRawCommandString (const char *raw_command,
268                              CommandReturnObject &result);
269 
270     virtual int
271     HandleArgumentCompletion (Args &input,
272                               int &cursor_index,
273                               int &cursor_char_position,
274                               OptionElementVector &opt_element_vector,
275                               int match_start_point,
276                               int max_return_elements,
277                               bool &word_complete,
278                               StringList &matches);
279 
280 private:
281 };
282 
283 //-------------------------------------------------------------------------
284 // CommandObjectSettingInsertAfter
285 //-------------------------------------------------------------------------
286 
287 class CommandObjectSettingsInsertAfter : public CommandObject
288 {
289 public:
290     CommandObjectSettingsInsertAfter (CommandInterpreter &interpreter);
291 
292     virtual
293     ~CommandObjectSettingsInsertAfter ();
294 
295     virtual bool
296     Execute (Args& command,
297              CommandReturnObject &result)
298     { return false; }
299 
300     virtual bool
301     WantsRawCommandString() { return true; }
302 
303     // Overrides base class's behavior where WantsCompletion = !WantsRawCommandString.
304     virtual bool
305     WantsCompletion() { return true; }
306 
307     virtual bool
308     ExecuteRawCommandString (const char *raw_command,
309                              CommandReturnObject &result);
310 
311     virtual int
312     HandleArgumentCompletion (Args &input,
313                               int &cursor_index,
314                               int &cursor_char_position,
315                               OptionElementVector &opt_element_vector,
316                               int match_start_point,
317                               int max_return_elements,
318                               bool &word_complete,
319                               StringList &matches);
320 
321 private:
322 };
323 
324 //-------------------------------------------------------------------------
325 // CommandObjectSettingsAppend
326 //-------------------------------------------------------------------------
327 
328 class CommandObjectSettingsAppend : public CommandObject
329 {
330 public:
331     CommandObjectSettingsAppend (CommandInterpreter &interpreter);
332 
333     virtual
334     ~CommandObjectSettingsAppend ();
335 
336     virtual bool
337     Execute (Args& command,
338              CommandReturnObject &result)
339     { return false; }
340 
341     virtual bool
342     WantsRawCommandString() { return true; }
343 
344     // Overrides base class's behavior where WantsCompletion = !WantsRawCommandString.
345     virtual bool
346     WantsCompletion() { return true; }
347 
348     virtual bool
349     ExecuteRawCommandString (const char *raw_command,
350                              CommandReturnObject &result);
351 
352     virtual int
353     HandleArgumentCompletion (Args &input,
354                               int &cursor_index,
355                               int &cursor_char_position,
356                               OptionElementVector &opt_element_vector,
357                               int match_start_point,
358                               int max_return_elements,
359                               bool &word_complete,
360                               StringList &matches);
361 
362 private:
363 };
364 
365 //-------------------------------------------------------------------------
366 // CommandObjectSettingsClear
367 //-------------------------------------------------------------------------
368 
369 class CommandObjectSettingsClear : public CommandObject
370 {
371 public:
372     CommandObjectSettingsClear (CommandInterpreter &interpreter);
373 
374     virtual
375     ~CommandObjectSettingsClear ();
376 
377     virtual bool
378     Execute (Args& command,
379              CommandReturnObject &result);
380 
381     virtual int
382     HandleArgumentCompletion (Args &input,
383                               int &cursor_index,
384                               int &cursor_char_position,
385                               OptionElementVector &opt_element_vector,
386                               int match_start_point,
387                               int max_return_elements,
388                               bool &word_complete,
389                               StringList &matches);
390 
391 private:
392 };
393 
394 } // namespace lldb_private
395 
396 #endif  // liblldb_CommandObjectSettings_h_
397