Remove tui_list

This removes the tui_list type in favor of a std::vector.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

	* tui/tui-winsource.c (tui_display_main)
	(tui_update_source_windows_with_addr)
	(tui_update_all_breakpoint_info): Update.
	* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights)
	(new_height_ok, parse_scrolling_args): Update.
	* tui/tui-stack.c (tui_show_frame_info): Update.
	* tui/tui-data.h (struct tui_list): Remove.
	(tui_source_windows): Return a reference to a std::vector.
	* tui/tui-data.c (source_windows): Now a std::vector.
	(tui_source_windows): Change return type.
	(tui_clear_source_windows): Rewrite.
	(tui_clear_source_windows_detail, tui_add_to_source_windows)
	(tui_free_all_source_wins_content): Rewrite.
This commit is contained in:
Tom Tromey
2019-06-16 10:49:45 -06:00
parent 8761a91b26
commit b4eb24524b
6 changed files with 47 additions and 64 deletions

View File

@ -1,3 +1,19 @@
2019-06-25 Tom Tromey <tom@tromey.com>
* tui/tui-winsource.c (tui_display_main)
(tui_update_source_windows_with_addr)
(tui_update_all_breakpoint_info): Update.
* tui/tui-win.c (tui_resize_all, tui_adjust_win_heights)
(new_height_ok, parse_scrolling_args): Update.
* tui/tui-stack.c (tui_show_frame_info): Update.
* tui/tui-data.h (struct tui_list): Remove.
(tui_source_windows): Return a reference to a std::vector.
* tui/tui-data.c (source_windows): Now a std::vector.
(tui_source_windows): Change return type.
(tui_clear_source_windows): Rewrite.
(tui_clear_source_windows_detail, tui_add_to_source_windows)
(tui_free_all_source_wins_content): Rewrite.
2019-06-25 Tom Tromey <tom@tromey.com> 2019-06-25 Tom Tromey <tom@tromey.com>
* tui/tui-data.h (struct tui_win_info, struct tui_source_window) * tui/tui-data.h (struct tui_win_info, struct tui_source_window)

View File

