gdb/
[deliverable/binutils-gdb.git] / gdb / command.h
1 /* Header file for command creation.
2
3 Copyright (C) 1986, 1989-1995, 1999-2000, 2002, 2004, 2007-2012 Free
4 Software Foundation, Inc.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
18
19 #if !defined (COMMAND_H)
20 #define COMMAND_H 1
21
22 #include "gdb_vecs.h"
23
24 /* This file defines the public interface for any code wanting to
25 create commands. */
26
27 /* Command classes are top-level categories into which commands are
28 broken down for "help" purposes.
29
30 Notes on classes: class_alias is for alias commands which are not
31 abbreviations of the original command. class-pseudo is for
32 commands which are not really commands nor help topics ("stop"). */
33
34 enum command_class
35 {
36 /* Special args to help_list */
37 class_deprecated = -3, all_classes = -2, all_commands = -1,
38 /* Classes of commands */
39 no_class = -1, class_run = 0, class_vars, class_stack, class_files,
40 class_support, class_info, class_breakpoint, class_trace,
41 class_alias, class_bookmark, class_obscure, class_maintenance,
42 class_pseudo, class_tui, class_user, class_xdb,
43 no_set_class /* Used for "show" commands that have no corresponding
44 "set" command. */
45 };
46
47 /* FIXME: cagney/2002-03-17: Once cmd_type() has been removed, ``enum
48 cmd_types'' can be moved from "command.h" to "cli-decode.h". */
49 /* Not a set/show command. Note that some commands which begin with
50 "set" or "show" might be in this category, if their syntax does
51 not fall into one of the following categories. */
52 typedef enum cmd_types
53 {
54 not_set_cmd,
55 set_cmd,
56 show_cmd
57 }
58 cmd_types;
59
60 /* Types of "set" or "show" command. */
61 typedef enum var_types
62 {
63 /* "on" or "off". *VAR is an integer which is nonzero for on,
64 zero for off. */
65 var_boolean,
66
67 /* "on" / "true" / "enable" or "off" / "false" / "disable" or
68 "auto. *VAR is an ``enum auto_boolean''. NOTE: In general a
69 custom show command will need to be implemented - one that for
70 "auto" prints both the "auto" and the current auto-selected
71 value. */
72 var_auto_boolean,
73
74 /* Unsigned Integer. *VAR is an unsigned int. The user can type
75 0 to mean "unlimited", which is stored in *VAR as UINT_MAX. */
76 var_uinteger,
77
78 /* Like var_uinteger but signed. *VAR is an int. The user can
79 type 0 to mean "unlimited", which is stored in *VAR as
80 INT_MAX. */
81 var_integer,
82
83 /* String which the user enters with escapes (e.g. the user types
84 \n and it is a real newline in the stored string).
85 *VAR is a malloc'd string, or NULL if the string is empty. */
86 var_string,
87 /* String which stores what the user types verbatim.
88 *VAR is a malloc'd string, or NULL if the string is empty. */
89 var_string_noescape,
90 /* String which stores a filename. (*VAR) is a malloc'd string,
91 or "" if the string was empty. */
92 var_optional_filename,
93 /* String which stores a filename. (*VAR) is a malloc'd
94 string. */
95 var_filename,
96 /* ZeroableInteger. *VAR is an int. Like var_integer except
97 that zero really means zero. */
98 var_zinteger,
99 /* ZeroableUnsignedInteger. *VAR is an unsigned int. Zero really
100 means zero. */
101 var_zuinteger,
102 /* Enumerated type. Can only have one of the specified values.
103 *VAR is a char pointer to the name of the element that we
104 find. */
105 var_enum
106 }
107 var_types;
108
109 /* This structure records one command'd definition. */
110 struct cmd_list_element;
111
112 /* Forward-declarations of the entry-points of cli/cli-decode.c. */
113
114 /* API to the manipulation of command lists. */
115
116 extern int valid_user_defined_cmd_name_p (const char *name);
117
118 extern struct cmd_list_element *add_cmd (char *, enum command_class,
119 void (*fun) (char *, int), char *,
120 struct cmd_list_element **);
121
122 extern struct cmd_list_element *add_alias_cmd (char *, char *,
123 enum command_class, int,
124 struct cmd_list_element **);
125
126 extern struct cmd_list_element *add_prefix_cmd (char *, enum command_class,
127 void (*fun) (char *, int),
128 char *,
129 struct cmd_list_element **,
130 char *, int,
131 struct cmd_list_element **);
132
133 extern struct cmd_list_element *add_abbrev_prefix_cmd (char *,
134 enum command_class,
135 void (*fun) (char *,
136 int),
137 char *,
138 struct cmd_list_element
139 **, char *, int,
140 struct cmd_list_element
141 **);
142
143 /* Set the commands corresponding callback. */
144
145 typedef void cmd_cfunc_ftype (char *args, int from_tty);
146 extern void set_cmd_cfunc (struct cmd_list_element *cmd,
147 cmd_cfunc_ftype *cfunc);
148
149 typedef void cmd_sfunc_ftype (char *args, int from_tty,
150 struct cmd_list_element *c);
151 extern void set_cmd_sfunc (struct cmd_list_element *cmd,
152 cmd_sfunc_ftype *sfunc);
153
154 typedef VEC (char_ptr) *completer_ftype (struct cmd_list_element *,
155 char *, char *);
156
157 extern void set_cmd_completer (struct cmd_list_element *, completer_ftype *);
158
159 /* HACK: cagney/2002-02-23: Code, mostly in tracepoints.c, grubs
160 around in cmd objects to test the value of the commands sfunc(). */
161 extern int cmd_cfunc_eq (struct cmd_list_element *cmd,
162 void (*cfunc) (char *args, int from_tty));
163
164 /* Each command object has a local context attached to it. */
165 extern void set_cmd_context (struct cmd_list_element *cmd,
166 void *context);
167 extern void *get_cmd_context (struct cmd_list_element *cmd);
168
169
170 /* Execute CMD's pre/post hook. Throw an error if the command fails.
171 If already executing this pre/post hook, or there is no pre/post
172 hook, the call is silently ignored. */
173 extern void execute_cmd_pre_hook (struct cmd_list_element *cmd);
174 extern void execute_cmd_post_hook (struct cmd_list_element *cmd);
175
176 /* Return the type of the command. */
177 extern enum cmd_types cmd_type (struct cmd_list_element *cmd);
178
179 /* Flag for an ambiguous cmd_list result. */
180 #define CMD_LIST_AMBIGUOUS ((struct cmd_list_element *) -1)
181
182 extern struct cmd_list_element *lookup_cmd (char **,
183 struct cmd_list_element *, char *,
184 int, int);
185
186 extern struct cmd_list_element *lookup_cmd_1 (char **,
187 struct cmd_list_element *,
188 struct cmd_list_element **,
189 int);
190
191 extern struct cmd_list_element *deprecate_cmd (struct cmd_list_element *,
192 char * );
193
194 extern void deprecated_cmd_warning (char **);
195
196 extern int lookup_cmd_composition (char *text,
197 struct cmd_list_element **alias,
198 struct cmd_list_element **prefix_cmd,
199 struct cmd_list_element **cmd);
200
201 extern struct cmd_list_element *add_com (char *, enum command_class,
202 void (*fun) (char *, int),
203 char *);
204
205 extern struct cmd_list_element *add_com_alias (char *, char *,
206 enum command_class, int);
207
208 extern struct cmd_list_element *add_info (char *,
209 void (*fun) (char *, int),
210 char *);
211
212 extern struct cmd_list_element *add_info_alias (char *, char *, int);
213
214 extern VEC (char_ptr) *complete_on_cmdlist (struct cmd_list_element *,
215 char *, char *);
216
217 extern VEC (char_ptr) *complete_on_enum (const char *const *enumlist,
218 char *, char *);
219
220 /* Functions that implement commands about CLI commands. */
221
222 extern void help_list (struct cmd_list_element *, char *,
223 enum command_class, struct ui_file *);
224
225 /* Method for show a set/show variable's VALUE on FILE. If this
226 method isn't supplied deprecated_show_value_hack() is called (which
227 is not good). */
228 typedef void (show_value_ftype) (struct ui_file *file,
229 int from_tty,
230 struct cmd_list_element *cmd,
231 const char *value);
232 /* NOTE: i18n: This function is not i18n friendly. Callers should
233 instead print the value out directly. */
234 extern show_value_ftype deprecated_show_value_hack;
235
236 extern void add_setshow_enum_cmd (char *name,
237 enum command_class class,
238 const char *const *enumlist,
239 const char **var,
240 const char *set_doc,
241 const char *show_doc,
242 const char *help_doc,
243 cmd_sfunc_ftype *set_func,
244 show_value_ftype *show_func,
245 struct cmd_list_element **set_list,
246 struct cmd_list_element **show_list);
247
248 extern void add_setshow_auto_boolean_cmd (char *name,
249 enum command_class class,
250 enum auto_boolean *var,
251 const char *set_doc,
252 const char *show_doc,
253 const char *help_doc,
254 cmd_sfunc_ftype *set_func,
255 show_value_ftype *show_func,
256 struct cmd_list_element **set_list,
257 struct cmd_list_element **show_list);
258
259 extern void add_setshow_boolean_cmd (char *name,
260 enum command_class class,
261 int *var,
262 const char *set_doc, const char *show_doc,
263 const char *help_doc,
264 cmd_sfunc_ftype *set_func,
265 show_value_ftype *show_func,
266 struct cmd_list_element **set_list,
267 struct cmd_list_element **show_list);
268
269 extern void add_setshow_filename_cmd (char *name,
270 enum command_class class,
271 char **var,
272 const char *set_doc,
273 const char *show_doc,
274 const char *help_doc,
275 cmd_sfunc_ftype *set_func,
276 show_value_ftype *show_func,
277 struct cmd_list_element **set_list,
278 struct cmd_list_element **show_list);
279
280 extern void add_setshow_string_cmd (char *name,
281 enum command_class class,
282 char **var,
283 const char *set_doc,
284 const char *show_doc,
285 const char *help_doc,
286 cmd_sfunc_ftype *set_func,
287 show_value_ftype *show_func,
288 struct cmd_list_element **set_list,
289 struct cmd_list_element **show_list);
290
291 extern void add_setshow_string_noescape_cmd (char *name,
292 enum command_class class,
293 char **var,
294 const char *set_doc,
295 const char *show_doc,
296 const char *help_doc,
297 cmd_sfunc_ftype *set_func,
298 show_value_ftype *show_func,
299 struct cmd_list_element **set_list,
300 struct cmd_list_element **show_list);
301
302 extern void add_setshow_optional_filename_cmd (char *name,
303 enum command_class class,
304 char **var,
305 const char *set_doc,
306 const char *show_doc,
307 const char *help_doc,
308 cmd_sfunc_ftype *set_func,
309 show_value_ftype *show_func,
310 struct cmd_list_element **set_list,
311 struct cmd_list_element **show_list);
312
313 extern void add_setshow_integer_cmd (char *name,
314 enum command_class class,
315 int *var,
316 const char *set_doc,
317 const char *show_doc,
318 const char *help_doc,
319 cmd_sfunc_ftype *set_func,
320 show_value_ftype *show_func,
321 struct cmd_list_element **set_list,
322 struct cmd_list_element **show_list);
323
324 extern void add_setshow_uinteger_cmd (char *name,
325 enum command_class class,
326 unsigned int *var,
327 const char *set_doc,
328 const char *show_doc,
329 const char *help_doc,
330 cmd_sfunc_ftype *set_func,
331 show_value_ftype *show_func,
332 struct cmd_list_element **set_list,
333 struct cmd_list_element **show_list);
334
335 extern void add_setshow_zinteger_cmd (char *name,
336 enum command_class class,
337 int *var,
338 const char *set_doc,
339 const char *show_doc,
340 const char *help_doc,
341 cmd_sfunc_ftype *set_func,
342 show_value_ftype *show_func,
343 struct cmd_list_element **set_list,
344 struct cmd_list_element **show_list);
345
346 extern void add_setshow_zuinteger_cmd (char *name,
347 enum command_class class,
348 unsigned int *var,
349 const char *set_doc,
350 const char *show_doc,
351 const char *help_doc,
352 cmd_sfunc_ftype *set_func,
353 show_value_ftype *show_func,
354 struct cmd_list_element **set_list,
355 struct cmd_list_element **show_list);
356
357 /* Do a "show" command for each thing on a command list. */
358
359 extern void cmd_show_list (struct cmd_list_element *, int, char *);
360
361 /* Used everywhere whenever at least one parameter is required and
362 none is specified. */
363
364 extern void error_no_arg (char *) ATTRIBUTE_NORETURN;
365
366 extern void dont_repeat (void);
367
368 extern struct cleanup *prevent_dont_repeat (void);
369
370 /* Used to mark commands that don't do anything. If we just leave the
371 function field NULL, the command is interpreted as a help topic, or
372 as a class of commands. */
373
374 extern void not_just_help_class_command (char *, int);
375
376 /* Check function pointer. */
377 extern int cmd_func_p (struct cmd_list_element *cmd);
378
379 /* Call the command function. */
380 extern void cmd_func (struct cmd_list_element *cmd,
381 char *args, int from_tty);
382
383 #endif /* !defined (COMMAND_H) */
This page took 0.037941 seconds and 5 git commands to generate.