This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] add_set_boolean_cmd() -> add_setshow_boolean_cmd()


Hello,

This follows through a suggestion (from Fernando?) from long ago. It replaces add_show_from_set (add_set_boolean_cmd(...), ...); with a more complete add_setshow_boolean_cmd().

Since the function add_show_from_set() pulls a decidedly i18n unfriendly trick, I've not emulated that. Instead the setshow function takes separate SET and SHOW documentation strings.

committed,
Andrew

(I'm going to ari add_show_from_set() as well)

2002-06-15  Andrew Cagney  <ac131313@redhat.com>

	* cli/cli-decode.c (add_setshow_boolean_cmd): Replace
	add_set_boolean_cmd.
	(add_setshow_cmd): New function.
	* command.h (add_setshow_boolean_cmd): Replace
	add_set_boolean_cmd.
	* remote-rdi.c (_initialize_remote_rdi): Update ``set rdiheartbeat''
	and ``set rdiromatzero''.
	* maint.c (_initialize_maint_cmds): Update commented out code.
	* cli/cli-decode.h (add_set_boolean_cmd): Delete declaration.
	* target.c (initialize_targets): Update `set
	trust-readonly-sections'.
	* remote.c (_initialize_remote): Update `set remotebreak'.

Index: command.h
===================================================================
RCS file: /cvs/src/src/gdb/command.h,v
retrieving revision 1.31
diff -u -r1.31 command.h
--- command.h	15 Jun 2002 19:54:25 -0000	1.31
+++ command.h	15 Jun 2002 20:54:32 -0000
@@ -229,11 +229,15 @@
 							  char *doc,
 							  struct cmd_list_element **list);
 
-extern struct cmd_list_element *add_set_boolean_cmd (char *name,
-						     enum command_class class,
-						     int *var,
-						     char *doc,
-						     struct cmd_list_element **list);
+extern void add_setshow_boolean_cmd (char *name,
+				     enum command_class class,
+				     int *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 struct cmd_list_element *add_show_from_set (struct cmd_list_element *,
 						   struct cmd_list_element
Index: maint.c
===================================================================
RCS file: /cvs/src/src/gdb/maint.c,v
retrieving revision 1.26
diff -u -r1.26 maint.c
--- maint.c	10 Apr 2002 22:00:20 -0000	1.26
+++ maint.c	15 Jun 2002 20:54:32 -0000
@@ -783,16 +783,15 @@
 
 
 #ifdef NOTYET
-  /* FIXME: cagney/2001-09-24: A patch introducing a
-     add_set_boolean_cmd() is pending, the below should probably use
-     it.  A patch implementing profiling is pending, this just sets up
-     the framework.  */
-  tmpcmd = add_set_cmd ("profile", class_maintenance,
-			var_boolean, &maintenance_profile_p,
-			"Set internal profiling.\n\
-When enabled GDB is profiled.",
-			&maintenance_set_cmdlist);
-  set_cmd_sfunc (tmpcmd, maintenance_set_profile_cmd);
-  add_show_from_set (tmpcmd, &maintenance_show_cmdlist);
+  /* FIXME: cagney/2002-06-15: A patch implementing profiling is
+     pending, this just sets up the framework.  */
+  tmpcmd = add_setshow_boolean_cmd ("profile", class_maintenance,
+				    var_boolean, &maintenance_profile_p, "\
+Set internal profiling.\n\
+When enabled GDB is profiled.", "\
+Show internal profiling.\n",
+				    maintenance_set_profile_cmd, NULL,
+				    &maintenance_set_cmdlist,
+				    &maintenance_show_cmdlist);
 #endif
 }
Index: remote-rdi.c
===================================================================
RCS file: /cvs/src/src/gdb/remote-rdi.c,v
retrieving revision 1.23
diff -u -r1.23 remote-rdi.c
--- remote-rdi.c	8 May 2002 15:59:52 -0000	1.23
+++ remote-rdi.c	15 Jun 2002 20:54:33 -0000
@@ -1041,24 +1041,24 @@
 	   "Withough an argument, it will display current state.\n",
 	   &maintenancelist);
 
-  add_show_from_set
-    (add_set_boolean_cmd
-     ("rdiromatzero", no_class, &rom_at_zero,
-      "Set target has ROM at addr 0.\n"
-      "A true value disables vector catching, false enables vector catching.\n"
-      "This is evaluated at the time the 'target rdi' command is executed\n",
-      &setlist),
-     &showlist);
+  add_setshow_boolean_cmd
+    ("rdiromatzero", no_class, &rom_at_zero,
+     "Set target has ROM at addr 0.\n"
+     "A true value disables vector catching, false enables vector catching.\n"
+     "This is evaluated at the time the 'target rdi' command is executed\n",
+     "Show if target has ROM at addr 0.\n",
+     NULL, NULL,
+     &setlist, &showlist);
 
-  add_show_from_set
-    (add_set_boolean_cmd
-     ("rdiheartbeat", no_class, &rdi_heartbeat,
-      "Set enable for ADP heartbeat packets.\n"
-      "I don't know why you would want this. If you enable them,\n"
-      "it will confuse ARM and EPI JTAG interface boxes as well\n"
-      "as the Angel Monitor.\n",
-      &setlist),
-     &showlist);
+  add_setshow_boolean_cmd
+    ("rdiheartbeat", no_class, &rdi_heartbeat,
+     "Set enable for ADP heartbeat packets.\n"
+     "I don't know why you would want this. If you enable them,\n"
+     "it will confuse ARM and EPI JTAG interface boxes as well\n"
+     "as the Angel Monitor.\n",
+     "Show enable for ADP heartbeat packets.\n",
+     NULL, NULL,
+     &setlist, &showlist);
 }
 
 /* A little dummy to make linking with the library succeed. */
