* config/sparc/nm-linux.h: Include config/nm-linux.h.
[deliverable/binutils-gdb.git] / gdb / command.h
index c7b8e5ea90253c7b5250982b6e64bc80b0022ed6..4cff582a20ce2d739966f50bac895a5c16f676fa 100644 (file)
@@ -1,5 +1,5 @@
 /* Header file for command-reading library command.c.
-   Copyright (C) 1986, 1989, 1990 Free Software Foundation, Inc.
+   Copyright (C) 1986, 1989, 1990, 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
 #if !defined (COMMAND_H)
 #define COMMAND_H 1
 
+/* 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
+};
+
 /* 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.  */
@@ -65,6 +82,15 @@ var_types;
 
 /* This structure records one command'd definition.  */
 
+
+/* This flag is used by the code executing commands to warn the user 
+   the first time a deprecated command is used, see the 'flags' field in
+   the following struct.
+*/
+#define CMD_DEPRECATED            0x1
+#define DEPRECATED_WARN_USER      0x2
+#define MALLOCED_REPLACEMENT      0x4
+
 struct cmd_list_element
   {
     /* Points to next command in this list.  */
@@ -98,6 +124,31 @@ struct cmd_list_element
        Entire string should also end with a period, not a newline.  */
     char *doc;
 
+    /* flags : a bitfield 
+       
+       bit 0: (LSB) CMD_DEPRECATED, when 1 indicated that this command
+       is deprecated. It may be removed from gdb's command set in the
+       future.
+
+       bit 1: DEPRECATED_WARN_USER, the user needs to be warned that
+       this is a deprecated command.  The user should only be warned
+       the first time a command is used.
+        
+       bit 2: MALLOCED_REPLACEMENT, when functions are deprecated at
+       compile time (this is the way it should, in general, be done)
+       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
+       undeprecated or re-deprecated at runtime we don't want to risk
+       calling free on statically allocated memory, so we check this
+       flag.  
+     */
+    int flags;
+
+    /* if this command is deprecated, this is the replacement name */
+    char *replacement;
+
     /* Hook for another command to be executed before this command.  */
     struct cmd_list_element *hook;
 
@@ -143,7 +194,7 @@ 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;
@@ -191,18 +242,30 @@ extern struct cmd_list_element *
   lookup_cmd_1 PARAMS ((char **, struct cmd_list_element *,
                        struct cmd_list_element **, int));
 
+extern struct cmd_list_element *
+  deprecate_cmd (struct cmd_list_element *, char * );
+
 extern void
-add_com PARAMS ((char *, enum command_class, void (*fun) (char *, int),
+  deprecated_cmd_warning (char **);
+
+extern int
+  lookup_cmd_composition (char *text,
+                        struct cmd_list_element **alias,
+                        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 void
-add_com_alias PARAMS ((char *, char *, enum command_class, int));
+extern struct cmd_list_element *
+  add_com_alias PARAMS ((char *, char *, enum command_class, int));
 
-extern void
-add_info PARAMS ((char *, void (*fun) (char *, int), char *));
+extern struct cmd_list_element *
+  add_info PARAMS ((char *, void (*fun) (char *, int), char *));
 
-extern void
-add_info_alias PARAMS ((char *, char *, int));
+extern struct cmd_list_element *
+  add_info_alias PARAMS ((char *, char *, int));
 
 extern char **
   complete_on_cmdlist PARAMS ((struct cmd_list_element *, char *, char *));
@@ -213,24 +276,26 @@ extern char **
 extern void
 delete_cmd PARAMS ((char *, struct cmd_list_element **));
 
-extern void
-help_cmd PARAMS ((char *, GDB_FILE *));
+extern void help_cmd (char *, struct ui_file *);
 
-extern void
-help_list PARAMS ((struct cmd_list_element *, char *, enum command_class,
-                  GDB_FILE *));
+extern void help_list (struct cmd_list_element *, char *,
+                      enum command_class, struct ui_file *);
 
-extern void
-help_cmd_list PARAMS ((struct cmd_list_element *, enum command_class, char *,
-                      int, GDB_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_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 PARAMS ((char *name, enum command_class, char *list[],
-                      char *var, char *doc, struct cmd_list_element ** c));
+extern struct cmd_list_element *add_set_enum_cmd (char *name,
+                                                 enum command_class class,
+                                                 char *enumlist[],
+                                                 char **var,
+                                                 char *doc,
+                                                 struct cmd_list_element **list);
 
 extern struct cmd_list_element *
   add_show_from_set PARAMS ((struct cmd_list_element *,
This page took 0.025043 seconds and 4 git commands to generate.