summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cagney <cagney@redhat.com>2002-06-28 23:23:25 +0000
committerAndrew Cagney <cagney@redhat.com>2002-06-28 23:23:25 +0000
commit846d85037b9f5c8f00abefdac22cef5917488c27 (patch)
treef87f9b72621d5584a03b9907ffe9c09f0b989b96
parent8416be83ad875e64f064faa31c9beb6090e6b53b (diff)
downloadgdb-846d85037b9f5c8f00abefdac22cef5917488c27.tar.gz
merge with trunk.
-rw-r--r--gdb/cli/cli-decode.c66
1 files changed, 47 insertions, 19 deletions
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
index 3efee979ebc..098c13a1989 100644
--- a/gdb/cli/cli-decode.c
+++ b/gdb/cli/cli-decode.c
@@ -329,16 +329,20 @@ add_set_or_show_cmd (char *name,
CLASS is as in add_cmd. VAR_TYPE is the kind of thing we are
setting. VAR is address of the variable being controlled by this
command. SET_FUNC and SHOW_FUNC are the callback functions (if
- non-NULL). SET_DOC and SHOW_DOC are the documentation strings. */
+ non-NULL). SET_DOC and SHOW_DOC are the documentation strings.
+ SET_RESULT and SHOW_RESULT, if not NULL, are set to the resulting
+ command structures. */
-static struct cmd_list_element *
-add_setshow_cmd (char *name,
- enum command_class class,
- var_types var_type, void *var,
- char *set_doc, char *show_doc,
- cmd_sfunc_ftype *set_func, cmd_sfunc_ftype *show_func,
- struct cmd_list_element **set_list,
- struct cmd_list_element **show_list)
+void
+add_setshow_cmd_full (char *name,
+ enum command_class class,
+ var_types var_type, void *var,
+ char *set_doc, char *show_doc,
+ cmd_sfunc_ftype *set_func, cmd_sfunc_ftype *show_func,
+ struct cmd_list_element **set_list,
+ struct cmd_list_element **show_list,
+ struct cmd_list_element **set_result,
+ struct cmd_list_element **show_result)
{
struct cmd_list_element *set;
struct cmd_list_element *show;
@@ -350,9 +354,31 @@ add_setshow_cmd (char *name,
show_doc, show_list);
if (show_func != NULL)
set_cmd_sfunc (show, show_func);
- /* The caller often wants to modify set to include info like an
- enumeration. */
- return set;
+
+ if (set_result != NULL)
+ *set_result = set;
+ if (show_result != NULL)
+ *show_result = show;
+}
+
+/* Add element named NAME to both the command SET_LIST and SHOW_LIST.
+ CLASS is as in add_cmd. VAR_TYPE is the kind of thing we are
+ setting. VAR is address of the variable being controlled by this
+ command. SET_FUNC and SHOW_FUNC are the callback functions (if
+ non-NULL). SET_DOC and SHOW_DOC are the documentation strings. */
+
+void
+add_setshow_cmd (char *name,
+ enum command_class class,
+ var_types var_type, void *var,
+ char *set_doc, char *show_doc,
+ cmd_sfunc_ftype *set_func, cmd_sfunc_ftype *show_func,
+ struct cmd_list_element **set_list,
+ struct cmd_list_element **show_list)
+{
+ add_setshow_cmd_full (name, class, var_type, var, set_doc, show_doc,
+ set_func, show_func, set_list, show_list,
+ NULL, NULL);
}
struct cmd_list_element *
@@ -405,9 +431,10 @@ add_setshow_auto_boolean_cmd (char *name,
{
static const char *auto_boolean_enums[] = { "on", "off", "auto", NULL };
struct cmd_list_element *c;
- c = add_setshow_cmd (name, class, var_auto_boolean, var,
- set_doc, show_doc, set_func, show_func,
- set_list, show_list);
+ add_setshow_cmd_full (name, class, var_auto_boolean, var,
+ set_doc, show_doc, set_func, show_func,
+ set_list, show_list,
+ &c, NULL);
c->enums = auto_boolean_enums;
}
@@ -426,10 +453,11 @@ add_setshow_boolean_cmd (char *name,
{
static const char *boolean_enums[] = { "on", "off", NULL };
struct cmd_list_element *c;
- c = add_setshow_cmd (name, class, var_boolean, var,
- set_doc, show_doc,
- set_func, show_func,
- set_list, show_list);
+ add_setshow_cmd_full (name, class, var_boolean, var,
+ set_doc, show_doc,
+ set_func, show_func,
+ set_list, show_list,
+ &c, NULL);
c->enums = boolean_enums;
}