* cli/cli-decode.h: Don't include "gdb_regex.h"; provide a forward
[deliverable/binutils-gdb.git] / gdb / cli / cli-decode.h
index 82c3d7d3fb4acc0b05ff0cc6feaabdc6288104bb..cb54721564e474097e33e2d1057ee089a3dbc3fc 100644 (file)
 #if !defined (CLI_DECODE_H)
 #define CLI_DECODE_H 1
 
-#include "gnu-regex.h"   /* Needed by apropos_cmd. */
-
-/* Command classes are top-level categories into which commands are broken
-   down for "help" purposes.  
-   Notes on classes: class_alias is for alias commands which are not
-   abbreviations of the original command.  class-pseudo is for
-   commands which are not really commands nor help topics ("stop").  */
-
-enum command_class
-{
-  /* Special args to help_list */
-  class_deprecated, all_classes = -2, all_commands = -1,
-  /* Classes of commands */
-  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
-};
+#include "command.h"
 
+struct re_pattern_buffer;
+
+#if 0
+/* FIXME: cagney/2002-03-17: Once cmd_type() has been removed, ``enum
+   cmd_types'' can be moved from "command.h" to "cli-decode.h".  */
 /* Not a set/show command.  Note that some commands which begin with
    "set" or "show" might be in this category, if their syntax does
    not fall into one of the following categories.  */
@@ -48,55 +36,7 @@ typedef enum cmd_types
     show_cmd
   }
 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,
-
-    /* Like var_uinteger but signed.  *VAR is an int.  The user can type 0
-       to mean "unlimited", which is stored in *VAR as INT_MAX.  */
-    var_integer,
-
-    /* String which the user enters with escapes (e.g. the user types \n and
-       it is a real newline in the stored string).
-       *VAR is a malloc'd string, or NULL if the string is empty.  */
-    var_string,
-    /* String which stores what the user types verbatim.
-       *VAR is a malloc'd string, or NULL if the string is empty.  */
-    var_string_noescape,
-    /* String which stores a filename.
-       *VAR is a malloc'd string, or NULL if the string is empty.  */
-    var_filename,
-    /* ZeroableInteger.  *VAR is an int.  Like Unsigned Integer except
-       that zero really means zero.  */
-    var_zinteger,
-    /* Enumerated type.  Can only have one of the specified values.  *VAR is a
-       char pointer to the name of the element that we find.  */
-    var_enum
-  }
-var_types;
+#endif
 
 /* This structure records one command'd definition.  */
 
@@ -120,20 +60,26 @@ struct cmd_list_element
     /* Command class; class values are chosen by application program.  */
     enum command_class class;
 
-    /* Function definition of this command.
-       NO_FUNCTION for command class names and for help topics that
-       are not really commands.  */
+    /* Function definition of this command.  NULL for command class
+       names and for help topics that are not really commands.  NOTE:
+       cagney/2002-02-02: This function signature is evolving.  For
+       the moment suggest sticking with either set_cmd_cfunc() or
+       set_cmd_sfunc().  */
+    void (*func) (struct cmd_list_element *c, char *args, int from_tty);
+    /* The command's real callback.  At present func() bounces through
+       to one of the below.  */
     union
       {
-       /* If type is not_set_cmd, call it like this:  */
-       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) (char *args, int from_tty, struct cmd_list_element * c);
+       /* If type is not_set_cmd, call it like this: */
+       cmd_cfunc_ftype *cfunc;
+       /* If type is set_cmd or show_cmd, first set the variables,
+          and then call this: */
+       cmd_sfunc_ftype *sfunc;
       }
     function;
-#define NO_FUNCTION ((void (*) (char *args, int from_tty)) 0)
+
+    /* Local state (context) for this command.  This can be anything.  */
+    void *context;
 
     /* Documentation of this command (or help topic).
        First line is brief documentation; remaining lines form, with it,
@@ -166,6 +112,10 @@ struct cmd_list_element
     /* if this command is deprecated, this is the replacement name */
     char *replacement;
 
+    /* If this command represents a show command, then this function
+       is called before the variable's value is examined.  */
+    void (*pre_show_hook) (struct cmd_list_element *c);
+
     /* Hook for another command to be executed before this command.  */
     struct cmd_list_element *hook_pre;
 
@@ -269,6 +219,27 @@ extern struct cmd_list_element *add_abbrev_prefix_cmd (char *,
                                                       struct cmd_list_element
                                                       **);
 
+/* Set the commands corresponding callback.  */
+
+extern void set_cmd_cfunc (struct cmd_list_element *cmd,
+                          void (*cfunc) (char *args, int from_tty));
+
+extern void set_cmd_sfunc (struct cmd_list_element *cmd,
+                          void (*sfunc) (char *args, int from_tty,
+                                         struct cmd_list_element * c));
+
+extern void set_cmd_completer (struct cmd_list_element *cmd,
+                              char **(*completer) (char *text, char *word));
+
+/* HACK: cagney/2002-02-23: Code, mostly in tracepoints.c, grubs
+   around in cmd objects to test the value of the commands sfunc().  */
+extern int cmd_cfunc_eq (struct cmd_list_element *cmd,
+                        void (*cfunc) (char *args, int from_tty));
+
+/* Access to the command's local context.  */
+extern void set_cmd_context (struct cmd_list_element *cmd, void *context);
+extern void *get_cmd_context (struct cmd_list_element *cmd);
+
 extern struct cmd_list_element *lookup_cmd (char **,
                                            struct cmd_list_element *, char *,
                                            int, int);
@@ -323,12 +294,6 @@ extern struct cmd_list_element *add_set_enum_cmd (char *name,
                                                  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
                                                   **);
This page took 0.025112 seconds and 4 git commands to generate.