Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Tom Tromey <tromey@redhat.com>
To: Andrew Cagney <ac131313@cygnus.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: RFA: add_setshow_cmd_full
Date: Wed, 26 Jun 2002 10:56:00 -0000	[thread overview]
Message-ID: <87ptydewu8.fsf@fleche.redhat.com> (raw)
In-Reply-To: <3D19D248.7040102@cygnus.com>

>>>>> "Andrew" == Andrew Cagney <ac131313@cygnus.com> writes:

Andrew> If I understand right, with the above applied, a new
Andrew> add_setshow_cmd(..), that returns void, can be implemented using
Andrew> add_setshow_cmd_full().

Yes.  I went ahead and made that change.  The new patch is appended.
It subsumes the last two add_setshow_cmd() patches.

This time built with -Werror :-).

Ok to commit?

After this I'll submit my jumbo "use add_setshow_cmd instead of
add_show_from_set" patch.

Tom

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.

Index: command.h
===================================================================
RCS file: /cvs/src/src/gdb/command.h,v
retrieving revision 1.33
diff -u -r1.33 command.h
--- command.h 15 Jun 2002 22:05:32 -0000 1.33
+++ command.h 26 Jun 2002 17:54:08 -0000
@@ -210,6 +210,26 @@
 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,
Index: cli/cli-decode.c
===================================================================
RCS file: /cvs/src/src/gdb/cli/cli-decode.c,v
retrieving revision 1.25
diff -u -r1.25 cli-decode.c
--- cli/cli-decode.c 25 Jun 2002 05:39:18 -0000 1.25
+++ cli/cli-decode.c 26 Jun 2002 17:54:11 -0000
@@ -331,14 +331,16 @@
    command.  SET_FUNC and SHOW_FUNC are the callback functions (if
    non-NULL).  SET_DOC and SHOW_DOC are the documentation strings.  */
 
-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 +352,31 @@
 			      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 +429,10 @@
 {
   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 +451,11 @@
 {
   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;
 }
 


  reply	other threads:[~2002-06-26 17:56 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-06-25 13:40 Tom Tromey
2002-06-25 19:35 ` Andrew Cagney
2002-06-25 22:12   ` Tom Tromey
2002-06-26  7:40     ` Andrew Cagney
2002-06-26 10:56       ` Tom Tromey [this message]
2002-06-26 12:54         ` Andrew Cagney
2002-06-25 22:05 ` Eli Zaretskii
2002-06-25 22:13   ` Tom Tromey
2002-06-26 11:23   ` Tom Tromey
2002-06-26 11:46     ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ptydewu8.fsf@fleche.redhat.com \
    --to=tromey@redhat.com \
    --cc=ac131313@cygnus.com \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox