aboutsummaryrefslogtreecommitdiff
path: root/gdb/tui/tui-winsource.h
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2019-07-02 17:07:02 -0600
committerTom Tromey <tom@tromey.com>2019-07-17 12:19:25 -0600
commit5104fe361d818a46b262b5d504f3d293c9a2b44a (patch)
tree2e6677c74b037797ea5da459cc3f1a0d0099305b /gdb/tui/tui-winsource.h
parentdaa15dde7202d948da694bdfe0df9e5294c7ee9a (diff)
downloadgdb-5104fe361d818a46b262b5d504f3d293c9a2b44a.zip
gdb-5104fe361d818a46b262b5d504f3d293c9a2b44a.tar.gz
gdb-5104fe361d818a46b262b5d504f3d293c9a2b44a.tar.bz2
Move source window common to code to tui-winsource.[ch]
Like the previous rearranging patches, this moves the source and disassembly window base class code to tui-winsource.[ch]. The execution info window is also moved, because it is associated with this base class. gdb/ChangeLog 2019-07-17 Tom Tromey <tom@tromey.com> * tui/tui-winsource.h (struct tui_exec_info_window) (struct tui_source_window_base): Move from tui-data.h. * tui/tui-winsource.c: Move many method definitions from elsewhere. Remove "structuring" comments. * tui/tui-wingeneral.c (tui_source_window_base::make_visible) (tui_source_window_base::refresh_window): Move to tui-winsource.c. * tui/tui-win.c (tui_source_window_base::refresh_all) (tui_source_window_base::update_tab_width) (tui_source_window_base::set_new_height) (tui_source_window_base::do_make_visible_with_new_height): Move to tui-winsource.c. * tui/tui-source.h: Update. * tui/tui-source.c (tui_source_window_base::reset): Move to tui-winsource.c. * tui/tui-disasm.h: Update. * tui/tui-data.h (struct tui_exec_info_window): Move to tui-winsource.h. (struct tui_source_window_base): Likewise. * tui/tui-data.c (tui_source_window_base::clear_detail) (tui_source_window_base, ~tui_source_window_base): Move to tui-winsource.c.
Diffstat (limited to 'gdb/tui/tui-winsource.h')
-rw-r--r--gdb/tui/tui-winsource.h82
1 files changed, 81 insertions, 1 deletions
diff --git a/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h
index a4907e6..ec44d1d 100644
--- a/gdb/tui/tui-winsource.h
+++ b/gdb/tui/tui-winsource.h
@@ -24,7 +24,87 @@
#include "tui/tui-data.h"
-struct tui_win_info;
+/* Execution info window class. */
+
+struct tui_exec_info_window : public tui_gen_win_info
+{
+ tui_exec_info_window ()
+ : tui_gen_win_info (EXEC_INFO_WIN)
+ {
+ }
+
+ ~tui_exec_info_window () override
+ {
+ xfree (m_content);
+ }
+
+ /* Get or allocate contents. */
+ tui_exec_info_content *maybe_allocate_content (int n_elements);
+
+ /* Return the contents. */
+ const tui_exec_info_content *get_content () const
+ {
+ return m_content;
+ }
+
+private:
+
+ tui_exec_info_content *m_content = nullptr;
+};
+
+/* The base class for all source-like windows, namely the source and
+ disassembly windows. */
+
+struct tui_source_window_base : public tui_win_info
+{
+protected:
+ explicit tui_source_window_base (enum tui_win_type type);
+ ~tui_source_window_base () override;
+ DISABLE_COPY_AND_ASSIGN (tui_source_window_base);
+
+ void do_scroll_horizontal (int num_to_scroll) override;
+ void do_make_visible_with_new_height () override;
+
+public:
+
+ void clear_detail () override;
+
+ void make_visible (bool visible) override;
+ void refresh_window () override;
+ void refresh_all () override;
+
+ /* Refill the source window's source cache and update it. If this
+ is a disassembly window, then just update it. */
+ void refill ();
+
+ /* Set the location of the execution point. */
+ void set_is_exec_point_at (struct tui_line_or_address l);
+
+ void set_new_height (int height) override;
+
+ void update_tab_width () override;
+
+ virtual bool location_matches_p (struct bp_location *loc, int line_no) = 0;
+
+ void reset (int height, int width,
+ int origin_x, int origin_y) override;
+
+ /* Does the locator belong to this window? */
+ bool m_has_locator = false;
+ /* Execution information window. */
+ struct tui_exec_info_window *execution_info;
+ /* Used for horizontal scroll. */
+ int horizontal_offset = 0;
+ struct tui_line_or_address start_line_or_addr;
+
+ /* It is the resolved form as returned by symtab_to_fullname. */
+ char *fullname = nullptr;
+
+ /* Architecture associated with code at this location. */
+ struct gdbarch *gdbarch = nullptr;
+
+ std::vector<tui_source_element> content;
+};
/* Update the execution windows to show the active breakpoints. This
is called whenever a breakpoint is inserted, removed or has its