summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog20
-rw-r--r--gdb/Makefile.in10
-rw-r--r--gdb/cli/cli-decode.h71
-rw-r--r--gdb/command.h168
-rw-r--r--gdb/completer.c2
-rw-r--r--gdb/maint.c2
-rw-r--r--gdb/top.c1
7 files changed, 42 insertions, 232 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index bd81a04bc7b..c48794f4609 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,25 @@
2002-03-23 Andrew Cagney <ac131313@redhat.com>
+ * command.h: Update copyright.
+ (struct cmd_list_element): Replace definition with opaque
+ declaration.
+ (enum cmd_types): Document that it will eventually be moved to
+ cli/cli-decode.h
+ (CMD_DEPRECATED, DEPRECATED_WARN_USER): Delete macros.
+ (MALLOCED_REPLACEMENT): Delete macro.
+ * Makefile.in (cli_decode_h): Add $(command_h).
+ (top.o, completer.o, maint.o): Add dependency on $(cli_decode_h).
+ * top.c: Include "cli/cli-decode.h".
+ * completer.c: Include "cli/cli-decode.h".
+ * maint.c: Include "cli/cli-decode.h".
+ * cli/cli-decode.h: Include "command.h".
+ (enum command_class): Delete.
+ (enum cmd_types): Comment out.
+ (enum cmd_auto_boolean): Delete.
+ (enum var_types): Delete.
+
+2002-03-23 Andrew Cagney <ac131313@redhat.com>
+
* cli/cli-decode.c: Include "gdb_assert.h".
(add_set_or_show_cmd): New static function.
(add_set_cmd): Rewrite. Use add_set_or_show_cmd.
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index e3c9cb080d8..b2b448e58ca 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -592,7 +592,7 @@ buildsym_h = buildsym.h
c_lang_h = c-lang.h $(value_h)
call_cmds_h = call-cmds.h
cli_cmds_h = $(srcdir)/cli/cli-cmds.h
-cli_decode_h = $(srcdir)/cli/cli-decode.h
+cli_decode_h = $(srcdir)/cli/cli-decode.h $(command_h)
cli_out_h = cli-out.h
cli_script_h = $(srcdir)/cli/cli-script.h
cli_setshow_h = $(srcdir)/cli/cli-setshow.h
@@ -1391,7 +1391,7 @@ event-loop.o: event-loop.c $(defs_h) $(top_h) $(event_loop_h) $(event_top_h)
event-top.o: event-top.c $(top_h) $(readline_headers) \
$(defs_h) $(inferior_h) $(event_loop_h) $(event_top_h) $(terminal_h) \
- $(gdbcmd_h) $(target_h)
+ $(gdbcmd_h) $(target_h) $(cli_decode_h)
inf-loop.o: inf-loop.c $(defs_h) $(inferior_h) $(inf_loop_h) $(event_loop_h) \
$(event_top_h)
@@ -1709,7 +1709,8 @@ main.o: main.c $(top_h) $(defs_h) $(gdb_string_h) $(event_loop_h) \
$(symfile_h) $(gdbcore_h) $(ui_out_h)
maint.o: maint.c $(defs_h) $(gdbcmd_h) $(gdbtypes_h) $(symtab_h) \
- $(language_h) $(expression_h) $(objfiles_h) $(symfile_h)
+ $(language_h) $(expression_h) $(objfiles_h) $(symfile_h) \
+ $(cli_decode_h)
mcore-tdep.o: mcore-tdep.c $(defs_h) $(frame_h) $(gdbcmd_h) $(value_h) \
$(symtab_h) $(symfile_h) $(gdbcore_h) $(inferior_h)
@@ -2094,7 +2095,8 @@ thread.o: thread.c $(defs_h) $(gdbthread_h) $(gdbcmd_h) $(target_h) \
$(regcache_h) $(ui_out_h) $(gdb_h)
completer.o: completer.c $(completer_h) $(gdbtypes_h) $(symtab_h) \
- $(defs_h) $(gdbcmd_h) $(expression_h) $(readline_headers)
+ $(defs_h) $(gdbcmd_h) $(expression_h) $(readline_headers) \
+ $(cli_decode_h)
top.o: top.c $(top_h) $(bfd_h) $(getopt_h) $(readline_headers) $(call_cmds_h) \
$(cli_cmds_h) $(cli_script_h) $(cli_setshow_h) \
diff --git a/gdb/cli/cli-decode.h b/gdb/cli/cli-decode.h
index adb9feb27f8..72436f04657 100644
--- a/gdb/cli/cli-decode.h
+++ b/gdb/cli/cli-decode.h
@@ -20,24 +20,11 @@
#define CLI_DECODE_H 1
#include "gdb_regex.h" /* Needed by apropos_cmd. */
+#include "command.h"
-/* 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
-};
-
+#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 +35,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. */
diff --git a/gdb/command.h b/gdb/command.h
index 5f7284e4dfe..db7a7402584 100644
--- a/gdb/command.h
+++ b/gdb/command.h
@@ -1,13 +1,7 @@
-/* ***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 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1999, 2000
- Free Software Foundation, Inc.
+
+ Copyright 1986, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1999,
+ 2000, 2002 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
@@ -44,6 +38,8 @@ enum command_class
class_pseudo, class_tui, class_xdb
};
+/* 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. */
@@ -105,159 +101,7 @@ typedef enum var_types
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. */
- struct cmd_list_element *next;
-
- /* Name of this command. */
- char *name;
-
- /* Command class; class values are chosen by application program. */
- enum command_class class;
-
- /* 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 set_cmd or show_cmd, first set the variables, and
- then call this. */
- void (*sfunc) (char *args, int from_tty, struct cmd_list_element * c);
- }
- function;
-
- /* 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,
- the full documentation. First line should end with a period.
- 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;
-
- /* 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;
-
- /* 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. */
- struct cmd_list_element **prefixlist;
-
- /* For prefix commands only:
- String containing prefix commands to get here: this one
- plus any others needed to get to it. Should end in a space.
- It is used before the word "command" in describing the
- commands reached through this prefix. */
- char *prefixname;
-
- /* For prefix commands only:
- nonzero means do not get an error if subcommand is not
- recognized; call the prefix's own function in that case. */
- char allow_unknown;
-
- /* Nonzero says this is an abbreviation, and should not
- be mentioned in lists of commands.
- This allows "br<tab>" to complete to "break", which it
- otherwise wouldn't. */
- char abbrev_flag;
-
- /* Completion routine for this command. TEXT is the text beyond
- what was matched for the command itself (leading whitespace is
- skipped). It stops where we are supposed to stop completing
- (rl_point) and is '\0' terminated.
-
- Return value is a malloc'd vector of pointers to possible completions
- terminated with NULL. If there are no completions, returning a pointer
- to a NULL would work but returning NULL itself is also valid.
- WORD points in the same buffer as TEXT, and completions should be
- 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) (char *text, char *word);
-
- /* Type of "set" or "show" command (or SET_NOT_SET if not "set"
- or "show"). */
- cmd_types type;
-
- /* Pointer to variable affected by "set" and "show". Doesn't matter
- if type is not_set. */
- void *var;
-
- /* What kind of variable is *VAR? */
- var_types var_type;
-
- /* Pointer to NULL terminated list of enumerated values (like argv). */
- 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, (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_post;
-
- /* Pointer to command that is aliased by this one, so the
- aliased command can be located in case it has been hooked. */
- struct cmd_list_element *cmd_pointer;
- };
+struct cmd_list_element;
/* Forward-declarations of the entry-points of cli/cli-decode.c. */
diff --git a/gdb/completer.c b/gdb/completer.c
index 30a84d69e74..67ea300f14b 100644
--- a/gdb/completer.c
+++ b/gdb/completer.c
@@ -24,6 +24,8 @@
#include "expression.h"
#include "filenames.h" /* for DOSish file names */
+#include "cli/cli-decode.h"
+
/* FIXME: This is needed because of lookup_cmd_1().
We should be calling a hook instead so we eliminate the CLI dependency. */
#include "gdbcmd.h"
diff --git a/gdb/maint.c b/gdb/maint.c
index 0d2be0912f5..aaa3c68d1d6 100644
--- a/gdb/maint.c
+++ b/gdb/maint.c
@@ -36,6 +36,8 @@
#include "objfiles.h"
#include "value.h"
+#include "cli/cli-decode.h"
+
extern void _initialize_maint_cmds (void);
static void maintenance_command (char *, int);
diff --git a/gdb/top.c b/gdb/top.c
index 83c84413c26..7acbb938a35 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -27,6 +27,7 @@
#include "cli/cli-cmds.h"
#include "cli/cli-script.h"
#include "cli/cli-setshow.h"
+#include "cli/cli-decode.h"
#include "symtab.h"
#include "inferior.h"
#include <signal.h>