Remove tui_gen_win_info
authorTom Tromey <tom@tromey.com>
Thu, 2 Jul 2020 03:21:12 +0000 (21:21 -0600)
committerTom Tromey <tom@tromey.com>
Thu, 2 Jul 2020 03:21:17 +0000 (21:21 -0600)
This merges the tui_gen_win_info base class with tui_win_info;
renaming the resulting class to tui_win_info.

gdb/ChangeLog
2020-07-01  Tom Tromey  <tom@tromey.com>

* tui/tui-wingeneral.c (tui_win_info::refresh_window): Move from
tui_gen_win_info.
(tui_win_info::make_window): Merge with
tui_gen_win_info::make_window.
(tui_win_info::make_visible): Move from tui_gen_win_info.
* tui/tui-win.c (tui_win_info::max_width): Move from
tui_gen_win_info.
* tui/tui-layout.h (class tui_layout_window) <m_window>: Change
type.
<window_factory>: Likewise.
* tui/tui-layout.c (tui_win_info::resize): Move from
tui_gen_win_info.
(make_standard_window): Change return type.
(get_locator_window, tui_get_window_by_name): Likewise.
(tui_layout_window::apply): Remove a cast.
* tui/tui-data.h (MIN_WIN_HEIGHT): Move earlier.
(struct tui_win_info): Merge with tui_gen_win_info.
(struct tui_gen_win_info): Remove.

gdb/ChangeLog
gdb/tui/tui-data.h
gdb/tui/tui-layout.c
gdb/tui/tui-layout.h
gdb/tui/tui-win.c
gdb/tui/tui-wingeneral.c

index 52eae109ee690fe43d92be94d65bc2ad6484845d..ec87edf13fc5db5a6d5d1f20c216ea6072378f65 100644 (file)
@@ -1,3 +1,24 @@
+2020-07-01  Tom Tromey  <tom@tromey.com>
+
+       * tui/tui-wingeneral.c (tui_win_info::refresh_window): Move from
+       tui_gen_win_info.
+       (tui_win_info::make_window): Merge with
+       tui_gen_win_info::make_window.
+       (tui_win_info::make_visible): Move from tui_gen_win_info.
+       * tui/tui-win.c (tui_win_info::max_width): Move from
+       tui_gen_win_info.
+       * tui/tui-layout.h (class tui_layout_window) <m_window>: Change
+       type.
+       <window_factory>: Likewise.
+       * tui/tui-layout.c (tui_win_info::resize): Move from
+       tui_gen_win_info.
+       (make_standard_window): Change return type.
+       (get_locator_window, tui_get_window_by_name): Likewise.
+       (tui_layout_window::apply): Remove a cast.
+       * tui/tui-data.h (MIN_WIN_HEIGHT): Move earlier.
+       (struct tui_win_info): Merge with tui_gen_win_info.
+       (struct tui_gen_win_info): Remove.
+
 2020-07-01  Tom Tromey  <tom@tromey.com>
 
        * tui/tui-stack.h (struct tui_locator_window): Derive from
index 10dd0aedcff861c7539798164ed351489a619d37..3c14b2654eef34c4d83ad296a5cf7ce3d3e9bbe7 100644 (file)
@@ -35,27 +35,25 @@ struct curses_deleter
   }
 };
 
+#define MIN_WIN_HEIGHT          3
+
 /* Generic window information.  */
-struct tui_gen_win_info
+struct tui_win_info
 {
 protected:
 
-  tui_gen_win_info () = default;
+  tui_win_info () = default;
+  DISABLE_COPY_AND_ASSIGN (tui_win_info);
 
   /* This is called after the window is resized, and should update the
      window's contents.  */
-  virtual void rerender ()
-  {
-  }
+  virtual void rerender ();
 
   virtual void make_window ();
 
 public:
-  tui_gen_win_info (tui_gen_win_info &&) = default;
-
-  virtual ~tui_gen_win_info ()
-  {
-  }
+  tui_win_info (tui_win_info &&) = default;
+  virtual ~tui_win_info () = default;
 
   /* Call to refresh this window.  */
   virtual void refresh_window ();
@@ -70,10 +68,13 @@ public:
   }
 
   /* Compute the maximum height of this window.  */
-  virtual int max_height () const = 0;
+  virtual int max_height () const;
 
   /* Compute the minimum height of this window.  */
