Updated copyright notices for most files.
[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,
0fb0cc75 4 2002, 2004, 2007, 2008, 2009 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
d9fcf2fb 196extern void help_cmd (char *, struct ui_file *);
c906108c 197
d9fcf2fb
JM
198extern void help_list (struct cmd_list_element *, char *,
199 enum command_class, struct ui_file *);
c906108c 200
d9fcf2fb
JM
201extern void help_cmd_list (struct cmd_list_element *, enum command_class,
202 char *, int, struct ui_file *);
c906108c 203
b66df561
AC
204/* NOTE: cagney/2005-02-21: Since every set command should be paired
205 with a corresponding show command (i.e., add_setshow_*) this call
206 should not be needed. Unfortunatly some are not (e.g.,
207 "maintenance <variable> <value>") and those need to be fixed. */
208extern struct cmd_list_element *deprecated_add_set_cmd (char *name, enum
209 command_class class,
210 var_types var_type, void *var,
211 char *doc,
212 struct cmd_list_element **list);
1ed2a135 213
08546159
AC
214/* Method for show a set/show variable's VALUE on FILE. If this
215 method isn't supplied deprecated_show_value_hack() is called (which
216 is not good). */
217typedef void (show_value_ftype) (struct ui_file *file,
218 int from_tty,
219 struct cmd_list_element *cmd,
220 const char *value);
221/* NOTE: i18n: This function is not i18n friendly. Callers should
222 instead print the value out directly. */
223extern show_value_ftype deprecated_show_value_hack;
224
1b295c3d
AC
225extern void add_setshow_enum_cmd (char *name,
226 enum command_class class,
227 const char *enumlist[],
228 const char **var,
229 const char *set_doc,
230 const char *show_doc,
231 const char *help_doc,
1b295c3d 232 cmd_sfunc_ftype *set_func,
08546159 233 show_value_ftype *show_func,
1b295c3d 234 struct cmd_list_element **set_list,
7376b4c2 235 struct cmd_list_element **show_list);
c906108c 236
e9e68a56
AC
237extern void add_setshow_auto_boolean_cmd (char *name,
238 enum command_class class,
239 enum auto_boolean *var,
3b64bf98
AC
240 const char *set_doc,
241 const char *show_doc,
242 const char *help_doc,
e9e68a56 243 cmd_sfunc_ftype *set_func,
08546159 244 show_value_ftype *show_func,
e9e68a56
AC
245 struct cmd_list_element **set_list,
246 struct cmd_list_element **show_list);
97c3646f 247
e707bbc2
AC
248extern void add_setshow_boolean_cmd (char *name,
249 enum command_class class,
250 int *var,
3b64bf98 251 const char *set_doc, const char *show_doc,
2c5b56ce 252 const char *help_doc,
e707bbc2 253 cmd_sfunc_ftype *set_func,
08546159 254 show_value_ftype *show_func,
e707bbc2
AC
255 struct cmd_list_element **set_list,
256 struct cmd_list_element **show_list);
f3796e26 257
b3f42336
AC
258extern void add_setshow_filename_cmd (char *name,
259 enum command_class class,
260 char **var,
261 const char *set_doc,
262 const char *show_doc,
263 const char *help_doc,
b3f42336 264 cmd_sfunc_ftype *set_func,
08546159 265 show_value_ftype *show_func,
b3f42336
AC
266 struct cmd_list_element **set_list,
267 struct cmd_list_element **show_list);
268
269extern void add_setshow_string_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,
b3f42336 275 cmd_sfunc_ftype *set_func,
08546159 276 show_value_ftype *show_func,
b3f42336
AC
277 struct cmd_list_element **set_list,
278 struct cmd_list_element **show_list);
279
26c41df3
AC
280extern void add_setshow_string_noescape_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
b4b4ac0b
AC
291extern void add_setshow_optional_filename_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
c0d88b1b
AC
302extern void add_setshow_integer_cmd (char *name,
303 enum command_class class,
47b667de 304 int *var,
c0d88b1b
AC
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
25d29d70
AC
313extern void add_setshow_uinteger_cmd (char *name,
314 enum command_class class,
315 unsigned int *var,
3b64bf98
AC
316 const char *set_doc,
317 const char *show_doc,
318 const char *help_doc,
15170568 319 cmd_sfunc_ftype *set_func,
08546159 320 show_value_ftype *show_func,
15170568
AC
321 struct cmd_list_element **set_list,
322 struct cmd_list_element **show_list);
323
324extern void add_setshow_zinteger_cmd (char *name,
325 enum command_class class,
326 int *var,
3b64bf98
AC
327 const char *set_doc,
328 const char *show_doc,
329 const char *help_doc,
25d29d70 330 cmd_sfunc_ftype *set_func,
08546159 331 show_value_ftype *show_func,
25d29d70
AC
332 struct cmd_list_element **set_list,
333 struct cmd_list_element **show_list);
334
c906108c
SS
335/* Do a "show" command for each thing on a command list. */
336
a14ed312 337extern void cmd_show_list (struct cmd_list_element *, int, char *);
c906108c 338
c3eb0c00 339extern NORETURN void error_no_arg (char *) ATTR_NORETURN;
c906108c 340
a14ed312 341extern void dont_repeat (void);
c906108c
SS
342
343/* Used to mark commands that don't do anything. If we just leave the
344 function field NULL, the command is interpreted as a help topic, or
345 as a class of commands. */
346
a14ed312 347extern void not_just_help_class_command (char *, int);
c906108c 348
f436dd25
MH
349/* check function pointer */
350extern int cmd_func_p (struct cmd_list_element *cmd);
351
352/* call the command function */
353extern void cmd_func (struct cmd_list_element *cmd, char *args, int from_tty);
354
c906108c 355#endif /* !defined (COMMAND_H) */
This page took 0.814806 seconds and 4 git commands to generate.