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