-  virtual int min_height () const = 0;
+  virtual int min_height () const
+  {
+    return MIN_WIN_HEIGHT;
+  }
 
   /* Compute the maximum width of this window.  */
   int max_width () const;
@@ -87,7 +88,7 @@ public:
   /* Return true if this window can be boxed.  */
   virtual bool can_box () const
   {
-    return false;
+    return true;
   }
 
   /* Resize this window.  The parameters are used to set the window's
@@ -108,58 +109,6 @@ public:
       wnoutrefresh (handle.get ());
   }
 
-  /* Window handle.  */
-  std::unique_ptr<WINDOW, curses_deleter> handle;
-  /* Window width.  */
-  int width = 0;
-  /* Window height.  */
-  int height = 0;
-  /* Origin of window.  */
-  int x = 0;
-  int y = 0;
-};
-
-/* Constant definitions.  */
-#define SRC_NAME                "src"
-#define CMD_NAME                "cmd"
-#define DATA_NAME               "regs"
-#define DISASSEM_NAME           "asm"
-#define STATUS_NAME            "status"
-#define MIN_WIN_HEIGHT          3
-
-/* This defines information about each logical window.  */
-struct tui_win_info : public tui_gen_win_info
-{
-protected:
-
-  tui_win_info () = default;
-  DISABLE_COPY_AND_ASSIGN (tui_win_info);
-
-  /* Scroll the contents vertically.  This is only called via
-     forward_scroll and backward_scroll.  */
-  virtual void do_scroll_vertical (int num_to_scroll) = 0;
-
-  /* Scroll the contents horizontally.  This is only called via
-     left_scroll and right_scroll.  */
-  virtual void do_scroll_horizontal (int num_to_scroll) = 0;
-
-  void rerender () override;
-
-  void make_window () override;
-
-public:
-
-  ~tui_win_info () override
-  {
-  }
-
-  int max_height () const override;
-
-  int min_height () const override
-  {
-    return MIN_WIN_HEIGHT;
-  }
-
   /* Called after the tab width has been changed.  */
   virtual void update_tab_width ()
   {
@@ -185,20 +134,41 @@ public:
     return true;
   }
 
-  bool can_box () const override
-  {
-    return true;
-  }
-
   void check_and_display_highlight_if_needed ();
 
+  /* Window handle.  */
+  std::unique_ptr<WINDOW, curses_deleter> handle;
+  /* Window width.  */
+  int width = 0;
+  /* Window height.  */
+  int height = 0;
+  /* Origin of window.  */
+  int x = 0;
+  int y = 0;
+
   /* Window title to display.  */
   std::string title;
 
   /* Is this window highlighted?  */
   bool is_highlighted = false;
+
+protected:
+
+  /* Scroll the contents vertically.  This is only called via
+     forward_scroll and backward_scroll.  */
+  virtual void do_scroll_vertical (int num_to_scroll) = 0;
+
+  /* Scroll the contents horizontally.  This is only called via
+     left_scroll and right_scroll.  */
+  virtual void do_scroll_horizontal (int num_to_scroll) = 0;
 };
 
+/* Constant definitions.  */
+#define SRC_NAME                "src"
+#define CMD_NAME                "cmd"
+#define DATA_NAME               "regs"
+#define DISASSEM_NAME           "asm"
+#define STATUS_NAME            "status"
 
 /* Global Data.  */
 extern struct tui_win_info *tui_win_list[MAX_MAJOR_WINDOWS];
index 8164b346370efa63815f63540e87ec2a2043c7dd..a568fa6c1165e3e03e16c14b969c05f1383a6388 100644 (file)
@@ -285,8 +285,8 @@ extract_display_start_addr (struct gdbarch **gdbarch_p, CORE_ADDR *addr_p)
 }
 
 void
