aboutsummaryrefslogtreecommitdiff
path: root/gdb/tui/tui-winsource.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2019-06-16 16:03:54 -0600
committerTom Tromey <tom@tromey.com>2019-06-25 07:48:37 -0600
commitcb2ce89305264543a4014d98bacb26800d92d394 (patch)
treee86e884ade455bdd50ce3039924029caf588ad40 /gdb/tui/tui-winsource.c
parentab313b35e505ccab9c23acbe82087b6c22a2088d (diff)
downloadgdb-cb2ce89305264543a4014d98bacb26800d92d394.zip
gdb-cb2ce89305264543a4014d98bacb26800d92d394.tar.gz
gdb-cb2ce89305264543a4014d98bacb26800d92d394.tar.bz2
Derive tui_win_info from tui_gen_win_info
This changes tui_win_info to derive from tui_gen_win_info, rather than having a tui_gen_win_info as a member. This removes a layer of member access from the entire TUI, which is why this patch is so large. This change will enable further removal of switches based on window type. gdb/ChangeLog 2019-06-25 Tom Tromey <tom@tromey.com> * tui/tui.c (tui_rl_other_window, tui_enable) (tui_is_window_visible, tui_get_command_dimension): Update. * tui/tui-winsource.c (tui_update_source_window_as_is) (tui_clear_source_content, tui_erase_source_content) (tui_show_source_line, tui_source_window_base::refill) (tui_source_window_base::do_scroll_horizontal) (tui_source_window_base::set_is_exec_point_at) (tui_update_breakpoint_info, tui_set_exec_info_content) (tui_alloc_source_buffer, tui_line_is_displayed) (tui_addr_is_displayed): Update. * tui/tui-wingeneral.c (tui_unhighlight_win, tui_highlight_win) (tui_check_and_display_highlight_if_needed) (tui_win_info::make_visible, tui_win_info::refresh) (tui_refresh_all): Update. * tui/tui-windata.c (tui_first_data_item_displayed) (tui_delete_data_content_windows, tui_erase_data_content) (tui_display_all_data, tui_data_window::refresh_all) (tui_check_data_values): Update. * tui/tui-win.c (window_name_completer, tui_update_gdb_sizes) (tui_set_win_focus_to, tui_win_info::forward_scroll) (tui_win_info::backward_scroll, tui_refresh_all_win) (tui_resize_all, tui_set_focus, tui_all_windows_info) (update_tab_width, tui_set_win_height, tui_adjust_win_heights) (tui_source_window_base::set_new_height) (tui_data_window::set_new_height) (make_invisible_and_set_new_height) (make_visible_with_new_height, new_height_ok) (parse_scrolling_args): Update. * tui/tui-stack.c (tui_show_frame_info): Update. * tui/tui-source.c (tui_set_source_content) (tui_set_source_content_nil, tui_source_is_displayed) (tui_source_window::do_scroll_vertical): Update. * tui/tui-regs.c (tui_show_registers, tui_show_register_group) (tui_display_registers_from, tui_display_reg_element_at_line) (tui_check_register_values, tui_reg_command): Update. * tui/tui-layout.c (tui_default_win_height) (show_source_disasm_command, show_data, init_and_make_win) (show_source_or_disasm_and_command): Update. * tui/tui-io.c (update_cmdwin_start_line, tui_putc, tui_puts) (tui_redisplay_readline, tui_mld_flush) (tui_mld_erase_entire_line, tui_mld_getc, tui_cont_sig) (tui_getc): Update. * tui/tui-disasm.c (tui_set_disassem_content) (tui_disasm_window::do_scroll_vertical): Update. * tui/tui-data.h (struct tui_gen_win_info) <~tui_gen_win_info>: Now virtual. (struct tui_win_info): Derive from tui_gen_win_info. <~tui_win_info>: Mark as override. <generic>: Remove member. * tui/tui-data.c (tui_cmd_window::clear_detail, tui_next_win) (tui_prev_win, tui_partial_win_by_name, tui_win_info) (~tui_data_window, ~tui_win_info) (tui_free_all_source_wins_content): Update. * tui/tui-command.c (tui_refresh_cmd_win): Update.
Diffstat (limited to 'gdb/tui/tui-winsource.c')
-rw-r--r--gdb/tui/tui-winsource.c95
1 files changed, 47 insertions, 48 deletions
diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c
index 5946db7..f63526b 100644
--- a/gdb/tui/tui-winsource.c
+++ b/gdb/tui/tui-winsource.c
@@ -94,7 +94,7 @@ tui_update_source_window_as_is (struct tui_win_info *win_info,
{
enum tui_status ret;
- if (win_info->generic.type == SRC_WIN)
+ if (win_info->type == SRC_WIN)
ret = tui_set_source_content (s, line_or_addr.u.line_no, noerror);
else
ret = tui_set_disassem_content (gdbarch, line_or_addr.u.addr);
@@ -109,12 +109,12 @@ tui_update_source_window_as_is (struct tui_win_info *win_info,
tui_update_breakpoint_info (win_info, 0);
tui_show_source_content (win_info);
tui_update_exec_info (win_info);
- if (win_info->generic.type == SRC_WIN)
+ if (win_info->type == SRC_WIN)
{
symtab_and_line sal;
sal.line = line_or_addr.u.line_no +
- (win_info->generic.content_size - 2);
+ (win_info->content_size - 2);
sal.symtab = s;
sal.pspace = SYMTAB_PSPACE (s);
set_current_source_symtab_and_line (sal);
@@ -212,11 +212,11 @@ tui_clear_source_content (struct tui_win_info *win_info,
{
int i;
- win_info->generic.content_in_use = FALSE;
+ win_info->content_in_use = FALSE;
tui_erase_source_content (win_info, display_prompt);
- for (i = 0; i < win_info->generic.content_size; i++)
+ for (i = 0; i < win_info->content_size; i++)
{
- struct tui_win_element *element = win_info->generic.content[i];
+ struct tui_win_element *element = win_info->content[i];
element->which_element.source.has_break = FALSE;
element->which_element.source.is_exec_point = FALSE;
@@ -230,17 +230,17 @@ tui_erase_source_content (struct tui_win_info *win_info,
int display_prompt)
{
int x_pos;
- int half_width = (win_info->generic.width - 2) / 2;
+ int half_width = (win_info->width - 2) / 2;
- if (win_info->generic.handle != NULL)
+ if (win_info->handle != NULL)
{
- werase (win_info->generic.handle);
+ werase (win_info->handle);
tui_check_and_display_highlight_if_needed (win_info);
if (display_prompt == EMPTY_SOURCE_PROMPT)
{
const char *no_src_str;
- if (win_info->generic.type == SRC_WIN)
+ if (win_info->type == SRC_WIN)
no_src_str = NO_SRC_STRING;
else
no_src_str = NO_DISASSEM_STRING;
@@ -248,8 +248,8 @@ tui_erase_source_content (struct tui_win_info *win_info,
x_pos = 1;
else
x_pos = half_width - strlen (no_src_str);
- mvwaddstr (win_info->generic.handle,
- (win_info->generic.height / 2),
+ mvwaddstr (win_info->handle,
+ (win_info->height / 2),
x_pos,
(char *) no_src_str);
@@ -260,7 +260,7 @@ tui_erase_source_content (struct tui_win_info *win_info,
tui_set_source_content_nil (win_info, no_src_str);
}
- tui_refresh_win (&win_info->generic);
+ tui_refresh_win (win_info);
}
}
@@ -272,41 +272,41 @@ tui_show_source_line (struct tui_win_info *win_info, int lineno)
struct tui_win_element *line;
int x;
- line = win_info->generic.content[lineno - 1];
+ line = win_info->content[lineno - 1];
if (line->which_element.source.is_exec_point)
- tui_set_reverse_mode (win_info->generic.handle, true);
+ tui_set_reverse_mode (win_info->handle, true);
- wmove (win_info->generic.handle, lineno, 1);
+ wmove (win_info->handle, lineno, 1);
tui_puts (line->which_element.source.line,
- win_info->generic.handle);
+ win_info->handle);
if (line->which_element.source.is_exec_point)
- tui_set_reverse_mode (win_info->generic.handle, false);
+ tui_set_reverse_mode (win_info->handle, false);
/* Clear to end of line but stop before the border. */
- x = getcurx (win_info->generic.handle);
- while (x + 1 < win_info->generic.width)
+ x = getcurx (win_info->handle);
+ while (x + 1 < win_info->width)
{
- waddch (win_info->generic.handle, ' ');
- x = getcurx (win_info->generic.handle);
+ waddch (win_info->handle, ' ');
+ x = getcurx (win_info->handle);
}
}
void
tui_show_source_content (struct tui_win_info *win_info)
{
- if (win_info->generic.content_size > 0)
+ if (win_info->content_size > 0)
{
int lineno;
- for (lineno = 1; lineno <= win_info->generic.content_size; lineno++)
+ for (lineno = 1; lineno <= win_info->content_size; lineno++)
tui_show_source_line (win_info, lineno);
}
else
tui_erase_source_content (win_info, TRUE);
tui_check_and_display_highlight_if_needed (win_info);
- tui_refresh_win (&win_info->generic);
- win_info->generic.content_in_use = TRUE;
+ tui_refresh_win (win_info);
+ win_info->content_in_use = TRUE;
}
/* See tui-data.h. */
@@ -316,7 +316,7 @@ tui_source_window_base::refill ()
{
symtab *s = nullptr;
- if (generic.type == SRC_WIN)
+ if (type == SRC_WIN)
{
symtab_and_line cursal = get_current_source_symtab_and_line ();
s = (cursal.symtab == NULL
@@ -325,7 +325,7 @@ tui_source_window_base::refill ()
}
tui_update_source_window_as_is (this, gdbarch, s,
- generic.content[0]
+ content[0]
->which_element.source.line_or_addr,
FALSE);
}
@@ -336,7 +336,7 @@ void
tui_source_window_base::do_scroll_horizontal
(enum tui_scroll_direction direction, int num_to_scroll)
{
- if (generic.content != NULL)
+ if (content != NULL)
{
int offset;
@@ -362,10 +362,9 @@ tui_source_window_base::set_is_exec_point_at (struct tui_line_or_address l)
{
int changed = 0;
int i;
- tui_win_content content = generic.content;
i = 0;
- while (i < generic.content_size)
+ while (i < content_size)
{
int new_state;
struct tui_line_or_address content_loa =
@@ -422,14 +421,14 @@ tui_update_breakpoint_info (struct tui_win_info *win,
int need_refresh = 0;
tui_source_window_base *src = (tui_source_window_base *) win;
- for (i = 0; i < win->generic.content_size; i++)
+ for (i = 0; i < win->content_size; i++)
{
struct breakpoint *bp;
extern struct breakpoint *breakpoint_chain;
int mode;
struct tui_source_element *line;
- line = &win->generic.content[i]->which_element.source;
+ line = &win->content[i]->which_element.source;
if (current_only && !line->is_exec_point)
continue;
@@ -496,20 +495,20 @@ tui_set_exec_info_content (struct tui_win_info *win_info)
if (exec_info_ptr->content == NULL)
exec_info_ptr->content =
- tui_alloc_content (win_info->generic.height, exec_info_ptr->type);
+ tui_alloc_content (win_info->height, exec_info_ptr->type);
if (exec_info_ptr->content != NULL)
{
int i;
tui_update_breakpoint_info (win_info, 1);
- for (i = 0; i < win_info->generic.content_size; i++)
+ for (i = 0; i < win_info->content_size; i++)
{
struct tui_win_element *element;
struct tui_win_element *src_element;
int mode;
element = exec_info_ptr->content[i];
- src_element = win_info->generic.content[i];
+ src_element = win_info->content[i];
memset(element->which_element.simple_string, ' ',
sizeof(element->which_element.simple_string));
@@ -533,7 +532,7 @@ tui_set_exec_info_content (struct tui_win_info *win_info)
if (src_element->which_element.source.is_exec_point)
element->which_element.simple_string[TUI_EXEC_POS] = '>';
}
- exec_info_ptr->content_size = win_info->generic.content_size;
+ exec_info_ptr->content_size = win_info->content_size;
}
else
ret = TUI_FAILURE;
@@ -598,16 +597,16 @@ tui_alloc_source_buffer (struct tui_win_info *win_info)
/* The window width/height includes the highlight box. Determine actual
content dimensions, including string null-terminators. */
- max_lines = win_info->generic.height - 2;
- line_width = win_info->generic.width - 2 + 1;
+ max_lines = win_info->height - 2;
+ line_width = win_info->width - 2 + 1;
/* Allocate the buffer for the source lines. */
- if (win_info->generic.content == NULL)
+ if (win_info->content == NULL)
{
/* Allocate the content list. */
- win_info->generic.content = tui_alloc_content (max_lines, SRC_WIN);
+ win_info->content = tui_alloc_content (max_lines, SRC_WIN);
for (i = 0; i < max_lines; i++)
- win_info->generic.content[i]->which_element.source.line
+ win_info->content[i]->which_element.source.line
= (char *) xmalloc (line_width);
}
@@ -630,13 +629,13 @@ tui_line_is_displayed (int line,
else
threshold = 0;
i = 0;
- while (i < win_info->generic.content_size - threshold
+ while (i < win_info->content_size - threshold
&& !is_displayed)
{
is_displayed
- = win_info->generic.content[i]
+ = win_info->content[i]
->which_element.source.line_or_addr.loa == LOA_LINE
- && win_info->generic.content[i]
+ && win_info->content[i]
->which_element.source.line_or_addr.u.line_no == line;
i++;
}
@@ -660,13 +659,13 @@ tui_addr_is_displayed (CORE_ADDR addr,
else
threshold = 0;
i = 0;
- while (i < win_info->generic.content_size - threshold
+ while (i < win_info->content_size - threshold
&& !is_displayed)
{
is_displayed
- = win_info->generic.content[i]
+ = win_info->content[i]
->which_element.source.line_or_addr.loa == LOA_ADDRESS
- && win_info->generic.content[i]
+ && win_info->content[i]
->which_element.source.line_or_addr.u.addr == addr;
i++;
}