GDB (xrefs)
/tmp/gdb-7.10/gdb/command.h
Go to the documentation of this file.
1 /* Header file for command creation.
2 
3  Copyright (C) 1986-2015 Free Software Foundation, Inc.
4 
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
7  the Free Software Foundation; either version 3 of the License, or
8  (at your option) any later version.
9 
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.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>. */
17 
18 #if !defined (COMMAND_H)
19 #define COMMAND_H 1
20 
21 #include "gdb_vecs.h"
22 
23 /* This file defines the public interface for any code wanting to
24  create commands. */
25 
26 /* Command classes are top-level categories into which commands are
27  broken down for "help" purposes.
28 
29  Notes on classes: class_alias is for alias commands which are not
30  abbreviations of the original command. class-pseudo is for
31  commands which are not really commands nor help topics ("stop"). */
32 
34 {
35  /* Special args to help_list */
37  /* Classes of commands */
42  no_set_class /* Used for "show" commands that have no corresponding
43  "set" command. */
44 };
45 
46 /* FIXME: cagney/2002-03-17: Once cmd_type() has been removed, ``enum
47  cmd_types'' can be moved from "command.h" to "cli-decode.h". */
48 /* Not a set/show command. Note that some commands which begin with
49  "set" or "show" might be in this category, if their syntax does
50  not fall into one of the following categories. */
51 typedef enum cmd_types
52  {
56  }
57 cmd_types;
58 
59 /* Types of "set" or "show" command. */
60 typedef enum var_types
61  {
62  /* "on" or "off". *VAR is an integer which is nonzero for on,
63  zero for off. */
65 
66  /* "on" / "true" / "enable" or "off" / "false" / "disable" or
67  "auto. *VAR is an ``enum auto_boolean''. NOTE: In general a
68  custom show command will need to be implemented - one that for
69  "auto" prints both the "auto" and the current auto-selected
70  value. */
72 
73  /* Unsigned Integer. *VAR is an unsigned int. The user can type
74  0 to mean "unlimited", which is stored in *VAR as UINT_MAX. */
76 
77  /* Like var_uinteger but signed. *VAR is an int. The user can
78  type 0 to mean "unlimited", which is stored in *VAR as
79  INT_MAX. The only remaining use of it is the Python API.
80  Don't use it elsewhere. */
82 
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).
85  *VAR is a malloc'd string, or NULL if the string is empty. */
87  /* String which stores what the user types verbatim.
88  *VAR is a malloc'd string, or NULL if the string is empty. */
90  /* String which stores a filename. (*VAR) is a malloc'd string,
91  or "" if the string was empty. */
93  /* String which stores a filename. (*VAR) is a malloc'd
94  string. */
96  /* ZeroableInteger. *VAR is an int. Like var_integer except
97  that zero really means zero. */
99  /* ZeroableUnsignedInteger. *VAR is an unsigned int. Zero really
100  means zero. */
102  /* ZeroableUnsignedInteger with unlimited value. *VAR is an int,
103  but its range is [0, INT_MAX]. -1 stands for unlimited and
104  other negative numbers are not allowed. */
106  /* Enumerated type. Can only have one of the specified values.
107  *VAR is a char pointer to the name of the element that we
108  find. */
110  }
111 var_types;
112 
113 /* This structure records one command'd definition. */
114 struct cmd_list_element;
115 
116 typedef void cmd_cfunc_ftype (char *args, int from_tty);
117 
118 /* Forward-declarations of the entry-points of cli/cli-decode.c. */
119 
120 /* API to the manipulation of command lists. */
121 
122 extern int valid_user_defined_cmd_name_p (const char *name);
123 
124 extern struct cmd_list_element *add_cmd (const char *, enum command_class,
125  cmd_cfunc_ftype *fun,
126  const char *,
127  struct cmd_list_element **);
128 
129 extern struct cmd_list_element *add_alias_cmd (const char *, const char *,
130  enum command_class, int,
131  struct cmd_list_element **);
132 
133 extern struct cmd_list_element *add_prefix_cmd (const char *, enum command_class,
134  cmd_cfunc_ftype *fun,
135  const char *,
136  struct cmd_list_element **,
137  const char *, int,
138  struct cmd_list_element **);
139 
140 extern struct cmd_list_element *add_abbrev_prefix_cmd (const char *,
141  enum command_class,
142  cmd_cfunc_ftype *fun,
143  const char *,
144  struct cmd_list_element
145  **, const char *, int,
146  struct cmd_list_element
147  **);
148 
149 /* Set the commands corresponding callback. */
150 
151 extern void set_cmd_cfunc (struct cmd_list_element *cmd,
153 
154 typedef void cmd_sfunc_ftype (char *args, int from_tty,
155  struct cmd_list_element *c);
156 extern void set_cmd_sfunc (struct cmd_list_element *cmd,
158 
159 typedef VEC (char_ptr) *completer_ftype (struct cmd_list_element *,
160  const char *, const char *);
161 
162 typedef void completer_ftype_void (struct cmd_list_element *,
163  const char *, const char *);
164 
165 extern void set_cmd_completer (struct cmd_list_element *, completer_ftype *);
166 
167 /* Set the completer_handle_brkchars callback. */
168 
171 
172 /* HACK: cagney/2002-02-23: Code, mostly in tracepoints.c, grubs
173  around in cmd objects to test the value of the commands sfunc(). */
174 extern int cmd_cfunc_eq (struct cmd_list_element *cmd,
175  cmd_cfunc_ftype *cfun);
176 
177 /* Each command object has a local context attached to it. */
178 extern void set_cmd_context (struct cmd_list_element *cmd,
179  void *context);
180 extern void *get_cmd_context (struct cmd_list_element *cmd);
181 
182 
183 /* Execute CMD's pre/post hook. Throw an error if the command fails.
184  If already executing this pre/post hook, or there is no pre/post
185  hook, the call is silently ignored. */
186 extern void execute_cmd_pre_hook (struct cmd_list_element *cmd);
187 extern void execute_cmd_post_hook (struct cmd_list_element *cmd);
188 
189 /* Return the type of the command. */
190 extern enum cmd_types cmd_type (struct cmd_list_element *cmd);
191 
192 /* Flag for an ambiguous cmd_list result. */
193 #define CMD_LIST_AMBIGUOUS ((struct cmd_list_element *) -1)
194 
195 extern struct cmd_list_element *lookup_cmd (const char **,
196  struct cmd_list_element *, char *,
197  int, int);
198 
199 extern struct cmd_list_element *lookup_cmd_1 (const char **,
200  struct cmd_list_element *,
201  struct cmd_list_element **,
202  int);
203 
204 extern struct cmd_list_element *deprecate_cmd (struct cmd_list_element *,
205  const char * );
206 
207 extern void deprecated_cmd_warning (const char *);
208 
209 extern int lookup_cmd_composition (const char *text,
210  struct cmd_list_element **alias,
211  struct cmd_list_element **prefix_cmd,
212  struct cmd_list_element **cmd);
213 
214 extern struct cmd_list_element *add_com (const char *, enum command_class,
215  cmd_cfunc_ftype *fun,
216  const char *);
217 
218 extern struct cmd_list_element *add_com_alias (const char *, const char *,
219  enum command_class, int);
220 
221 extern struct cmd_list_element *add_info (const char *,
222  cmd_cfunc_ftype *fun,
223  const char *);
224 
225 extern struct cmd_list_element *add_info_alias (const char *, const char *,
226  int);
227 
228 extern VEC (char_ptr) *complete_on_cmdlist (struct cmd_list_element *,
229  const char *, const char *, int);
230 
231 extern VEC (char_ptr) *complete_on_enum (const char *const *enumlist,
232  const char *, const char *);
233 
234 /* Functions that implement commands about CLI commands. */
235 
236 extern void help_list (struct cmd_list_element *, const char *,
237  enum command_class, struct ui_file *);
238 
239 /* Method for show a set/show variable's VALUE on FILE. If this
240  method isn't supplied deprecated_show_value_hack() is called (which
241  is not good). */
242 typedef void (show_value_ftype) (struct ui_file *file,
243  int from_tty,
244  struct cmd_list_element *cmd,
245  const char *value);
246 /* NOTE: i18n: This function is not i18n friendly. Callers should
247  instead print the value out directly. */
249 
250 extern void add_setshow_enum_cmd (const char *name,
251  enum command_class theclass,
252  const char *const *enumlist,
253  const char **var,
254  const char *set_doc,
255  const char *show_doc,
256  const char *help_doc,
257  cmd_sfunc_ftype *set_func,
258  show_value_ftype *show_func,
259  struct cmd_list_element **set_list,
260  struct cmd_list_element **show_list);
261 
262 extern void add_setshow_auto_boolean_cmd (const char *name,
263  enum command_class theclass,
264  enum auto_boolean *var,
265  const char *set_doc,
266  const char *show_doc,
267  const char *help_doc,
268  cmd_sfunc_ftype *set_func,
269  show_value_ftype *show_func,
270  struct cmd_list_element **set_list,
271  struct cmd_list_element **show_list);
272 
273 extern void add_setshow_boolean_cmd (const char *name,
274  enum command_class theclass,
275  int *var,
276  const char *set_doc, 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 
283 extern void add_setshow_filename_cmd (const char *name,
284  enum command_class theclass,
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);
293 
294 extern void add_setshow_string_cmd (const char *name,
295  enum command_class theclass,
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 
306  (const char *name,
307  enum command_class theclass,
308  char **var,
309  const char *set_doc,
310  const char *show_doc,
311  const char *help_doc,
312  cmd_sfunc_ftype *set_func,
313  show_value_ftype *show_func,
314  struct cmd_list_element **set_list,
315  struct cmd_list_element **show_list);
316 
317 extern void add_setshow_optional_filename_cmd (const char *name,
318  enum command_class theclass,
319  char **var,
320  const char *set_doc,
321  const char *show_doc,
322  const char *help_doc,
323  cmd_sfunc_ftype *set_func,
324  show_value_ftype *show_func,
325  struct cmd_list_element **set_list,
326  struct cmd_list_element **show_list);
327 
328 extern void add_setshow_integer_cmd (const char *name,
329  enum command_class theclass,
330  int *var,
331  const char *set_doc,
332  const char *show_doc,
333  const char *help_doc,
334  cmd_sfunc_ftype *set_func,
335  show_value_ftype *show_func,
336  struct cmd_list_element **set_list,
337  struct cmd_list_element **show_list);
338 
339 extern void add_setshow_uinteger_cmd (const char *name,
340  enum command_class theclass,
341  unsigned int *var,
342  const char *set_doc,
343  const char *show_doc,
344  const char *help_doc,
345  cmd_sfunc_ftype *set_func,
346  show_value_ftype *show_func,
347  struct cmd_list_element **set_list,
348  struct cmd_list_element **show_list);
349 
350 extern void add_setshow_zinteger_cmd (const char *name,
351  enum command_class theclass,
352  int *var,
353  const char *set_doc,
354  const char *show_doc,
355  const char *help_doc,
356  cmd_sfunc_ftype *set_func,
357  show_value_ftype *show_func,
358  struct cmd_list_element **set_list,
359  struct cmd_list_element **show_list);
360 
361 extern void add_setshow_zuinteger_cmd (const char *name,
362  enum command_class theclass,
363  unsigned int *var,
364  const char *set_doc,
365  const char *show_doc,
366  const char *help_doc,
367  cmd_sfunc_ftype *set_func,
368  show_value_ftype *show_func,
369  struct cmd_list_element **set_list,
370  struct cmd_list_element **show_list);
371 
372 extern void
374  enum command_class theclass,
375  int *var,
376  const char *set_doc,
377  const char *show_doc,
378  const char *help_doc,
379  cmd_sfunc_ftype *set_func,
380  show_value_ftype *show_func,
381  struct cmd_list_element **set_list,
382  struct cmd_list_element **show_list);
383 
384 /* Do a "show" command for each thing on a command list. */
385 
386 extern void cmd_show_list (struct cmd_list_element *, int, const char *);
387 
388 /* Used everywhere whenever at least one parameter is required and
389  none is specified. */
390 
391 extern void error_no_arg (const char *) ATTRIBUTE_NORETURN;
392 
393 extern void dont_repeat (void);
394 
395 extern struct cleanup *prevent_dont_repeat (void);
396 
397 /* Used to mark commands that don't do anything. If we just leave the
398  function field NULL, the command is interpreted as a help topic, or
399  as a class of commands. */
400 
401 extern void not_just_help_class_command (char *, int);
402 
403 /* Check function pointer. */
404 extern int cmd_func_p (struct cmd_list_element *cmd);
405 
406 /* Call the command function. */
407 extern void cmd_func (struct cmd_list_element *cmd,
408  char *args, int from_tty);
409 
410 #endif /* !defined (COMMAND_H) */
void deprecated_cmd_warning(const char *)
Definition: cli-decode.c:1597
void add_setshow_enum_cmd(const char *name, enum command_class theclass, const char *const *enumlist, const char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:487
struct cmd_list_element * add_cmd(const char *, enum command_class, cmd_cfunc_ftype *fun, const char *, struct cmd_list_element **)
Definition: cli-decode.c:192
void * get_cmd_context(struct cmd_list_element *cmd)
Definition: cli-decode.c:147
struct cmd_list_element * add_info_alias(const char *, const char *, int)
Definition: cli-decode.c:865
void set_cmd_cfunc(struct cmd_list_element *cmd, cmd_cfunc_ftype *cfunc)
Definition: cli-decode.c:109
void add_setshow_zuinteger_unlimited_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:736
typedef VEC(char_ptr)*completer_ftype(struct cmd_list_element *
Definition: gdb_vecs.c:105
void cmd_cfunc_ftype(char *args, int from_tty)
Definition: command.h:116
struct cmd_list_element * add_alias_cmd(const char *, const char *, enum command_class, int, struct cmd_list_element **)
Definition: cli-decode.c:286
void execute_cmd_post_hook(struct cmd_list_element *cmd)
Definition: cli-script.c:331
show_value_ftype deprecated_show_value_hack
const char const char *typedef void completer_ftype_void(struct cmd_list_element *, const char *, const char *)
Definition: command.h:162
struct cmd_list_element * add_com_alias(const char *, const char *, enum command_class, int)
Definition: cli-decode.c:882
struct cmd_list_element * add_com(const char *, enum command_class, cmd_cfunc_ftype *fun, const char *)
Definition: cli-decode.c:873
char * char_ptr
Definition: gdb_vecs.h:25
var_types
Definition: command.h:60
struct cmd_list_element * add_prefix_cmd(const char *, enum command_class, cmd_cfunc_ftype *fun, const char *, struct cmd_list_element **, const char *, int, struct cmd_list_element **)
Definition: cli-decode.c:338
int valid_user_defined_cmd_name_p(const char *name)
Definition: cli-decode.c:1272
void add_setshow_uinteger_cmd(const char *name, enum command_class theclass, unsigned int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:694
void set_cmd_completer(struct cmd_list_element *, completer_ftype *)
Definition: cli-decode.c:159
struct cmd_list_element * add_info(const char *, cmd_cfunc_ftype *fun, const char *)
Definition: cli-decode.c:857
const char *const name
Definition: aarch64-tdep.c:68
void add_setshow_zinteger_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:719
void add_setshow_optional_filename_cmd(const char *name, enum command_class theclass, char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:626
cmd_types
Definition: command.h:51
void add_setshow_integer_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:669
void cmd_sfunc_ftype(char *args, int from_tty, struct cmd_list_element *c)
Definition: command.h:154
struct cleanup * prevent_dont_repeat(void)
Definition: top.c:598
int cmd_cfunc_eq(struct cmd_list_element *cmd, cmd_cfunc_ftype *cfun)
Definition: cli-decode.c:135
void set_cmd_context(struct cmd_list_element *cmd, void *context)
Definition: cli-decode.c:141
void cmd_func(struct cmd_list_element *cmd, char *args, int from_tty)
Definition: cli-decode.c:1883
struct cmd_list_element * lookup_cmd_1(const char **, struct cmd_list_element *, struct cmd_list_element **, int)
Definition: cli-decode.c:1332
void add_setshow_zuinteger_cmd(const char *name, enum command_class theclass, unsigned int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:763
void error_no_arg(const char *) ATTRIBUTE_NORETURN
Definition: cli-cmds.c:205
struct cmd_list_element * lookup_cmd(const char **, struct cmd_list_element *, char *, int, int)
Definition: cli-decode.c:1475
cmd_sfunc_ftype * sfunc
Definition: cli-decode.h:120
void( show_value_ftype)(struct ui_file *file, int from_tty, struct cmd_list_element *cmd, const char *value)
Definition: command.h:242
Definition: value.c:172
void add_setshow_string_cmd(const char *name, enum command_class theclass, char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:585
void set_cmd_completer_handle_brkchars(struct cmd_list_element *, completer_ftype_void *)
Definition: cli-decode.c:167
struct cmd_list_element * deprecate_cmd(struct cmd_list_element *, const char *)
Definition: cli-decode.c:272
command_class
Definition: command.h:33
void add_setshow_auto_boolean_cmd(const char *name, enum command_class theclass, enum auto_boolean *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:516
void add_setshow_boolean_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:541
enum command_class theclass
Definition: cli-decode.h:56
void cmd_show_list(struct cmd_list_element *, int, const char *)
Definition: cli-setshow.c:672
void execute_cmd_pre_hook(struct cmd_list_element *cmd)
Definition: cli-script.c:319
struct cmd_list_element * add_setshow_string_noescape_cmd(const char *name, enum command_class theclass, char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:604
void set_cmd_sfunc(struct cmd_list_element *cmd, cmd_sfunc_ftype *sfunc)
Definition: cli-decode.c:125
void not_just_help_class_command(char *, int)
Definition: cli-decode.c:383
int lookup_cmd_composition(const char *text, struct cmd_list_element **alias, struct cmd_list_element **prefix_cmd, struct cmd_list_element **cmd)
Definition: cli-decode.c:1671
auto_boolean
Definition: defs.h:196
void add_setshow_filename_cmd(const char *name, enum command_class theclass, char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
Definition: cli-decode.c:563
int cmd_func_p(struct cmd_list_element *cmd)
Definition: cli-decode.c:1875
void dont_repeat(void)
Definition: top.c:582
cmd_cfunc_ftype * cfunc
Definition: cli-decode.h:117
enum cmd_types cmd_type(struct cmd_list_element *cmd)
Definition: cli-decode.c:153
struct cmd_list_element * add_abbrev_prefix_cmd(const char *, enum command_class, cmd_cfunc_ftype *fun, const char *, struct cmd_list_element **, const char *, int, struct cmd_list_element **)
Definition: cli-decode.c:366
const char const char *void help_list(struct cmd_list_element *, const char *, enum command_class, struct ui_file *)
Definition: cli-decode.c:1023