RFA: avoid deprecated_set_hook

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

RFA: avoid deprecated_set_hook

Tom Tromey
Insight is the last user of deprecated_set_hook.
I'd like to remove that.

This patch changes Insight to use the command_param_changed observer
instead.  I think this is equivalent, and in fact simplifies the code.

I tested this by running Insight on /bin/cat and then changing the
disassembly flavor.  This was the only user of the param-changing event
that I could see in the tree.

Ok?

Tom

2014-01-09  Tom Tromey  <[hidden email]>

        * generic/gdbtk-hooks.c (gdbtk_add_hooks): Use
        command_param_changed observer, not deprecated_set_hook.
        (gdbtk_param_changed): Rename from gdbtk_set_hook.  Simplify.

Index: generic/gdbtk-hooks.c
===================================================================
RCS file: /cvs/src/src/gdb/gdbtk/generic/gdbtk-hooks.c,v
retrieving revision 1.60
diff -u -r1.60 gdbtk-hooks.c
--- generic/gdbtk-hooks.c 2 Jul 2013 17:07:29 -0000 1.60
+++ generic/gdbtk-hooks.c 9 Jan 2014 17:54:26 -0000
@@ -1,7 +1,7 @@
 /* Startup code for Insight.
 
    Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 200, 2002, 2003, 2004,
-   2008, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+   2008, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
 
    Written by Stu Grossman <[hidden email]> of Cygnus Support.
 
@@ -98,7 +98,7 @@
 static void gdbtk_error_begin (void);
 void report_error (void);
 static void gdbtk_annotate_signal (void);
-static void gdbtk_set_hook (struct cmd_list_element *cmdblk);
+static void gdbtk_param_changed (const char *, const char *);
 
 /*
  * gdbtk_fputs can't be static, because we need to call it in gdbtk.c.
@@ -125,10 +125,10 @@
   observer_attach_breakpoint_deleted (gdbtk_delete_breakpoint);
   observer_attach_architecture_changed (gdbtk_architecture_changed);
   observer_attach_memory_changed (gdbtk_memory_changed);
+  observer_attach_command_param_changed (gdbtk_param_changed);
 
   /* Hooks */
   deprecated_call_command_hook = gdbtk_call_command;
-  deprecated_set_hook = gdbtk_set_hook;
   deprecated_readline_begin_hook = gdbtk_readline_begin;
   deprecated_readline_hook = gdbtk_readline;
   deprecated_readline_end_hook = gdbtk_readline_end;
@@ -547,66 +547,16 @@
    the first argument and the new value as the second argument.  */
 
 static void
-gdbtk_set_hook (struct cmd_list_element *cmdblk)
+gdbtk_param_changed (const char *param, const char *value)
 {
   Tcl_DString cmd;
-  char *p;
   char *buffer = NULL;
 
   Tcl_DStringInit (&cmd);
   Tcl_DStringAppendElement (&cmd, "gdbtk_tcl_set_variable");
 
-  /* Append variable name as sublist.  */
-  Tcl_DStringStartSublist (&cmd);
-  p = cmdblk->prefixname;
-  while (p && *p)
-    {
-      char *q = strchr (p, ' ');
-      char save = '\0';
-      if (q)
- {
-  save = *q;
-  *q = '\0';
- }
-      Tcl_DStringAppendElement (&cmd, p);
-      if (q)
- *q = save;
-      p = q + 1;
-    }
-  Tcl_DStringAppendElement (&cmd, cmdblk->name);
-  Tcl_DStringEndSublist (&cmd);
-
-  switch (cmdblk->var_type)
-    {
-    case var_string_noescape:
-    case var_filename:
-    case var_enum:
-    case var_string:
-      Tcl_DStringAppendElement (&cmd, (*(char **) cmdblk->var
-       ? *(char **) cmdblk->var
-       : "(null)"));
-      break;
-
-    case var_boolean:
-      Tcl_DStringAppendElement (&cmd, (*(int *) cmdblk->var ? "1" : "0"));
-      break;
-
-    case var_uinteger:
-    case var_zinteger:
-      buffer = xstrprintf ("%u", *(unsigned int *) cmdblk->var);
-      Tcl_DStringAppendElement (&cmd, buffer);
-      break;
-
-    case var_integer:
-      buffer = xstrprintf ("%d", *(int *) cmdblk->var);
-      Tcl_DStringAppendElement (&cmd, buffer);
-      break;
-
-    default:
-      /* This case should already be trapped by the hook caller.  */
-      Tcl_DStringAppendElement (&cmd, "error");
-      break;
-    }
+  Tcl_DStringAppendElement (&cmd, param);
+  Tcl_DStringAppendElement (&cmd, value);
 
   if (Tcl_Eval (gdbtk_interp, Tcl_DStringValue (&cmd)) != TCL_OK)
     report_error ();
Reply | Threaded
Open this post in threaded view
|

Re: RFA: avoid deprecated_set_hook

Keith Seitz
On 01/09/2014 09:56 AM, Tom Tromey wrote:
> Ok?

Yes, thanks. "Simplify" is an understatement!

And I *promise* I will get on the GIT repo real soon now (TM).

Keith