]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/command.h
Remove usages of find_thread when calling need_step_over_p
[thirdparty/binutils-gdb.git] / gdb / command.h
CommitLineData
50aeff07 1/* Header file for command creation.
18a642a1 2
61baf725 3 Copyright (C) 1986-2017 Free Software Foundation, Inc.
c906108c 4
c5aa993b
JM
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
a9762ec7 7 the Free Software Foundation; either version 3 of the License, or
c5aa993b 8 (at your option) any later version.
c906108c 9
c5aa993b
JM
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
c906108c 14
c5aa993b 15 You should have received a copy of the GNU General Public License
a9762ec7 16 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
17
18#if !defined (COMMAND_H)
19#define COMMAND_H 1
20
49c4e619 21#include "gdb_vecs.h"
6e75794e 22#include "common/scoped_restore.h"
49c4e619 23
eb3ff9a5
PA
24struct completion_tracker;
25
50aeff07
PA
26/* This file defines the public interface for any code wanting to
27 create commands. */
28
aff410f1
MS
29/* Command classes are top-level categories into which commands are
30 broken down for "help" purposes.
31
6426a772
JM
32 Notes on classes: class_alias is for alias commands which are not
33 abbreviations of the original command. class-pseudo is for
34 commands which are not really commands nor help topics ("stop"). */
35
36enum command_class
37{
38 /* Special args to help_list */
6e381ba0 39 class_deprecated = -3, all_classes = -2, all_commands = -1,
6426a772 40 /* Classes of commands */
aff410f1
MS
41 no_class = -1, class_run = 0, class_vars, class_stack, class_files,
42 class_support, class_info, class_breakpoint, class_trace,
6b04bdb7 43 class_alias, class_bookmark, class_obscure, class_maintenance,
db5f229b
MS
44 class_pseudo, class_tui, class_user, class_xdb,
45 no_set_class /* Used for "show" commands that have no corresponding
46 "set" command. */
6426a772
JM
47};
48
18a642a1
AC
49/* FIXME: cagney/2002-03-17: Once cmd_type() has been removed, ``enum
50 cmd_types'' can be moved from "command.h" to "cli-decode.h". */
c906108c
SS
51/* Not a set/show command. Note that some commands which begin with
52 "set" or "show" might be in this category, if their syntax does
53 not fall into one of the following categories. */
c5aa993b
JM
54typedef enum cmd_types
55 {
56 not_set_cmd,
57 set_cmd,
58 show_cmd
59 }
60cmd_types;
c906108c
SS
61
62/* Types of "set" or "show" command. */
c5aa993b
JM
63typedef enum var_types
64 {
65 /* "on" or "off". *VAR is an integer which is nonzero for on,
66 zero for off. */
67 var_boolean,
97c3646f
AC
68
69 /* "on" / "true" / "enable" or "off" / "false" / "disable" or
7f19b9a2
AC
70 "auto. *VAR is an ``enum auto_boolean''. NOTE: In general a
71 custom show command will need to be implemented - one that for
72 "auto" prints both the "auto" and the current auto-selected
ebcd3b23 73 value. */
97c3646f
AC
74 var_auto_boolean,
75
aff410f1
MS
76 /* Unsigned Integer. *VAR is an unsigned int. The user can type
77 0 to mean "unlimited", which is stored in *VAR as UINT_MAX. */
c5aa993b
JM
78 var_uinteger,
79
aff410f1
MS
80 /* Like var_uinteger but signed. *VAR is an int. The user can
81 type 0 to mean "unlimited", which is stored in *VAR as
6fc1c773
YQ
82 INT_MAX. The only remaining use of it is the Python API.
83 Don't use it elsewhere. */
c5aa993b
JM
84 var_integer,
85
aff410f1
MS
86 /* String which the user enters with escapes (e.g. the user types
87 \n and it is a real newline in the stored string).
c5aa993b
JM
88 *VAR is a malloc'd string, or NULL if the string is empty. */
89 var_string,
90 /* String which stores what the user types verbatim.
91 *VAR is a malloc'd string, or NULL if the string is empty. */
92 var_string_noescape,
b4b4ac0b
AC
93 /* String which stores a filename. (*VAR) is a malloc'd string,
94 or "" if the string was empty. */
95 var_optional_filename,
96 /* String which stores a filename. (*VAR) is a malloc'd
97 string. */
c5aa993b 98 var_filename,
a7c3d162 99 /* ZeroableInteger. *VAR is an int. Like var_integer except
c5aa993b
JM
100 that zero really means zero. */
101 var_zinteger,
1e8fb976
PA
102 /* ZeroableUnsignedInteger. *VAR is an unsigned int. Zero really
103 means zero. */
104 var_zuinteger,
b69b1fb1
YQ
105 /* ZeroableUnsignedInteger with unlimited value. *VAR is an int,
106 but its range is [0, INT_MAX]. -1 stands for unlimited and
107 other negative numbers are not allowed. */
6fc1c773 108 var_zuinteger_unlimited,
aff410f1
MS
109 /* Enumerated type. Can only have one of the specified values.
110 *VAR is a char pointer to the name of the element that we
111 find. */
c5aa993b
JM
112 var_enum
113 }
114var_types;
c906108c
SS
115
116/* This structure records one command'd definition. */
18a642a1 117struct cmd_list_element;
c906108c 118
0450cc4c 119typedef void cmd_const_cfunc_ftype (const char *args, int from_tty);
82ae6c8d 120
4034d0ff
AT
121/* This structure specifies notifications to be suppressed by a cli
122 command interpreter. */
123
124struct cli_suppress_notification
125{
126 /* Inferior, thread, frame selected notification suppressed? */
127 int user_selected_context;
128};
129
130extern struct cli_suppress_notification cli_suppress_notification;
131
18d5d590 132/* Forward-declarations of the entry-points of cli/cli-decode.c. */
c906108c 133
50aeff07
PA
134/* API to the manipulation of command lists. */
135
5a56e9c5
DE
136extern int valid_user_defined_cmd_name_p (const char *name);
137
0450cc4c
TT
138/* Const-correct variant of the above. */
139
140extern struct cmd_list_element *add_cmd (const char *, enum command_class,
141 cmd_const_cfunc_ftype *fun,
142 const char *,
143 struct cmd_list_element **);
144
145/* Like add_cmd, but no command function is specified. */
146
147extern struct cmd_list_element *add_cmd (const char *, enum command_class,
148 const char *,
149 struct cmd_list_element **);
150
6f937416 151extern struct cmd_list_element *add_alias_cmd (const char *, const char *,
a14ed312
KB
152 enum command_class, int,
153 struct cmd_list_element **);
154
21873064
YQ
155extern struct cmd_list_element *add_alias_cmd (const char *,
156 cmd_list_element *,
157 enum command_class, int,
158 struct cmd_list_element **);
159
160
6f937416 161extern struct cmd_list_element *add_prefix_cmd (const char *, enum command_class,
981a3fb3 162 cmd_const_cfunc_ftype *fun,
1947513d 163 const char *,
a14ed312 164 struct cmd_list_element **,
64e61d29 165 const char *, int,
a14ed312
KB
166 struct cmd_list_element **);
167
6f937416 168extern struct cmd_list_element *add_abbrev_prefix_cmd (const char *,
a14ed312 169 enum command_class,
ee7ddd71 170 cmd_const_cfunc_ftype *fun,
1947513d 171 const char *,
a14ed312 172 struct cmd_list_element
64e61d29 173 **, const char *, int,
a14ed312
KB
174 struct cmd_list_element
175 **);
176
eb4c3f4a
TT
177typedef void cmd_const_sfunc_ftype (const char *args, int from_tty,
178 struct cmd_list_element *c);
9f60d481 179extern void set_cmd_sfunc (struct cmd_list_element *cmd,
eb4c3f4a 180 cmd_const_sfunc_ftype *sfunc);
9f60d481 181
eb3ff9a5 182/* A completion routine. Add possible completions to tracker.
6e1dbf8c
PA
183
184 TEXT is the text beyond what was matched for the command itself
185 (leading whitespace is skipped). It stops where we are supposed to
186 stop completing (rl_point) and is '\0' terminated. WORD points in
187 the same buffer as TEXT, and completions should be returned
188 relative to this position. For example, suppose TEXT is "foo" and
189 we want to complete to "foobar". If WORD is "oo", return "oobar";
190 if WORD is "baz/foo", return "baz/foobar". */
eb3ff9a5
PA
191typedef void completer_ftype (struct cmd_list_element *,
192 completion_tracker &tracker,
193 const char *text, const char *word);
625e8578 194
6e1dbf8c
PA
195/* Same, but for set_cmd_completer_handle_brkchars. */
196typedef void completer_handle_brkchars_ftype (struct cmd_list_element *,
eb3ff9a5 197 completion_tracker &tracker,
6e1dbf8c 198 const char *text, const char *word);
7d793aa9 199
625e8578 200extern void set_cmd_completer (struct cmd_list_element *, completer_ftype *);
5ba2abeb 201
7d793aa9
SDJ
202/* Set the completer_handle_brkchars callback. */
203
204extern void set_cmd_completer_handle_brkchars (struct cmd_list_element *,
6e1dbf8c 205 completer_handle_brkchars_ftype *);
7d793aa9 206
bbaca940
AC
207/* HACK: cagney/2002-02-23: Code, mostly in tracepoints.c, grubs
208 around in cmd objects to test the value of the commands sfunc(). */
0450cc4c
TT
209extern int cmd_cfunc_eq (struct cmd_list_element *cmd,
210 cmd_const_cfunc_ftype *cfun);
9f60d481 211
ebcd3b23 212/* Each command object has a local context attached to it. */
aff410f1
MS
213extern void set_cmd_context (struct cmd_list_element *cmd,
214 void *context);
7d0766f3
AC
215extern void *get_cmd_context (struct cmd_list_element *cmd);
216
217
5913bcb0
AC
218/* Execute CMD's pre/post hook. Throw an error if the command fails.
219 If already executing this pre/post hook, or there is no pre/post
220 hook, the call is silently ignored. */
221extern void execute_cmd_pre_hook (struct cmd_list_element *cmd);
222extern void execute_cmd_post_hook (struct cmd_list_element *cmd);
223
1868c04e 224/* Return the type of the command. */
1868c04e
AC
225extern enum cmd_types cmd_type (struct cmd_list_element *cmd);
226
50aeff07
PA
227/* Flag for an ambiguous cmd_list result. */
228#define CMD_LIST_AMBIGUOUS ((struct cmd_list_element *) -1)
1868c04e 229
6f937416 230extern struct cmd_list_element *lookup_cmd (const char **,
a121b7c1
PA
231 struct cmd_list_element *,
232 const char *,
a14ed312
KB
233 int, int);
234
6f937416 235extern struct cmd_list_element *lookup_cmd_1 (const char **,
a14ed312
KB
236 struct cmd_list_element *,
237 struct cmd_list_element **,
238 int);
c906108c 239
aff410f1 240extern struct cmd_list_element *deprecate_cmd (struct cmd_list_element *,
429e55ea 241 const char * );
56382845 242
6f937416 243extern void deprecated_cmd_warning (const char *);
56382845 244
6f937416 245extern int lookup_cmd_composition (const char *text,
aff410f1
MS
246 struct cmd_list_element **alias,
247 struct cmd_list_element **prefix_cmd,
248 struct cmd_list_element **cmd);
56382845 249
6f937416 250extern struct cmd_list_element *add_com (const char *, enum command_class,
0b39b52e 251 cmd_const_cfunc_ftype *fun,
1947513d 252 const char *);
c906108c 253
6f937416 254extern struct cmd_list_element *add_com_alias (const char *, const char *,
a14ed312 255 enum command_class, int);
c906108c 256
4034d0ff
AT
257extern struct cmd_list_element *add_com_suppress_notification
258 (const char *name, enum command_class theclass,
1ee870c5 259 cmd_const_cfunc_ftype *fun, const char *doc,
4034d0ff
AT
260 int *supress_notification);
261
6f937416 262extern struct cmd_list_element *add_info (const char *,
1d12d88f 263 cmd_const_cfunc_ftype *fun,
1947513d 264 const char *);
c906108c 265
1947513d
TT
266extern struct cmd_list_element *add_info_alias (const char *, const char *,
267 int);
c906108c 268
eb3ff9a5
PA
269extern void complete_on_cmdlist (struct cmd_list_element *,
270 completion_tracker &tracker,
271 const char *, const char *, int);
c906108c 272
eb3ff9a5
PA
273extern void complete_on_enum (completion_tracker &tracker,
274 const char *const *enumlist,
275 const char *, const char *);
c906108c 276
50aeff07 277/* Functions that implement commands about CLI commands. */
c906108c 278
64e61d29 279extern void help_list (struct cmd_list_element *, const char *,
d9fcf2fb 280 enum command_class, struct ui_file *);
c906108c 281
08546159
AC
282/* Method for show a set/show variable's VALUE on FILE. If this
283 method isn't supplied deprecated_show_value_hack() is called (which
284 is not good). */
285typedef void (show_value_ftype) (struct ui_file *file,
286 int from_tty,
287 struct cmd_list_element *cmd,
288 const char *value);
289/* NOTE: i18n: This function is not i18n friendly. Callers should
290 instead print the value out directly. */
291extern show_value_ftype deprecated_show_value_hack;
292
6f937416 293extern void add_setshow_enum_cmd (const char *name,
fe978cb0 294 enum command_class theclass,
40478521 295 const char *const *enumlist,
1b295c3d
AC
296 const char **var,
297 const char *set_doc,
298 const char *show_doc,
299 const char *help_doc,
eb4c3f4a 300 cmd_const_sfunc_ftype *set_func,
08546159 301 show_value_ftype *show_func,
1b295c3d 302 struct cmd_list_element **set_list,
7376b4c2 303 struct cmd_list_element **show_list);
c906108c 304
6f937416 305extern void add_setshow_auto_boolean_cmd (const char *name,
fe978cb0 306 enum command_class theclass,
e9e68a56 307 enum auto_boolean *var,
3b64bf98
AC
308 const char *set_doc,
309 const char *show_doc,
310 const char *help_doc,
eb4c3f4a 311 cmd_const_sfunc_ftype *set_func,
08546159 312 show_value_ftype *show_func,
e9e68a56
AC
313 struct cmd_list_element **set_list,
314 struct cmd_list_element **show_list);
97c3646f 315
6f937416 316extern void add_setshow_boolean_cmd (const char *name,
fe978cb0 317 enum command_class theclass,
e707bbc2 318 int *var,
3b64bf98 319 const char *set_doc, const char *show_doc,
2c5b56ce 320 const char *help_doc,
eb4c3f4a 321 cmd_const_sfunc_ftype *set_func,
08546159 322 show_value_ftype *show_func,
e707bbc2
AC
323 struct cmd_list_element **set_list,
324 struct cmd_list_element **show_list);
f3796e26 325
6f937416 326extern void add_setshow_filename_cmd (const char *name,
fe978cb0 327 enum command_class theclass,
b3f42336
AC
328 char **var,
329 const char *set_doc,
330 const char *show_doc,
331 const char *help_doc,
eb4c3f4a 332 cmd_const_sfunc_ftype *set_func,
08546159 333 show_value_ftype *show_func,
b3f42336
AC
334 struct cmd_list_element **set_list,
335 struct cmd_list_element **show_list);
336
6f937416 337extern void add_setshow_string_cmd (const char *name,
fe978cb0 338 enum command_class theclass,
5efd5804
PA
339 char **var,
340 const char *set_doc,
341 const char *show_doc,
342 const char *help_doc,
eb4c3f4a 343 cmd_const_sfunc_ftype *set_func,
5efd5804
PA
344 show_value_ftype *show_func,
345 struct cmd_list_element **set_list,
346 struct cmd_list_element **show_list);
347
44478ab3 348extern struct cmd_list_element *add_setshow_string_noescape_cmd
6f937416 349 (const char *name,
fe978cb0 350 enum command_class theclass,
44478ab3
TT
351 char **var,
352 const char *set_doc,
353 const char *show_doc,
354 const char *help_doc,
eb4c3f4a 355 cmd_const_sfunc_ftype *set_func,
44478ab3
TT
356 show_value_ftype *show_func,
357 struct cmd_list_element **set_list,
358 struct cmd_list_element **show_list);
26c41df3 359
6f937416 360extern void add_setshow_optional_filename_cmd (const char *name,
fe978cb0 361 enum command_class theclass,
b4b4ac0b
AC
362 char **var,
363 const char *set_doc,
364 const char *show_doc,
365 const char *help_doc,
eb4c3f4a 366 cmd_const_sfunc_ftype *set_func,
b4b4ac0b
AC
367 show_value_ftype *show_func,
368 struct cmd_list_element **set_list,
369 struct cmd_list_element **show_list);
370
6f937416 371extern void add_setshow_integer_cmd (const char *name,
fe978cb0 372 enum command_class theclass,
5efd5804
PA
373 int *var,
374 const char *set_doc,
375 const char *show_doc,
376 const char *help_doc,
eb4c3f4a 377 cmd_const_sfunc_ftype *set_func,
5efd5804
PA
378 show_value_ftype *show_func,
379 struct cmd_list_element **set_list,
380 struct cmd_list_element **show_list);
c0d88b1b 381
6f937416 382extern void add_setshow_uinteger_cmd (const char *name,
fe978cb0 383 enum command_class theclass,
5efd5804
PA
384 unsigned int *var,
385 const char *set_doc,
386 const char *show_doc,
387 const char *help_doc,
eb4c3f4a 388 cmd_const_sfunc_ftype *set_func,
5efd5804
PA
389 show_value_ftype *show_func,
390 struct cmd_list_element **set_list,
391 struct cmd_list_element **show_list);
15170568 392
6f937416 393extern void add_setshow_zinteger_cmd (const char *name,
fe978cb0 394 enum command_class theclass,
5efd5804
PA
395 int *var,
396 const char *set_doc,
397 const char *show_doc,
398 const char *help_doc,
eb4c3f4a 399 cmd_const_sfunc_ftype *set_func,
5efd5804
PA
400 show_value_ftype *show_func,
401 struct cmd_list_element **set_list,
402 struct cmd_list_element **show_list);
25d29d70 403
6f937416 404extern void add_setshow_zuinteger_cmd (const char *name,
fe978cb0 405 enum command_class theclass,
5efd5804
PA
406 unsigned int *var,
407 const char *set_doc,
408 const char *show_doc,
409 const char *help_doc,
eb4c3f4a 410 cmd_const_sfunc_ftype *set_func,
6fc1c773
YQ
411 show_value_ftype *show_func,
412 struct cmd_list_element **set_list,
413 struct cmd_list_element **show_list);
414
415extern void
6f937416 416 add_setshow_zuinteger_unlimited_cmd (const char *name,
fe978cb0 417 enum command_class theclass,
b69b1fb1 418 int *var,
6fc1c773
YQ
419 const char *set_doc,
420 const char *show_doc,
421 const char *help_doc,
eb4c3f4a 422 cmd_const_sfunc_ftype *set_func,
5efd5804
PA
423 show_value_ftype *show_func,
424 struct cmd_list_element **set_list,
425 struct cmd_list_element **show_list);
1e8fb976 426
c906108c
SS
427/* Do a "show" command for each thing on a command list. */
428
64e61d29 429extern void cmd_show_list (struct cmd_list_element *, int, const char *);
c906108c 430
c25c4a8b 431/* Used everywhere whenever at least one parameter is required and
ebcd3b23 432 none is specified. */
c25c4a8b 433
5b10184c 434extern void error_no_arg (const char *) ATTRIBUTE_NORETURN;
c906108c 435
a14ed312 436extern void dont_repeat (void);
c906108c 437
1ac32117 438extern scoped_restore_tmpl<int> prevent_dont_repeat (void);
47a80e90 439
85c4be7c
TT
440/* Set the arguments that will be passed if the current command is
441 repeated. Note that the passed-in string must be a constant. */
442
443extern void set_repeat_arguments (const char *args);
444
c906108c
SS
445/* Used to mark commands that don't do anything. If we just leave the
446 function field NULL, the command is interpreted as a help topic, or
447 as a class of commands. */
448
eb7c454d 449extern void not_just_help_class_command (const char *, int);
c906108c 450
aff410f1 451/* Check function pointer. */
f436dd25
MH
452extern int cmd_func_p (struct cmd_list_element *cmd);
453
aff410f1
MS
454/* Call the command function. */
455extern void cmd_func (struct cmd_list_element *cmd,
95a6b0a1 456 const char *args, int from_tty);
f436dd25 457
c906108c 458#endif /* !defined (COMMAND_H) */