Patchwork [16/24] TUI windows do not need to store their type

login
register
mail settings
Submitter Tom Tromey
Date Jan. 4, 2020, 6:34 p.m.
Message ID <20200104183410.17114-17-tom@tromey.com>
Download mbox | patch
Permalink /patch/37189/
State New
Headers show

Comments

Tom Tromey - Jan. 4, 2020, 6:34 p.m.
TUI windows no longer need to store their type -- there's only a
single spot that uses this information, and it can be changed to use
dynamic_cast.  (It could be cleaned up even more, by using a virtual
method, but I haven't done so.)  This patch removes the "type" field
from tui_gen_win_info, and this in turn allows removing a couple of
enumerator constants.

2020-01-04  Tom Tromey  <tom@tromey.com>

	* tui/tui.h (enum tui_win_type) <LOCATOR_WIN, DATA_ITEM_WIN>:
	Remove constants.
	* tui/tui-winsource.h (struct tui_source_window_base)
	<tui_source_window_base>: Remove parameter.
	* tui/tui-winsource.c
	(tui_source_window_base::tui_source_window_base): Remove
	parameter.
	(tui_source_window_base::refill): Update.
	* tui/tui-stack.h (struct tui_locator_window)
	<tui_locator_window>: Update.
	* tui/tui-source.h (struct tui_source_window) <tui_source_window>:
	Default the constructor.
	* tui/tui-regs.h (struct tui_data_item_window)
	<tui_data_item_window>: Default the constructor.
	(struct tui_data_window) <tui_data_window>: Likewise.
	* tui/tui-disasm.h (struct tui_disasm_window) <tui_disasm_window>:
	Default the constructor.
	* tui/tui-data.h (struct tui_gen_win_info) <tui_gen_win_info>:
	Default the constructor.
	<type>: Remove.
	(struct tui_win_info) <tui_win_info>: Default the constructor.
	* tui/tui-data.c (tui_win_info::tui_win_info): Remove.
	* tui/tui-command.h (struct tui_cmd_window) <tui_cmd_window>:
	Default the constructor.

Change-Id: I594cd07d2e0bba71ad594a6fb263904ce2febcd6
---
 gdb/ChangeLog           | 27 +++++++++++++++++++++++++++
 gdb/tui/tui-command.h   |  5 +----
 gdb/tui/tui-data.c      |  5 -----
 gdb/tui/tui-data.h      | 11 +++--------
 gdb/tui/tui-disasm.h    |  5 +----
 gdb/tui/tui-regs.h      | 10 ++--------
 gdb/tui/tui-source.h    |  5 +----
 gdb/tui/tui-stack.h     |  1 -
 gdb/tui/tui-winsource.c |  8 +++-----
 gdb/tui/tui-winsource.h |  2 +-
 gdb/tui/tui.h           |  3 ---
 11 files changed, 39 insertions(+), 43 deletions(-)

Patch

diff --git a/gdb/tui/tui-command.h b/gdb/tui/tui-command.h
index fca1f545730..211d0c8d8a2 100644
--- a/gdb/tui/tui-command.h
+++ b/gdb/tui/tui-command.h
@@ -27,10 +27,7 @@ 
 /* The TUI command window.  */
 struct tui_cmd_window : public tui_win_info
 {
-  tui_cmd_window ()
-    : tui_win_info (CMD_WIN)
-  {
-  }
+  tui_cmd_window () = default;
 
   DISABLE_COPY_AND_ASSIGN (tui_cmd_window);
 
diff --git a/gdb/tui/tui-data.c b/gdb/tui/tui-data.c
index ead8b1043ca..db637d8fbe6 100644
--- a/gdb/tui/tui-data.c
+++ b/gdb/tui/tui-data.c
@@ -129,11 +129,6 @@  tui_prev_win (struct tui_win_info *cur_win)
 }
 
 
-tui_win_info::tui_win_info (enum tui_win_type type)
-  : tui_gen_win_info (type)
-{
-}
-
 void
 tui_win_info::rerender ()
 {
diff --git a/gdb/tui/tui-data.h b/gdb/tui/tui-data.h
index 96265bb4215..56600926636 100644
--- a/gdb/tui/tui-data.h
+++ b/gdb/tui/tui-data.h
@@ -22,7 +22,7 @@ 
 #ifndef TUI_TUI_DATA_H
 #define TUI_TUI_DATA_H
 
-#include "tui/tui.h"	/* For enum tui_win_type.  */
+#include "tui/tui.h"
 #include "gdb_curses.h"	/* For WINDOW.  */
 #include "observable.h"
 
@@ -44,10 +44,7 @@  struct tui_gen_win_info
 {
 protected:
 
-  explicit tui_gen_win_info (enum tui_win_type t)
-    : type (t)
-  {
-  }
+  tui_gen_win_info () = default;
 
   /* This is called after the window is resized, and should update the
      window's contents.  */
@@ -110,8 +107,6 @@  public:
 
   /* Window handle.  */
   std::unique_ptr<WINDOW, curses_deleter> handle;
-  /* Type of window.  */
-  enum tui_win_type type;
   /* Window width.  */
   int width = 0;
   /* Window height.  */
@@ -155,7 +150,7 @@  struct tui_win_info : public tui_gen_win_info
 {
 protected:
 
-  explicit tui_win_info (enum tui_win_type type);
+  tui_win_info () = default;
   DISABLE_COPY_AND_ASSIGN (tui_win_info);
 
   /* Scroll the contents vertically.  This is only called via
diff --git a/gdb/tui/tui-disasm.h b/gdb/tui/tui-disasm.h
index 416be95fd8b..dd020310746 100644
--- a/gdb/tui/tui-disasm.h
+++ b/gdb/tui/tui-disasm.h
@@ -30,10 +30,7 @@ 
 
 struct tui_disasm_window : public tui_source_window_base
 {
-  tui_disasm_window ()
-    : tui_source_window_base (DISASSEM_WIN)
-  {
-  }
+  tui_disasm_window () = default;
 
   DISABLE_COPY_AND_ASSIGN (tui_disasm_window);
 
diff --git a/gdb/tui/tui-regs.h b/gdb/tui/tui-regs.h
index 97e02b1a47d..8c49888373f 100644
--- a/gdb/tui/tui-regs.h
+++ b/gdb/tui/tui-regs.h
@@ -28,10 +28,7 @@ 
 
 struct tui_data_item_window : public tui_gen_win_info
 {
-  tui_data_item_window ()
-    : tui_gen_win_info (DATA_ITEM_WIN)
-  {
-  }
+  tui_data_item_window () = default;
 
   DISABLE_COPY_AND_ASSIGN (tui_data_item_window);
 
@@ -61,10 +58,7 @@  struct tui_data_item_window : public tui_gen_win_info
 /* The TUI registers window.  */
 struct tui_data_window : public tui_win_info
 {
-  tui_data_window ()
-    : tui_win_info (DATA_WIN)
-  {
-  }
+  tui_data_window () = default;
 
   DISABLE_COPY_AND_ASSIGN (tui_data_window);
 
diff --git a/gdb/tui/tui-source.h b/gdb/tui/tui-source.h
index 06ca8d52fe4..58dc5e88cf7 100644
--- a/gdb/tui/tui-source.h
+++ b/gdb/tui/tui-source.h
@@ -31,10 +31,7 @@  struct symtab;
 
 struct tui_source_window : public tui_source_window_base
 {
-  tui_source_window ()
-    : tui_source_window_base (SRC_WIN)
-  {
-  }
+  tui_source_window () = default;
 
   DISABLE_COPY_AND_ASSIGN (tui_source_window);
 
diff --git a/gdb/tui/tui-stack.h b/gdb/tui/tui-stack.h
index bea3e79279b..fde7c6dd2c9 100644
--- a/gdb/tui/tui-stack.h
+++ b/gdb/tui/tui-stack.h
@@ -31,7 +31,6 @@  struct frame_info;
 struct tui_locator_window : public tui_gen_win_info
 {
   tui_locator_window ()
-    : tui_gen_win_info (LOCATOR_WIN)
   {
     full_name[0] = 0;
     proc_name[0] = 0;
diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c
index 69070115ec6..bd7a34ebbd5 100644
--- a/gdb/tui/tui-winsource.c
+++ b/gdb/tui/tui-winsource.c
@@ -285,10 +285,8 @@  tui_source_window_base::show_source_content ()
   refresh_window ();
 }
 
-tui_source_window_base::tui_source_window_base (enum tui_win_type type)
-  : tui_win_info (type)
+tui_source_window_base::tui_source_window_base ()
 {
-  gdb_assert (type == SRC_WIN || type == DISASSEM_WIN);
   start_line_or_addr.loa = LOA_ADDRESS;
   start_line_or_addr.u.addr = 0;
 
@@ -333,7 +331,7 @@  tui_source_window_base::rerender ()
       struct gdbarch *gdbarch = get_frame_arch (frame);
 
       struct symtab *s = find_pc_line_symtab (get_frame_pc (frame));
-      if (type != SRC_WIN)
+      if (this != TUI_SRC_WIN)
 	find_line_pc (s, cursal.line, &cursal.pc);
       update_source_window (gdbarch, cursal);
     }
@@ -348,7 +346,7 @@  tui_source_window_base::refill ()
 {
   symtab_and_line sal {};
 
-  if (type == SRC_WIN)
+  if (this == TUI_SRC_WIN)
     {
       sal = get_current_source_symtab_and_line ();
       if (sal.symtab == NULL)
diff --git a/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h
index cae535fab07..4ac20d80502 100644
--- a/gdb/tui/tui-winsource.h
+++ b/gdb/tui/tui-winsource.h
@@ -75,7 +75,7 @@  struct tui_source_element
 struct tui_source_window_base : public tui_win_info
 {
 protected:
-  explicit tui_source_window_base (enum tui_win_type type);
+  tui_source_window_base ();
   ~tui_source_window_base ();
 
   DISABLE_COPY_AND_ASSIGN (tui_source_window_base);
diff --git a/gdb/tui/tui.h b/gdb/tui/tui.h
index 6605901f21a..816b1e92851 100644
--- a/gdb/tui/tui.h
+++ b/gdb/tui/tui.h
@@ -40,9 +40,6 @@  enum tui_win_type
   CMD_WIN,
   /* This must ALWAYS be AFTER the major windows last.  */
   MAX_MAJOR_WINDOWS,
-  /* Auxiliary windows.  */
-  LOCATOR_WIN,
-  DATA_ITEM_WIN
 };
 
 extern CORE_ADDR tui_get_low_disassembly_address (struct gdbarch *,