-tui_gen_win_info::resize (int height_, int width_,
-                         int origin_x_, int origin_y_)
+tui_win_info::resize (int height_, int width_,
+                     int origin_x_, int origin_y_)
 {
   if (width == width_ && height == height_
       && x == origin_x_ && y == origin_y_
@@ -321,7 +321,7 @@ tui_gen_win_info::resize (int height_, int width_,
    windows.  */
 
 template<enum tui_win_type V, class T>
-static tui_gen_win_info *
+static tui_win_info *
 make_standard_window (const char *)
 {
   if (tui_win_list[V] == nullptr)
@@ -332,7 +332,7 @@ make_standard_window (const char *)
 /* Helper function to wrap tui_locator_win_info_ptr for
    tui_get_window_by_name.  */
 
-static tui_gen_win_info *
+static tui_win_info *
 get_locator_window (const char *)
 {
   return tui_locator_win_info_ptr ();
@@ -349,7 +349,7 @@ static std::unordered_map<std::string, window_factory> *known_window_types;
 
 /* Helper function that returns a TUI window, given its name.  */
 
-static tui_gen_win_info *
+static tui_win_info *
 tui_get_window_by_name (const std::string &name)
 {
   for (tui_win_info *window : saved_tui_windows)
@@ -360,7 +360,7 @@ tui_get_window_by_name (const std::string &name)
   if (iter == known_window_types->end ())
     error (_("Unknown window type \"%s\""), name.c_str ());
 
-  tui_gen_win_info *result = iter->second (name.c_str ());
+  tui_win_info *result = iter->second (name.c_str ());
   if (result == nullptr)
     error (_("Could not create window \"%s\""), name.c_str ());
   return result;
@@ -422,8 +422,7 @@ tui_layout_window::apply (int x_, int y_, int width_, int height_)
   height = height_;
   gdb_assert (m_window != nullptr);
   m_window->resize (height, width, x, y);
-  if (dynamic_cast<tui_win_info *> (m_window) != nullptr)
-    tui_windows.push_back ((tui_win_info *) m_window);
+  tui_windows.push_back (m_window);
 }
 
 /* See tui-layout.h.  */
index 90618377e177b731125abe26ec541f7e16af0b96..ee4caf89cb45727f8bc996739d8e6f667aca2997 100644 (file)
@@ -152,7 +152,7 @@ private:
 
   /* When a layout is applied, this is updated to point to the window
      object.  */
-  tui_gen_win_info *m_window = nullptr;
+  tui_win_info *m_window = nullptr;
 };
 
 /* A TUI layout that holds other layouts.  */
@@ -251,7 +251,7 @@ extern void tui_adjust_window_height (struct tui_win_info *win,
 
 /* The type of a function that is used to create a TUI window.  */
 
-typedef std::function<tui_gen_win_info * (const char *name)> window_factory;
+typedef std::function<tui_win_info * (const char *name)> window_factory;
 
 /* Register a new TUI window type.  NAME is the name of the window
    type.  FACTORY is a function that can be called to instantiate the
index 5f56eca3b2f773b732556e0ddbe57510d419c787..336571f158e30d1c7184dbafdd22d30c6acf10bf 100644 (file)
@@ -921,7 +921,7 @@ tui_win_info::max_height () const
 /* See tui-data.h.  */
 
 int
-tui_gen_win_info::max_width () const
+tui_win_info::max_width () const
 {
   return tui_term_width () - 2;
 }
index 35468d43abcd40612fe5a0f7de92246f077b36ac..504f9159abb3135ccd20b2bb312d05ca24fcf85d 100644 (file)
@@ -71,7 +71,7 @@ tui_wrefresh (WINDOW *win)
 /* See tui-data.h.  */
 
 void
-tui_gen_win_info::refresh_window ()
+tui_win_info::refresh_window ()
 {
   if (handle != NULL)
     tui_wrefresh (handle.get ());
@@ -166,9 +166,8 @@ tui_win_info::check_and_display_highlight_if_needed ()
     }
 }
 
-
 void
-tui_gen_win_info::make_window ()
+tui_win_info::make_window ()
 {
   handle.reset (newwin (height, width, y, x));
   if (handle != NULL)
@@ -176,22 +175,16 @@ tui_gen_win_info::make_window ()
       if (suppress_output)
        wnoutrefresh (handle.get ());
       scrollok (handle.get (), TRUE);
+      if (can_box ())
+       box_win (this, false);
     }
 }
 
-void
-tui_win_info::make_window ()
-{
-  tui_gen_win_info::make_window ();
-  if (handle != NULL && can_box ())
-    box_win (this, false);
-}
-
 /* We can't really make windows visible, or invisible.  So we have to
    delete the entire window when making it visible, and create it
    again when making it visible.  */
 void
-tui_gen_win_info::make_visible (bool visible)
+tui_win_info::make_visible (bool visible)
 {
   if (is_visible () == visible)
     return;