public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] Change tui_make_window to be a method
@ 2019-08-20 22:50 Tom Tromey
  0 siblings, 0 replies; only message in thread
From: Tom Tromey @ 2019-08-20 22:50 UTC (permalink / raw)
  To: gdb-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ab0e1f1a4507f91536b583c57a492cb9d3aaf6f2

commit ab0e1f1a4507f91536b583c57a492cb9d3aaf6f2
Author: Tom Tromey <tom@tromey.com>
Date:   Sat Jul 13 16:47:31 2019 -0600

    Change tui_make_window to be a method
    
    I combined several small changes into one patch here.  I believe I
    started by noticing that the "title" is not needed by tui_gen_win_info
    and could be self-managing (i.e. std::string).  Moving this revealed
    that "can_box" is also a property of tui_win_info and not
    tui_gen_win_info; and this in turn caused the changes to
    tui_make_window and box_win.
    
    2019-08-20  Tom Tromey  <tom@tromey.com>
    
    	* tui/tui-wingeneral.h (tui_make_window): Don't declare.
    	* tui/tui-wingeneral.c (box_win): Change type of win_info.
    	(box_win): Update.
    	(tui_gen_win_info::make_window): Rename from tui_make_window.
    	(tui_win_info::make_window): New method.
    	(tui_gen_win_info::make_visible): Update.
    	* tui/tui-source.c (tui_source_window::set_contents): Update.
    	* tui/tui-regs.c (tui_data_window::show_register_group): Update.
    	(tui_data_window::display_registers_from): Update.
    	* tui/tui-layout.c (tui_gen_win_info::resize): Update.
    	* tui/tui-data.h (struct tui_gen_win_info) <make_window>:
    	Declare.
    	<can_box>: Remove.
    	<title>: Remove.
    	(struct tui_win_info) <make_window>: Declare.
    	<can_box>: Now virtual.
    	<title>: New member.
    	* tui/tui-data.c (~tui_gen_win_info): Don't free title.
    	* tui/tui-command.c (tui_cmd_window::resize): Update.

Diff:
---
 gdb/ChangeLog            | 22 ++++++++++++++++++++++
 gdb/tui/tui-command.c    |  2 +-
 gdb/tui/tui-data.c       |  1 -
 gdb/tui/tui-data.h       | 17 ++++++++---------
 gdb/tui/tui-layout.c     |  2 +-
 gdb/tui/tui-regs.c       |  5 ++---
 gdb/tui/tui-source.c     |  3 +--
 gdb/tui/tui-wingeneral.c | 31 ++++++++++++++-----------------
 gdb/tui/tui-wingeneral.h |  1 -
 9 files changed, 49 insertions(+), 35 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 91e0e90..e65b84d 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,27 @@
 2019-08-20  Tom Tromey  <tom@tromey.com>
 
+	* tui/tui-wingeneral.h (tui_make_window): Don't declare.
+	* tui/tui-wingeneral.c (box_win): Change type of win_info.
+	(box_win): Update.
+	(tui_gen_win_info::make_window): Rename from tui_make_window.
+	(tui_win_info::make_window): New method.
+	(tui_gen_win_info::make_visible): Update.
+	* tui/tui-source.c (tui_source_window::set_contents): Update.
+	* tui/tui-regs.c (tui_data_window::show_register_group): Update.
+	(tui_data_window::display_registers_from): Update.
+	* tui/tui-layout.c (tui_gen_win_info::resize): Update.
+	* tui/tui-data.h (struct tui_gen_win_info) <make_window>:
+	Declare.
+	<can_box>: Remove.
+	<title>: Remove.
+	(struct tui_win_info) <make_window>: Declare.
+	<can_box>: Now virtual.
+	<title>: New member.
+	* tui/tui-data.c (~tui_gen_win_info): Don't free title.
+	* tui/tui-command.c (tui_cmd_window::resize): Update.
+
+2019-08-20  Tom Tromey  <tom@tromey.com>
+
 	* tui/tui-regs.h (struct tui_data_window) <display_regs>: Remove.
 	* tui/tui-regs.c (tui_data_window::show_registers): Update.
 	(tui_data_window::check_register_values): Update.
diff --git a/gdb/tui/tui-command.c b/gdb/tui/tui-command.c
index f2040a7..6259580 100644
--- a/gdb/tui/tui-command.c
+++ b/gdb/tui/tui-command.c
@@ -54,7 +54,7 @@ tui_cmd_window::resize (int height_, int width_, int origin_x, int origin_y)
   origin.y = origin_y;
 
   if (handle == nullptr)
-    tui_make_window (this);
+    make_window ();
   else
     {
       /* Another reason we don't call the base class method here is
diff --git a/gdb/tui/tui-data.c b/gdb/tui/tui-data.c
index 9b80aca..c11aa43 100644
--- a/gdb/tui/tui-data.c
+++ b/gdb/tui/tui-data.c
@@ -243,7 +243,6 @@ tui_win_info::tui_win_info (enum tui_win_type type)
 tui_gen_win_info::~tui_gen_win_info ()
 {
   tui_delete_win (handle);
-  xfree (title);
 }
 
 void
diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h
index 0432a53..a5ff5e2 100644
--- a/gdb/tui/tui-data.h
+++ b/gdb/tui/tui-data.h
@@ -52,6 +52,8 @@ protected:
   {
   }
 
+  virtual void make_window ();
+
 public:
 
   virtual ~tui_gen_win_info ();
@@ -73,12 +75,6 @@ public:
   virtual void resize (int height, int width,
 		       int origin_x, int origin_y);
 
-  /* Return true if this can be boxed.  */
-  virtual bool can_box () const
-  {
-    return false;
-  }
-
   /* Return true if this window is visible.  */
   bool is_visible () const
   {
@@ -97,8 +93,6 @@ public:
   struct tui_point origin = {0, 0};
   /* Viewport height.  */
   int viewport_height = 0;
-  /* Window title to display.  */
-  char *title = nullptr;
 };
 
 /* Constant definitions.  */
@@ -173,6 +167,8 @@ protected:
 
   void rerender () override;
 
+  void make_window () override;
+
 public:
 
   ~tui_win_info () override
@@ -213,13 +209,16 @@ public:
     return true;
   }
 
