* config/i386/tm-cygwin.h: include tm-i386.h instead of tm-i386v.h. This fixes
[binutils-gdb.git] / gdb / command.h
index 3b916d41d935a7a93b9dee0ef597043aff11ba90..20ebef2b46faee905e7df55ccdc49a185ee5095c 100644 (file)
@@ -1,5 +1,13 @@
+/* ***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.
+   Copyright 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2000
+   Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -33,7 +41,7 @@ enum command_class
   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
@@ -47,12 +55,28 @@ typedef enum cmd_types
   }
 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,
@@ -108,15 +132,14 @@ struct cmd_list_element
     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,
@@ -150,7 +173,14 @@ struct cmd_list_element
     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.  */
@@ -186,7 +216,7 @@ struct cmd_list_element
        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").  */
@@ -194,20 +224,24 @@ struct cmd_list_element
 
     /* 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.  */
@@ -216,31 +250,39 @@ struct cmd_list_element
 
 /* 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 * );
@@ -254,27 +296,22 @@ extern int
                         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 *);
 
@@ -284,42 +321,47 @@ extern void help_list (struct cmd_list_element *, char *,
 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 **));
-
-/* 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 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_set_boolean_cmd (char *name,
+                                                    enum command_class class,
+                                                    int *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 "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) */