+/* ***DEPRECATED*** The gdblib files must not be calling/using things in any
+ of the possible command languages. If necessary, a hook (that may be
+ present or not) must be used and set to the appropriate routine by any
+ command language that cares about it. If you are having to include this
+ file you are possibly doing things the old way. This file will disapear.
+ 2000-12-01 fnasser@redhat.com */
+
/* Header file for command-reading library command.c.
Copyright (C) 1986, 1989, 1990, 2000 Free Software Foundation, Inc.
no_class = -1, class_run = 0, class_vars, class_stack,
class_files, class_support, class_info, class_breakpoint, class_trace,
class_alias, class_obscure, class_user, class_maintenance,
- class_pseudo, class_tui, class_xdb,
+ class_pseudo, class_tui, class_xdb
};
/* Not a set/show command. Note that some commands which begin with
}
cmd_types;
+/* Reasonable values for an AUTO_BOOLEAN variable. */
+enum cmd_auto_boolean
+{
+ CMD_AUTO_BOOLEAN_TRUE,
+ CMD_AUTO_BOOLEAN_FALSE,
+ CMD_AUTO_BOOLEAN_AUTO
+};
+
/* Types of "set" or "show" command. */
typedef enum var_types
{
/* "on" or "off". *VAR is an integer which is nonzero for on,
zero for off. */
var_boolean,
+
+ /* "on" / "true" / "enable" or "off" / "false" / "disable" or
+ "auto. *VAR is an ``enum cmd_auto_boolean''. NOTE: In general
+ a custom show command will need to be implemented - one that
+ for "auto" prints both the "auto" and the current auto-selected
+ value. */
+ var_auto_boolean,
+
/* Unsigned Integer. *VAR is an unsigned int. The user can type 0
to mean "unlimited", which is stored in *VAR as UINT_MAX. */
var_uinteger,
union
{
/* If type is not_set_cmd, call it like this: */
- void (*cfunc) PARAMS ((char *args, int from_tty));
+ void (*cfunc) (char *args, int from_tty);
/* If type is cmd_set or show_cmd, first set the variables, and
then call this. */
- void (*sfunc) PARAMS ((char *args, int from_tty,
- struct cmd_list_element * c));
+ void (*sfunc) (char *args, int from_tty, struct cmd_list_element * c);
}
function;
-#define NO_FUNCTION ((void (*) PARAMS((char *args, int from_tty))) 0)
+#define NO_FUNCTION ((void (*) (char *args, int from_tty)) 0)
/* Documentation of this command (or help topic).
First line is brief documentation; remaining lines form, with it,
bit 2: MALLOCED_REPLACEMENT, when functions are deprecated at
compile time (this is the way it should, in general, be done)
- the memory comtaining the replacement string is statically
+ the memory containing the replacement string is statically
allocated. In some cases it makes sense to deprecate commands
at runtime (the testsuite is one example). In this case the
memory for replacement is malloc'ed. When a command is
char *replacement;
/* Hook for another command to be executed before this command. */
- struct cmd_list_element *hook;
+ struct cmd_list_element *hook_pre;
+
+ /* Hook for another command to be executed after this command. */
+ struct cmd_list_element *hook_post;
+
+ /* Flag that specifies if this command is already running it's hook. */
+ /* Prevents the possibility of hook recursion. */
+ int hook_in;
/* Nonzero identifies a prefix command. For them, the address
of the variable containing the list of subcommands. */
returned relative to this position. For example, suppose TEXT is "foo"
and we want to complete to "foobar". If WORD is "oo", return
"oobar"; if WORD is "baz/foo", return "baz/foobar". */
- char **(*completer) PARAMS ((char *text, char *word));
+ char **(*completer) (char *text, char *word);
/* Type of "set" or "show" command (or SET_NOT_SET if not "set"
or "show"). */
/* Pointer to variable affected by "set" and "show". Doesn't matter
if type is not_set. */
- char *var;
+ void *var;
/* What kind of variable is *VAR? */
var_types var_type;
/* Pointer to NULL terminated list of enumerated values (like argv). */
- char **enums;
+ const char **enums;
/* Pointer to command strings of user-defined commands */
struct command_line *user_commands;
- /* Pointer to command that is hooked by this one,
+ /* Pointer to command that is hooked by this one, (by hook_pre)
+ so the hook can be removed when this one is deleted. */
+ struct cmd_list_element *hookee_pre;
+
+ /* Pointer to command that is hooked by this one, (by hook_post)
so the hook can be removed when this one is deleted. */
- struct cmd_list_element *hookee;
+ struct cmd_list_element *hookee_post;
/* Pointer to command that is aliased by this one, so the
aliased command can be located in case it has been hooked. */
/* Forward-declarations of the entry-points of command.c. */
-extern struct cmd_list_element *
- add_cmd PARAMS ((char *, enum command_class, void (*fun) (char *, int),
- char *, struct cmd_list_element **));
-
-extern struct cmd_list_element *
- add_alias_cmd PARAMS ((char *, char *, enum command_class, int,
- struct cmd_list_element **));
-
-extern struct cmd_list_element *
- add_prefix_cmd PARAMS ((char *, enum command_class, void (*fun) (char *, int),
- char *, struct cmd_list_element **, char *, int,
- struct cmd_list_element **));
-
-extern struct cmd_list_element *
- add_abbrev_prefix_cmd PARAMS ((char *, enum command_class,
- void (*fun) (char *, int), char *,
- struct cmd_list_element **, char *, int,
- struct cmd_list_element **));
-
-extern struct cmd_list_element *
- lookup_cmd PARAMS ((char **, struct cmd_list_element *, char *, int, int));
-
-extern struct cmd_list_element *
- lookup_cmd_1 PARAMS ((char **, struct cmd_list_element *,
- struct cmd_list_element **, int));
+extern struct cmd_list_element *add_cmd (char *, enum command_class,
+ void (*fun) (char *, int), char *,
+ struct cmd_list_element **);
+
+extern struct cmd_list_element *add_alias_cmd (char *, char *,
+ enum command_class, int,
+ struct cmd_list_element **);
+
+extern struct cmd_list_element *add_prefix_cmd (char *, enum command_class,
+ void (*fun) (char *, int),
+ char *,
+ struct cmd_list_element **,
+ char *, int,
+ struct cmd_list_element **);
+
+extern struct cmd_list_element *add_abbrev_prefix_cmd (char *,
+ enum command_class,
+ void (*fun) (char *,
+ int),
+ char *,
+ struct cmd_list_element
+ **, char *, int,
+ struct cmd_list_element
+ **);
+
+extern struct cmd_list_element *lookup_cmd (char **,
+ struct cmd_list_element *, char *,
+ int, int);
+
+extern struct cmd_list_element *lookup_cmd_1 (char **,
+ struct cmd_list_element *,
+ struct cmd_list_element **,
+ int);
extern struct cmd_list_element *
deprecate_cmd (struct cmd_list_element *, char * );
struct cmd_list_element **prefix_cmd,
struct cmd_list_element **cmd);
-extern struct cmd_list_element *
- add_com PARAMS ((char *, enum command_class, void (*fun) (char *, int),
- char *));
+extern struct cmd_list_element *add_com (char *, enum command_class,
+ void (*fun) (char *, int), char *);
-extern struct cmd_list_element *
- add_com_alias PARAMS ((char *, char *, enum command_class, int));
+extern struct cmd_list_element *add_com_alias (char *, char *,
+ enum command_class, int);
-extern struct cmd_list_element *
- add_info PARAMS ((char *, void (*fun) (char *, int), char *));
+extern struct cmd_list_element *add_info (char *, void (*fun) (char *, int),
+ char *);
-extern struct cmd_list_element *
- add_info_alias PARAMS ((char *, char *, int));
+extern struct cmd_list_element *add_info_alias (char *, char *, int);
-extern char **
- complete_on_cmdlist PARAMS ((struct cmd_list_element *, char *, char *));
+extern char **complete_on_cmdlist (struct cmd_list_element *, char *, char *);
-extern char **
- complete_on_enum PARAMS ((char **enumlist, char *, char *));
+extern char **complete_on_enum (const char *enumlist[], char *, char *);
-extern void
-delete_cmd PARAMS ((char *, struct cmd_list_element **));
+extern void delete_cmd (char *, struct cmd_list_element **);
extern void help_cmd (char *, struct ui_file *);
extern void help_cmd_list (struct cmd_list_element *, enum command_class,
char *, int, struct ui_file *);
-extern struct cmd_list_element *
- add_set_cmd PARAMS ((char *, enum command_class, var_types, char *, char *,
- struct cmd_list_element **));
-
-extern struct cmd_list_element *
- add_set_enum_cmd PARAMS ((char *name, enum command_class, char *list[],
- char *var, char *doc, struct cmd_list_element ** c));
-
-extern struct cmd_list_element *
- add_show_from_set PARAMS ((struct cmd_list_element *,
- struct cmd_list_element **));
+extern struct cmd_list_element *add_set_cmd (char *name, enum
+ command_class class,
+ var_types var_type, void *var,
+ char *doc,
+ struct cmd_list_element **list);
+
+extern struct cmd_list_element *add_set_enum_cmd (char *name,
+ enum command_class class,
+ const char *enumlist[],
+ const char **var,
+ char *doc,
+ struct cmd_list_element **list);
+
+extern struct cmd_list_element *add_set_auto_boolean_cmd (char *name,
+ enum command_class class,
+ enum cmd_auto_boolean *var,
+ char *doc,
+ struct cmd_list_element **list);
+
+extern struct cmd_list_element *add_show_from_set (struct cmd_list_element *,
+ struct cmd_list_element
+ **);
/* Do a "set" or "show" command. ARG is NULL if no argument, or the text
of the argument, and FROM_TTY is nonzero if this command is being entered
directly by the user (i.e. these are just like any other
command). C is the command list element for the command. */
-extern void
-do_setshow_command PARAMS ((char *, int, struct cmd_list_element *));
+extern void do_setshow_command (char *, int, struct cmd_list_element *);
/* Do a "show" command for each thing on a command list. */
-extern void
-cmd_show_list PARAMS ((struct cmd_list_element *, int, char *));
+extern void cmd_show_list (struct cmd_list_element *, int, char *);
-extern void
-error_no_arg PARAMS ((char *));
+extern NORETURN void error_no_arg (char *) ATTR_NORETURN;
-extern void
-dont_repeat PARAMS ((void));
+extern void dont_repeat (void);
/* Used to mark commands that don't do anything. If we just leave the
function field NULL, the command is interpreted as a help topic, or
as a class of commands. */
-extern void
-not_just_help_class_command PARAMS ((char *, int));
+extern void not_just_help_class_command (char *, int);
#endif /* !defined (COMMAND_H) */