@ -38,8 +38,7 @@ static enum tui_layout_type current_layout = UNDEFINED_LAYOUT;
static int term_height, term_width; static int term_height, term_width;
static struct tui_gen_win_info _locator; static struct tui_gen_win_info _locator;
static struct tui_gen_win_info exec_info[2]; static struct tui_gen_win_info exec_info[2];
static struct tui_win_info *src_win_list[2]; static std::vector<tui_win_info *> source_windows;
static struct tui_list source_windows = {src_win_list, 0};
static struct tui_win_info *win_with_focus = NULL; static struct tui_win_info *win_with_focus = NULL;
static struct tui_layout_def layout_def = { static struct tui_layout_def layout_def = {
SRC_WIN, /* DISPLAY_MODE */ SRC_WIN, /* DISPLAY_MODE */
@ -138,10 +137,10 @@ tui_set_win_with_focus (struct tui_win_info *win_info)
/* Accessor for the current source window. Usually there is only one /* Accessor for the current source window. Usually there is only one
source window (either source or disassembly), but both can be source window (either source or disassembly), but both can be
displayed at the same time. */ displayed at the same time. */
struct tui_list * std::vector<tui_win_info *> &
tui_source_windows (void) tui_source_windows ()
{ {
return &source_windows; return source_windows;
} }
@ -149,22 +148,18 @@ tui_source_windows (void)
window (either source or disassembly), but both can be displayed at window (either source or disassembly), but both can be displayed at
the same time. */ the same time. */
void void
tui_clear_source_windows (void) tui_clear_source_windows ()
{ {
source_windows.list[0] = NULL; source_windows.clear ();
source_windows.list[1] = NULL;
source_windows.count = 0;
} }
/* Clear the pertinant detail in the source windows. */ /* Clear the pertinant detail in the source windows. */
void void
tui_clear_source_windows_detail (void) tui_clear_source_windows_detail ()
{ {
int i; for (tui_win_info *win : tui_source_windows ())
tui_clear_win_detail (win);
for (i = 0; i < (tui_source_windows ())->count; i++)
tui_clear_win_detail ((tui_source_windows ())->list[i]);
} }
@ -174,8 +169,8 @@ tui_clear_source_windows_detail (void)
void void
tui_add_to_source_windows (struct tui_win_info *win_info) tui_add_to_source_windows (struct tui_win_info *win_info)
{ {
if (source_windows.count < 2) if (source_windows.size () < 2)
source_windows.list[source_windows.count++] = win_info; source_windows.push_back (win_info);
} }
/* See tui-data.h. */ /* See tui-data.h. */
@ -675,19 +670,12 @@ tui_win_info::~tui_win_info ()
void void
tui_free_all_source_wins_content (void) tui_free_all_source_wins_content ()
{ {
int i; for (tui_win_info *win_info : tui_source_windows ())
for (i = 0; i < (tui_source_windows ())->count; i++)
{ {
struct tui_win_info *win_info = (tui_source_windows ())->list[i]; tui_free_win_content (&(win_info->generic));
tui_free_win_content (win_info->detail.source_info.execution_info);
if (win_info != NULL)
{
tui_free_win_content (&(win_info->generic));
tui_free_win_content (win_info->detail.source_info.execution_info);
}
} }
} }

View File

@ -102,14 +102,6 @@ enum tui_scroll_direction
}; };
/* General list struct. */
struct tui_list
{
struct tui_win_info **list;
int count;
};
/* The kinds of layouts available. */ /* The kinds of layouts available. */
enum tui_layout_type enum tui_layout_type
{ {
@ -360,7 +352,7 @@ extern void tui_set_term_width_to (int);
extern struct tui_gen_win_info *tui_locator_win_info_ptr (void); extern struct tui_gen_win_info *tui_locator_win_info_ptr (void);
extern struct tui_gen_win_info *tui_source_exec_info_win_ptr (void); extern struct tui_gen_win_info *tui_source_exec_info_win_ptr (void);
extern struct tui_gen_win_info *tui_disassem_exec_info_win_ptr (void); extern struct tui_gen_win_info *tui_disassem_exec_info_win_ptr (void);
extern struct tui_list *tui_source_windows (void); extern std::vector<tui_win_info *> &tui_source_windows ();
extern void tui_clear_source_windows (void); extern void tui_clear_source_windows (void);
extern void tui_clear_source_windows_detail (void); extern void tui_clear_source_windows_detail (void);
extern void tui_clear_win_detail (struct tui_win_info *); extern void tui_clear_win_detail (struct tui_win_info *);

View File

@ -360,12 +360,11 @@ tui_update_locator_fullname (const char *fullname)
int int
tui_show_frame_info (struct frame_info *fi) tui_show_frame_info (struct frame_info *fi)
{ {
struct tui_win_info *win_info;
int locator_changed_p; int locator_changed_p;
if (fi) if (fi)
{ {
int start_line, i; int start_line;
CORE_ADDR low; CORE_ADDR low;
struct tui_gen_win_info *locator = tui_locator_win_info_ptr (); struct tui_gen_win_info *locator = tui_locator_win_info_ptr ();
int source_already_displayed; int source_already_displayed;
@ -397,12 +396,10 @@ tui_show_frame_info (struct frame_info *fi)
tui_show_locator_content (); tui_show_locator_content ();
start_line = 0; start_line = 0;
for (i = 0; i < (tui_source_windows ())->count; i++) for (struct tui_win_info *win_info : tui_source_windows ())
{ {
union tui_which_element *item; union tui_which_element *item;
win_info = (tui_source_windows ())->list[i];
item = &locator->content[0]->which_element; item = &locator->content[0]->which_element;
if (win_info == TUI_SRC_WIN) if (win_info == TUI_SRC_WIN)
{ {
@ -475,9 +472,8 @@ tui_show_frame_info (struct frame_info *fi)
return 0; return 0;
tui_show_locator_content (); tui_show_locator_content ();
for (int i = 0; i < (tui_source_windows ())->count; i++) for (struct tui_win_info *win_info : tui_source_windows ())
{ {
win_info = (tui_source_windows ())->list[i];
tui_clear_source_content (win_info, EMPTY_SOURCE_PROMPT); tui_clear_source_content (win_info, EMPTY_SOURCE_PROMPT);
tui_update_exec_info (win_info); tui_update_exec_info (win_info);
} }

View File

@ -686,7 +686,7 @@ tui_resize_all (void)
{ {
case SRC_COMMAND: case SRC_COMMAND:
case DISASSEM_COMMAND: case DISASSEM_COMMAND:
first_win = tui_source_windows ()->list[0]; first_win = tui_source_windows ()[0];
first_win->generic.width += width_diff; first_win->generic.width += width_diff;
locator->width += width_diff; locator->width += width_diff;
/* Check for invalid heights. */ /* Check for invalid heights. */
@ -723,7 +723,7 @@ tui_resize_all (void)
{ {
first_win = TUI_DATA_WIN; first_win = TUI_DATA_WIN;
first_win->generic.width += width_diff; first_win->generic.width += width_diff;
second_win = tui_source_windows ()->list[0]; second_win = tui_source_windows ()[0];
second_win->generic.width += width_diff; second_win->generic.width += width_diff;
} }
/* Change the first window's height/width. */ /* Change the first window's height/width. */
@ -1204,7 +1204,7 @@ tui_adjust_win_heights (struct tui_win_info *primary_win_info,
make_invisible_and_set_new_height (primary_win_info, new_height); make_invisible_and_set_new_height (primary_win_info, new_height);
if (primary_win_info->generic.type == CMD_WIN) if (primary_win_info->generic.type == CMD_WIN)
{ {
win_info = (tui_source_windows ())->list[0]; win_info = tui_source_windows ()[0];
src_win_info = win_info; src_win_info = win_info;
} }
else else
@ -1233,7 +1233,7 @@ tui_adjust_win_heights (struct tui_win_info *primary_win_info,
else else
{ {
first_win = TUI_DATA_WIN; first_win = TUI_DATA_WIN;
second_win = (tui_source_windows ())->list[0]; second_win = tui_source_windows ()[0];
} }
if (primary_win_info == TUI_CMD_WIN) if (primary_win_info == TUI_CMD_WIN)
{ /* Split the change in height accross the 1st & 2nd { /* Split the change in height accross the 1st & 2nd
@ -1490,7 +1490,7 @@ new_height_ok (struct tui_win_info *primary_win_info,
struct tui_win_info *win_info; struct tui_win_info *win_info;
if (primary_win_info == TUI_CMD_WIN) if (primary_win_info == TUI_CMD_WIN)
win_info = (tui_source_windows ())->list[0]; win_info = tui_source_windows ()[0];
else else
win_info = TUI_CMD_WIN; win_info = TUI_CMD_WIN;
ok = ((new_height + ok = ((new_height +
@ -1511,7 +1511,7 @@ new_height_ok (struct tui_win_info *primary_win_info,
else else
{ {
first_win = TUI_DATA_WIN; first_win = TUI_DATA_WIN;
second_win = (tui_source_windows ())->list[0]; second_win = tui_source_windows ()[0];
} }
/* We could simply add all the heights to obtain the same /* We could simply add all the heights to obtain the same
result but below is more explicit since we subtract 1 for result but below is more explicit since we subtract 1 for
@ -1637,7 +1637,7 @@ parse_scrolling_args (const char *arg,
error (_("Invalid window specified. \n\ error (_("Invalid window specified. \n\
The window name specified must be valid and visible.\n")); The window name specified must be valid and visible.\n"));
else if (*win_to_scroll == TUI_CMD_WIN) else if (*win_to_scroll == TUI_CMD_WIN)
*win_to_scroll = (tui_source_windows ())->list[0]; *win_to_scroll = tui_source_windows ()[0];
} }
} }
} }

View File

@ -42,9 +42,9 @@
/* Function to display the "main" routine. */ /* Function to display the "main" routine. */
void void
tui_display_main (void) tui_display_main ()
{ {
if ((tui_source_windows ())->count > 0) if (!tui_source_windows ().empty ())
{ {
struct gdbarch *gdbarch; struct gdbarch *gdbarch;
CORE_ADDR addr; CORE_ADDR addr;
@ -159,12 +159,8 @@ tui_update_source_windows_with_addr (struct gdbarch *gdbarch, CORE_ADDR addr)
} }
else else
{ {
int i; for (struct tui_win_info *win_info : tui_source_windows ())
for (i = 0; i < (tui_source_windows ())->count; i++)
{ {
struct tui_win_info *win_info = (tui_source_windows ())->list[i];
tui_clear_source_content (win_info, EMPTY_SOURCE_PROMPT); tui_clear_source_content (win_info, EMPTY_SOURCE_PROMPT);
tui_clear_exec_info_content (win_info); tui_clear_exec_info_content (win_info);
} }
@ -406,15 +402,10 @@ tui_set_is_exec_point_at (struct tui_line_or_address l,
This is called whenever a breakpoint is inserted, removed or This is called whenever a breakpoint is inserted, removed or
has its state changed. */ has its state changed. */
void void
tui_update_all_breakpoint_info (void) tui_update_all_breakpoint_info ()
{ {
struct tui_list *list = tui_source_windows (); for (tui_win_info *win : tui_source_windows ())
int i;
for (i = 0; i < list->count; i++)
{ {
struct tui_win_info *win = list->list[i];
if (tui_update_breakpoint_info (win, FALSE)) if (tui_update_breakpoint_info (win, FALSE))
{ {
tui_update_exec_info (win); tui_update_exec_info (win);