daily update
[deliverable/binutils-gdb.git] / gdb / command.h
CommitLineData
50aeff07 1/* Header file for command creation.
18a642a1 2
0b302171
JB
3 Copyright (C) 1986, 1989-1995, 1999-2000, 2002, 2004, 2007-2012 Free
4 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
49c4e619
TT
22#include "gdb_vecs.h"
23
50aeff07
PA
24/* This file defines the public interface for any code wanting to
25 create commands. */
26
aff410f1
MS
27/* Command classes are top-level categories into which commands are
28 broken down for "help" purposes.
29
6426a772
JM
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
34enum command_class
35{
36 /* Special args to help_list */
6e381ba0 37 class_deprecated = -3, all_classes = -2, all_commands = -1,
6426a772 38 /* Classes of commands */
aff410f1
MS
39 no_class = -1, class_run = 0, class_vars, class_stack, class_files,
40 class_support, class_info, class_breakpoint, class_trace,
6b04bdb7 41 class_alias, class_bookmark, class_obscure, class_maintenance,
db5f229b
MS
42 class_pseudo, class_tui, class_user, class_xdb,
43 no_set_class /* Used for "show" commands that have no corresponding
44 "set" command. */
6426a772
JM
45};
46
18a642a1
AC
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". */
c906108c
SS
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. */
c5aa993b
JM
52typedef enum cmd_types
53 {
54 not_set_cmd,
55 set_cmd,
56 show_cmd
57 }
58cmd_types;
c906108c
SS
59
60/* Types of "set" or "show" command. */
c5aa993b
JM
61typedef enum var_types
62 {
63 /* "on" or "off". *VAR is an integer which is nonzero for on,
64 zero for off. */
65 var_boolean,
97c3646f
AC
66
67 /* "on" / "true" / "enable" or "off" / "false" / "disable" or
7f19b9a2
AC
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
ebcd3b23 71 value. */
97c3646f
AC
72 var_auto_boolean,
73
aff410f1
MS
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. */
c5aa993b
JM
76 var_uinteger,
77
aff410f1
MS
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. */
c5aa993b
JM
81 var_integer,
82
aff410f1
MS
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).
c5aa993b
JM
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,
b4b4ac0b
AC
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. */
c5aa993b
JM
95 var_filename,
96 /* ZeroableInteger. *VAR is an int. Like Unsigned Integer except
97 that zero really means zero. */
98 var_zinteger,
1e8fb976
PA
99 /* ZeroableUnsignedInteger. *VAR is an unsigned int. Zero really
100 means zero. */
101 var_zuinteger,
aff410f1
MS
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. */
c5aa993b
JM
105 var_enum
106 }
107var_types;
c906108c
SS
108
109/* This structure records one command'd definition. */
18a642a1 110struct cmd_list_element;
c906108c 111
18d5d590 112/* Forward-declarations of the entry-points of cli/cli-decode.c. */
c906108c 113
50aeff07
PA
114/* API to the manipulation of command lists. */
115
5a56e9c5
DE
116extern int valid_user_defined_cmd_name_p (const char *name);
117
a14ed312
KB
118extern struct cmd_list_element *add_cmd (char *, enum command_class,
119 void (*fun) (char *, int), char *,
120 struct cmd_list_element **);
121
122extern struct cmd_list_element *add_alias_cmd (char *, char *,
123 enum command_class, int,
124 struct cmd_list_element **);
125
126extern 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
133extern 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
9f60d481
AC
143/* Set the commands corresponding callback. */
144
9773a94b 145typedef void cmd_cfunc_ftype (char *args, int from_tty);
9f60d481 146extern void set_cmd_cfunc (struct cmd_list_element *cmd,
9773a94b 147 cmd_cfunc_ftype *cfunc);
9f60d481 148
9773a94b
AC
149typedef void cmd_sfunc_ftype (char *args, int from_tty,
150 struct cmd_list_element *c);
9f60d481 151extern void set_cmd_sfunc (struct cmd_list_element *cmd,
9773a94b 152 cmd_sfunc_ftype *sfunc);
9f60d481 153
49c4e619
TT
154typedef VEC (char_ptr) *completer_ftype (struct cmd_list_element *,
155 char *, char *);
625e8578
TT
156
157extern void set_cmd_completer (struct cmd_list_element *, completer_ftype *);
5ba2abeb 158
bbaca940
AC
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(). */
161extern int cmd_cfunc_eq (struct cmd_list_element *cmd,
162 void (*cfunc) (char *args, int from_tty));
9f60d481 163
ebcd3b23 164/* Each command object has a local context attached to it. */
aff410f1
MS
165extern void set_cmd_context (struct cmd_list_element *cmd,
166 void *context);
7d0766f3
AC
167extern void *get_cmd_context (struct cmd_list_element *cmd);
168
169
5913bcb0
AC
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. */
173extern void execute_cmd_pre_hook (struct cmd_list_element *cmd);
174extern void execute_cmd_post_hook (struct cmd_list_element *cmd);
175
1868c04e 176/* Return the type of the command. */
1868c04e
AC
177extern enum cmd_types cmd_type (struct cmd_list_element *cmd);
178
50aeff07
PA
179/* Flag for an ambiguous cmd_list result. */
180#define CMD_LIST_AMBIGUOUS ((struct cmd_list_element *) -1)
1868c04e 181
a14ed312
KB
182extern struct cmd_list_element *lookup_cmd (char **,
183 struct cmd_list_element *, char *,
184 int, int);
185
186extern struct cmd_list_element *lookup_cmd_1 (char **,
187 struct cmd_list_element *,
188 struct cmd_list_element **,
189 int);
c906108c 190
aff410f1
MS
191extern struct cmd_list_element *deprecate_cmd (struct cmd_list_element *,
192 char * );
56382845 193
aff410f1 194extern void deprecated_cmd_warning (char **);
56382845 195
aff410f1
MS
196extern 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);
56382845 200
a14ed312 201extern struct cmd_list_element *add_com (char *, enum command_class,
aff410f1
MS
202 void (*fun) (char *, int),
203 char *);
c906108c 204
a14ed312
KB
205extern struct cmd_list_element *add_com_alias (char *, char *,
206 enum command_class, int);
c906108c 207
aff410f1
MS
208extern struct cmd_list_element *add_info (char *,
209 void (*fun) (char *, int),
a14ed312 210 char *);
c906108c 211
a14ed312 212extern struct cmd_list_element *add_info_alias (char *, char *, int);
c906108c 213
49c4e619
TT
214extern VEC (char_ptr) *complete_on_cmdlist (struct cmd_list_element *,
215 char *, char *);
c906108c 216
49c4e619
TT
217extern VEC (char_ptr) *complete_on_enum (const char *const *enumlist,
218 char *, char *);
c906108c 219
50aeff07 220/* Functions that implement commands about CLI commands. */
c906108c 221
d9fcf2fb
JM
222extern void help_list (struct cmd_list_element *, char *,
223 enum command_class, struct ui_file *);
c906108c 224
08546159
AC
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). */
228typedef 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. */
234extern show_value_ftype deprecated_show_value_hack;
235
1b295c3d
AC
236extern void add_setshow_enum_cmd (char *name,
237 enum command_class class,
40478521 238 const char *const *enumlist,
1b295c3d
AC
239 const char **var,
240 const char *set_doc,
241 const char *show_doc,
242 const char *help_doc,
1b295c3d 243 cmd_sfunc_ftype *set_func,
08546159 244 show_value_ftype *show_func,
1b295c3d 245 struct cmd_list_element **set_list,
7376b4c2 246 struct cmd_list_element **show_list);
c906108c 247
e9e68a56
AC
248extern void add_setshow_auto_boolean_cmd (char *name,
249 enum command_class class,
250 enum auto_boolean *var,
3b64bf98
AC
251 const char *set_doc,
252 const char *show_doc,
253 const char *help_doc,
e9e68a56 254 cmd_sfunc_ftype *set_func,
08546159 255 show_value_ftype *show_func,
e9e68a56
AC
256 struct cmd_list_element **set_list,
257 struct cmd_list_element **show_list);
97c3646f 258
e707bbc2
AC
259extern void add_setshow_boolean_cmd (char *name,
260 enum command_class class,
261 int *var,
3b64bf98 262 const char *set_doc, const char *show_doc,
2c5b56ce 263 const char *help_doc,
e707bbc2 264 cmd_sfunc_ftype *set_func,
08546159 265 show_value_ftype *show_func,
e707bbc2
AC
266 struct cmd_list_element **set_list,
267 struct cmd_list_element **show_list);
f3796e26 268
b3f42336
AC
269extern 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,
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
5efd5804
PA
280extern 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
291extern 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);
26c41df3 301
b4b4ac0b
AC
302extern 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
5efd5804
PA
313extern 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);
c0d88b1b 323
5efd5804
PA
324extern 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);
15170568 334
5efd5804
PA
335extern 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);
25d29d70 345
5efd5804
PA
346extern 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);
1e8fb976 356
c906108c
SS
357/* Do a "show" command for each thing on a command list. */
358
a14ed312 359extern void cmd_show_list (struct cmd_list_element *, int, char *);
c906108c 360
c25c4a8b 361/* Used everywhere whenever at least one parameter is required and
ebcd3b23 362 none is specified. */
c25c4a8b
JK
363
364extern void error_no_arg (char *) ATTRIBUTE_NORETURN;
c906108c 365
a14ed312 366extern void dont_repeat (void);
c906108c 367
47a80e90
TT
368extern struct cleanup *prevent_dont_repeat (void);
369
c906108c
SS
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
a14ed312 374extern void not_just_help_class_command (char *, int);
c906108c 375
aff410f1 376/* Check function pointer. */
f436dd25
MH
377extern int cmd_func_p (struct cmd_list_element *cmd);
378
aff410f1
MS
379/* Call the command function. */
380extern void cmd_func (struct cmd_list_element *cmd,
381 char *args, int from_tty);
f436dd25 382
c906108c 383#endif /* !defined (COMMAND_H) */
This page took 0.977727 seconds and 4 git commands to generate.