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