2000-12-11 Fernando Nasser <fnasser@redhat.com>
[deliverable/binutils-gdb.git] / gdb / command.h
index 200a48703e46000edddb036c2a1c074bebe96110..d49eff0fe60d7d66ee28a10460bc39071ce9f9e1 100644 (file)
@@ -1,3 +1,10 @@
+/* ***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.
+   fnasser@redhat.com    */
+
 /* Header file for command-reading library command.c.
    Copyright (C) 1986, 1989, 1990, 2000 Free Software Foundation, Inc.
 
@@ -33,7 +40,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 +54,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 +131,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,
@@ -136,7 +158,7 @@ struct cmd_list_element
         
        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
@@ -150,7 +172,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 +215,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 +223,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 +249,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 +295,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 +320,48 @@ 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 **));
+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) */
This page took 0.027359 seconds and 4 git commands to generate.