Index: remote.c
===================================================================
RCS file: /cvs/src/src/gdb/remote.c,v
retrieving revision 1.85
diff -u -r1.85 remote.c
--- remote.c	15 Jun 2002 18:45:31 -0000	1.85
+++ remote.c	15 Jun 2002 20:54:43 -0000
@@ -6069,11 +6069,11 @@
 terminating `#' character and checksum.",
 	   &maintenancelist);
 
-  add_show_from_set
-    (add_set_boolean_cmd ("remotebreak", no_class, &remote_break,
-			  "Set whether to send break if interrupted.\n",
-			  &setlist),
-     &showlist);
+  add_setshow_boolean_cmd ("remotebreak", no_class, &remote_break,
+			   "Set whether to send break if interrupted.\n",
+			   "Show whether to send break if interrupted.\n",
+			   NULL, NULL,
+			   &setlist, &showlist);
 
   /* Install commands for configuring memory read/write packets. */
 
Index: target.c
===================================================================
RCS file: /cvs/src/src/gdb/target.c,v
retrieving revision 1.35
diff -u -r1.35 target.c
--- target.c	4 May 2002 14:19:21 -0000	1.35
+++ target.c	15 Jun 2002 20:54:54 -0000
@@ -2299,16 +2299,15 @@
 When non-zero, target debugging is enabled.", &setdebuglist),
      &showdebuglist);
 
-  add_show_from_set 
-    (add_set_boolean_cmd 
-     ("trust-readonly-sections", class_support, 
-      &trust_readonly, 
-      "Set mode for reading from readonly sections.\n\
+  add_setshow_boolean_cmd ("trust-readonly-sections", class_support, 
+			   &trust_readonly, "\
+Set mode for reading from readonly sections.\n\
 When this mode is on, memory reads from readonly sections (such as .text)\n\
 will be read from the object file instead of from the target.  This will\n\
-result in significant performance improvement for remote targets.",
-      &setlist),
-     &showlist);
+result in significant performance improvement for remote targets.", "\
+Set mode for reading from readonly sections.\n",
+			   NULL, NULL,
+			   &setlist, &showlist);
 
   add_com ("monitor", class_obscure, do_monitor_command,
 	   "Send a command to the remote monitor (remote targets only).");
Index: cli/cli-decode.c
===================================================================
RCS file: /cvs/src/src/gdb/cli/cli-decode.c,v
retrieving revision 1.22
diff -u -r1.22 cli-decode.c
--- cli/cli-decode.c	15 Jun 2002 19:54:26 -0000	1.22
+++ cli/cli-decode.c	15 Jun 2002 20:54:55 -0000
@@ -325,6 +325,35 @@
   return c;
 }
 
+/* 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.  */
+
+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)
+{
+  struct cmd_list_element *set;
+  struct cmd_list_element *show;
+  set = add_set_or_show_cmd (name, set_cmd, class, var_type, var,
+			     set_doc, set_list);
+  if (set_func != NULL)
+    set_cmd_sfunc (set, set_func);
+  show = add_set_or_show_cmd (name, show_cmd, class, var_type, var,
+			      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;
+}
 
 struct cmd_list_element *
 add_set_cmd (char *name,
@@ -379,23 +408,26 @@
   return c;
 }
 
-/* Add element named NAME to command list LIST (the list for set
-   or some sublist thereof).
-   CLASS is as in add_cmd.
-   VAR is address of the variable which will contain the value.
-   DOC is the documentation string.  */
-struct cmd_list_element *
-add_set_boolean_cmd (char *name,
-		     enum command_class class,
-		     int *var,
-		     char *doc,
-		     struct cmd_list_element **list)
+/* Add element named NAME to both the set and show command LISTs (the
+   list for set/show or some sublist thereof).  CLASS is as in
+   add_cmd.  VAR is address of the variable which will contain the
+   value.  SET_DOC and SHOW_DOR are the documentation strings.  */
+void
+add_setshow_boolean_cmd (char *name,
+			 enum command_class class,
+			 int *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)
 {
   static const char *boolean_enums[] = { "on", "off", NULL };
   struct cmd_list_element *c;
-  c = add_set_cmd (name, class, var_boolean, var, doc, list);
+  c = add_setshow_cmd (name, class, var_boolean, var,
+		       set_doc, show_doc,
+		       set_func, show_func,
+		       set_list, show_list);
   c->enums = boolean_enums;
-  return c;
 }
 
 /* Where SETCMD has already been added, add the corresponding show
Index: cli/cli-decode.h
===================================================================
RCS file: /cvs/src/src/gdb/cli/cli-decode.h,v
retrieving revision 1.13
diff -u -r1.13 cli-decode.h
--- cli/cli-decode.h	15 Jun 2002 19:54:26 -0000	1.13
+++ cli/cli-decode.h	15 Jun 2002 20:54:55 -0000
@@ -299,12 +299,6 @@
 							  char *doc,
 							  struct cmd_list_element **list);
 
-extern struct cmd_list_element *add_set_boolean_cmd (char *name,
-						     enum command_class class,
-						     int *var,
-						     char *doc,
-						     struct cmd_list_element **list);
-
 extern struct cmd_list_element *add_show_from_set (struct cmd_list_element *,
 						   struct cmd_list_element
 						   **);

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]