TUI windows do not need to store their type
authorTom Tromey <tom@tromey.com>
Sat, 22 Feb 2020 18:48:26 +0000 (11:48 -0700)
committerTom Tromey <tom@tromey.com>
Sat, 22 Feb 2020 18:48:37 +0000 (11:48 -0700)
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.

gdb/ChangeLog
2020-02-22  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
gdb/tui/tui-command.h
gdb/tui/tui-data.c
gdb/tui/tui-data.h
gdb/tui/tui-disasm.h
gdb/tui/tui-regs.h
gdb/tui/tui-source.h
gdb/tui/tui-stack.h
gdb/tui/tui-winsource.c
gdb/tui/tui-winsource.h
gdb/tui/tui.h

index 31bfb9f680006a0829ceae25bf494013a1801425..dc54fc40e63a571f158fff30a8a7a238e7c30059 100644 (file)
@@ -1,3 +1,30 @@
+2020-02-22  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.
+
 2020-02-22  Tom Tromey  <tom@tromey.com>
 
        * tui/tui-wingeneral.h (tui_make_all_invisible): Don't declare.
index fca1f545730e0d8a7bd6d98ef9c8f9f880b7e312..211d0c8d8a24d17af8a07cf26a3f4d9793cc3667 100644 (file)
 /* 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);
 
index ead8b1043ca3c897f98413666bfe2cce3d57e643..db637d8fbe65cbbff4de6c3d8d9808f1d332897d 100644 (file)
@@ -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 ()
 {
index cd62b5758e60d27cbffe9e32e6d8f178c4780d4f..51208b1100e8781dd2bce20c36ef4029202d2b44 100644 (file)
@@ -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.  */
@@ -117,8 +114,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.  */
@@ -162,7 +157,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
index 416be95fd8bb8de33bcbe38c8ef338aac36ae102..dd0203107469daab81881eb6b20444e4fed33ece 100644 (file)
 
 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);
 
index eee3689aeacafbe42d997be0707c85cc1636356e..df8c27305cd19c2183e2c8a9bc21a8518813e2d0 100644 (file)
 
 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);
 
index 06ca8d52fe4f2759b891ca1c2f75f72832120089..58dc5e88cf77a7c1246988bdb89ac0f3654be86d 100644 (file)
@@ -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);
 
index bea3e79279b57b72a31c00551a3f47ceac9a07ad..fde7c6dd2c938a41f6d6e5f770a6bc6f3e0d6152 100644 (file)
@@ -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;
index 3ba2f2b041e93b5eb6c3e9d7d1f6da3f497ad026..9ec05ae7c3df52d5d18111c79ee98c16564976b8 100644 (file)
@@ -286,10 +286,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;
 
@@ -334,7 +332,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);
     }
@@ -349,7 +347,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)
index cae535fab07d438f0938aa089f076b6a4aeefeee..4ac20d805025fcfad89c24fa23c64608e999549c 100644 (file)
@@ -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);
index 6605901f21a21386989164a6b54cca1086584736..816b1e92851b3869949fc48b2805b30bc897863a 100644 (file)
@@ -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 *,