diff options
author | Tom Tromey <tom@tromey.com> | 2019-06-16 16:03:54 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2019-06-25 07:48:37 -0600 |
commit | cb2ce89305264543a4014d98bacb26800d92d394 (patch) | |
tree | e86e884ade455bdd50ce3039924029caf588ad40 /gdb/tui/tui-winsource.c | |
parent | ab313b35e505ccab9c23acbe82087b6c22a2088d (diff) | |
download | gdb-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.c | 95 |
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++; } |