diff options
-rw-r--r-- | gdb/ChangeLog | 10 | ||||
-rw-r--r-- | gdb/cli/cli-decode.c | 66 | ||||
-rw-r--r-- | gdb/command.h | 20 |
3 files changed, 77 insertions, 19 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6584ed4..28142e3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2002-06-26 Tom Tromey <tromey@redhat.com> + + * command.h (add_setshow_cmd): Declare. + (add_setshow_cmd_full): Declare. + * cli/cli-decode.c (add_setshow_cmd): No longer static. Now + returns void. Use add_setshow_cmd_full. + (add_setshow_cmd_full): New function. + (add_setshow_auto_boolean_cmd): Use add_setshow_cmd_full. + (add_setshow_boolean_cmd): Likewise. + 2002-06-26 Jason Thorpe <thorpej@wasabisystems.com> * config/vax/tm-vax.h: Protect from multiple inclusion. diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c index 3efee97..098c13a 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; } diff --git a/gdb/command.h b/gdb/command.h index 00110ce..9aceef6 100644 --- a/gdb/command.h +++ b/gdb/command.h @@ -210,6 +210,26 @@ 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 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); + +extern 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); + extern struct cmd_list_element *add_set_cmd (char *name, enum command_class class, var_types var_type, void *var, |