/* Function to display the "main" routine. */
void
-tui_display_main (void)
+tui_display_main ()
{
- if ((tui_source_windows ())->count > 0)
+ if (!tui_source_windows ().empty ())
{
struct gdbarch *gdbarch;
CORE_ADDR addr;
struct tui_line_or_address line_or_addr,
int noerror)
{
- win_info->detail.source_info.horizontal_offset = 0;
+ tui_source_window_base *base = (tui_source_window_base *) win_info;
+ base->horizontal_offset = 0;
tui_update_source_window_as_is (win_info, gdbarch, s, line_or_addr, noerror);
return;
}
else
{
- int i;
-
- for (i = 0; i < (tui_source_windows ())->count; i++)
+ for (struct tui_source_window_base *win_info : tui_source_windows ())
{
- struct tui_win_info *win_info = (tui_source_windows ())->list[i];
-
tui_clear_source_content (win_info, EMPTY_SOURCE_PROMPT);
tui_clear_exec_info_content (win_info);
}
int x_pos;
int half_width = (win_info->generic.width - 2) / 2;
- if (win_info->generic.handle != (WINDOW *) NULL)
+ if (win_info->generic.handle != NULL)
{
werase (win_info->generic.handle);
tui_check_and_display_highlight_if_needed (win_info);
win_info->generic.content_in_use = TRUE;
}
-/* Refill the source window's source cache and update it. If WIN_INFO
- is a disassembly window, then just update it. */
+/* See tui-data.h. */
void
-tui_refill_source_window (struct tui_win_info *win_info)
+tui_source_window_base::refill ()
{
symtab *s = nullptr;
- if (win_info->generic.type == SRC_WIN)
+ if (generic.type == SRC_WIN)
{
symtab_and_line cursal = get_current_source_symtab_and_line ();
s = (cursal.symtab == NULL
: cursal.symtab);
}
- tui_update_source_window_as_is (win_info,
- win_info->detail.source_info.gdbarch,
- s,
- win_info->generic.content[0]
+ tui_update_source_window_as_is (this, gdbarch, s,
+ generic.content[0]
->which_element.source.line_or_addr,
FALSE);
}
/* Scroll the source forward or backward horizontally. */
void
-tui_horizontal_source_scroll (struct tui_win_info *win_info,
- enum tui_scroll_direction direction,
- int num_to_scroll)
+tui_source_window_base::do_scroll_horizontal
+ (enum tui_scroll_direction direction, int num_to_scroll)
{
- if (win_info->generic.content != NULL)
+ if (generic.content != NULL)
{
int offset;
if (direction == LEFT_SCROLL)
- offset = win_info->detail.source_info.horizontal_offset
- + num_to_scroll;
+ offset = horizontal_offset + num_to_scroll;
else
{
- offset = win_info->detail.source_info.horizontal_offset
- - num_to_scroll;
+ offset = horizontal_offset - num_to_scroll;
if (offset < 0)
offset = 0;
}
- win_info->detail.source_info.horizontal_offset = offset;
- tui_refill_source_window (win_info);
+ horizontal_offset = offset;
+ refill ();
}
}
line_no. */
void
-tui_set_is_exec_point_at (struct tui_line_or_address l,
- struct tui_win_info *win_info)
+tui_source_window_base::set_is_exec_point_at (struct tui_line_or_address l)
{
int changed = 0;
int i;
- tui_win_content content = win_info->generic.content;
+ tui_win_content content = generic.content;
i = 0;
- while (i < win_info->generic.content_size)
+ while (i < generic.content_size)
{
int new_state;
struct tui_line_or_address content_loa =
{
changed++;
content[i]->which_element.source.is_exec_point = new_state;
- tui_show_source_line (win_info, i + 1);
+ tui_show_source_line (this, i + 1);
}
i++;
}
if (changed)
- tui_refill_source_window (win_info);
+ refill ();
}
/* Update the execution windows to show the active breakpoints.
This is called whenever a breakpoint is inserted, removed or
has its state changed. */
void
-tui_update_all_breakpoint_info (void)
+tui_update_all_breakpoint_info ()
{
- struct tui_list *list = tui_source_windows ();
- int i;
-
- for (i = 0; i < list->count; i++)
+ for (tui_source_window_base *win : tui_source_windows ())
{
- struct tui_win_info *win = list->list[i];
-
if (tui_update_breakpoint_info (win, FALSE))
{
tui_update_exec_info (win);
{
int i;
int need_refresh = 0;
- struct tui_source_info *src = &win->detail.source_info;
+ tui_source_window_base *src = (tui_source_window_base *) win;
for (i = 0; i < win->generic.content_size; i++)
{
those that we already hit. */
mode = 0;
for (bp = breakpoint_chain;
- bp != (struct breakpoint *) NULL;
+ bp != NULL;
bp = bp->next)
{
struct bp_location *loc;
{
enum tui_status ret = TUI_SUCCESS;
- if (win_info->detail.source_info.execution_info
- != (struct tui_gen_win_info *) NULL)
+ tui_source_window_base *base = (tui_source_window_base *) win_info;
+ if (base->execution_info != NULL)
{
- struct tui_gen_win_info *exec_info_ptr
- = win_info->detail.source_info.execution_info;
+ struct tui_gen_win_info *exec_info_ptr = base->execution_info;
if (exec_info_ptr->content == NULL)
exec_info_ptr->content =
void
tui_show_exec_info_content (struct tui_win_info *win_info)
{
- struct tui_gen_win_info *exec_info
- = win_info->detail.source_info.execution_info;
+ tui_source_window_base *base = (tui_source_window_base *) win_info;
+ struct tui_gen_win_info *exec_info = base->execution_info;
int cur_line;
werase (exec_info->handle);
void
tui_erase_exec_info_content (struct tui_win_info *win_info)
{
- struct tui_gen_win_info *exec_info
- = win_info->detail.source_info.execution_info;
+ tui_source_window_base *base = (tui_source_window_base *) win_info;
+ struct tui_gen_win_info *exec_info = base->execution_info;
werase (exec_info->handle);
tui_refresh_win (exec_info);
void
tui_clear_exec_info_content (struct tui_win_info *win_info)
{
- win_info->detail.source_info.execution_info->content_in_use = FALSE;
+ tui_source_window_base *base = (tui_source_window_base *) win_info;
+ base->execution_info->content_in_use = FALSE;
tui_erase_exec_info_content (win_info);
return;