-  bool can_box () const override
+  virtual bool can_box () const
   {
     return true;
   }
 
   void check_and_display_highlight_if_needed ();
 
+  /* Window title to display.  */
+  std::string title;
+
   /* Can this window ever be highlighted?  */
   bool can_highlight = true;
 
diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c
index 08b18e5..01d50e4 100644
--- a/gdb/tui/tui-layout.c
+++ b/gdb/tui/tui-layout.c
@@ -602,7 +602,7 @@ tui_gen_win_info::resize (int height_, int width_,
     }
 
   if (handle == nullptr)
-    tui_make_window (this);
+    make_window ();
 
   rerender ();
 }
diff --git a/gdb/tui/tui-regs.c b/gdb/tui/tui-regs.c
index f468940..71037d4 100644
--- a/gdb/tui/tui-regs.c
+++ b/gdb/tui/tui-regs.c
@@ -185,8 +185,7 @@ tui_data_window::show_register_group (struct reggroup *group,
   int regnum, pos;
 
   /* Make a new title showing which group we display.  */
-  xfree (title);
-  title = xstrprintf ("Register group: %s", reggroup_name (group));
+  title = string_printf ("Register group: %s", reggroup_name (group));
 
   /* See how many registers must be displayed.  */
   nr_regs = 0;
@@ -302,7 +301,7 @@ tui_data_window::display_registers_from (int start_element_no)
 		  data_item_win->width = item_win_width;
 		  data_item_win->origin.x = (item_win_width * j) + 1;
 		  data_item_win->origin.y = cur_y;
-		  tui_make_window (data_item_win);
+		  data_item_win->make_visible (true);
                   scrollok (data_item_win->handle, FALSE);
 		}
               touchwin (data_item_win->handle);
diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c
index 07de328..906006a 100644
--- a/gdb/tui/tui-source.c
+++ b/gdb/tui/tui-source.c
@@ -153,8 +153,7 @@ tui_source_window::set_contents (struct gdbarch *arch,
 	    = tui_locator_win_info_ptr ();
 	  const char *s_filename = symtab_to_filename_for_display (s);
 
-	  xfree (title);
-	  title = xstrdup (s_filename);
+	  title = s_filename;
 
 	  xfree (fullname);
 	  fullname = xstrdup (symtab_to_fullname (s));
diff --git a/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c
index 4e565bd..5fa4cfd 100644
--- a/gdb/tui/tui-wingeneral.c
+++ b/gdb/tui/tui-wingeneral.c
@@ -55,7 +55,7 @@ tui_delete_win (WINDOW *window)
 
 /* Draw a border arround the window.  */
 static void
-box_win (struct tui_gen_win_info *win_info, 
+box_win (struct tui_win_info *win_info, 
 	 int highlight_flag)
 {
   if (win_info && win_info->handle)
@@ -78,8 +78,8 @@ box_win (struct tui_gen_win_info *win_info,
 #else
       box (win, tui_border_vline, tui_border_hline);
 #endif
-      if (win_info->title)
-        mvwaddstr (win, 0, 3, win_info->title);
+      if (!win_info->title.empty ())
+        mvwaddstr (win, 0, 3, win_info->title.c_str ());
       wattroff (win, attrs);
     }
 }
@@ -126,23 +126,20 @@ tui_win_info::check_and_display_highlight_if_needed ()
 
 
 void
-tui_make_window (struct tui_gen_win_info *win_info)
+tui_gen_win_info::make_window ()
 {
-  WINDOW *handle;
-
-  handle = newwin (win_info->height,
-		   win_info->width,
-		   win_info->origin.y,
-		   win_info->origin.x);
-  win_info->handle = handle;
+  handle = newwin (height, width, origin.y, origin.x);
   if (handle != NULL)
-    {
-      if (win_info->can_box ())
-	box_win (win_info, NO_HILITE);
-      scrollok (handle, TRUE);
-    }
+    scrollok (handle, TRUE);
 }
 
+void
+tui_win_info::make_window ()
+{
+  tui_gen_win_info::make_window ();
+  if (handle != NULL && can_box ())
+    box_win (this, NO_HILITE);
+}
 
 /* We can't really make windows visible, or invisible.  So we have to
    delete the entire window when making it visible, and create it
@@ -154,7 +151,7 @@ tui_gen_win_info::make_visible (bool visible)
     return;
 
   if (visible)
-    tui_make_window (this);
+    make_window ();
   else
     {
       tui_delete_win (handle);
diff --git a/gdb/tui/tui-wingeneral.h b/gdb/tui/tui-wingeneral.h
index 6a9de4c..53d7232 100644
--- a/gdb/tui/tui-wingeneral.h
+++ b/gdb/tui/tui-wingeneral.h
@@ -31,7 +31,6 @@ struct tui_gen_win_info;
 extern void tui_make_all_invisible (void);
 
 extern void tui_unhighlight_win (struct tui_win_info *);
-extern void tui_make_window (struct tui_gen_win_info *);
 extern void tui_highlight_win (struct tui_win_info *);
 extern void tui_refresh_all ();
 extern void tui_delete_win (WINDOW *window);


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2019-08-20 22:50 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-20 22:50 [binutils-gdb] Change tui_make_window to be a method Tom Tromey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).