aboutsummaryrefslogtreecommitdiff
path: root/gdb/tui/tui-io.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2019-10-01 17:29:49 -0600
committerTom Tromey <tom@tromey.com>2019-10-09 16:50:35 -0600
commit7523da63ca33a37b54c2cde18b7752d0f0f11c26 (patch)
tree9c89a33c5d2848fa4613e5b558136a6cd000fb24 /gdb/tui/tui-io.c
parenta7798e7f7dd1c4226376d455af957e369aa2a192 (diff)
downloadgdb-7523da63ca33a37b54c2cde18b7752d0f0f11c26.zip
gdb-7523da63ca33a37b54c2cde18b7752d0f0f11c26.tar.gz
gdb-7523da63ca33a37b54c2cde18b7752d0f0f11c26.tar.bz2
Make TUI window handle a unique_ptr
This changes tui_gen_win_info::handle to be a specialization of unique_ptr. This is perhaps mildly uglier in some spots, due to the proliferation of "get"; but on the other hand it cleans up some manual management and it allows for the removal of tui_delete_win. gdb/ChangeLog 2019-10-09 Tom Tromey <tom@tromey.com> * tui/tui-wingeneral.h (tui_delete_win): Don't declare. * tui/tui-stack.c (tui_locator_window::rerender): Update. * tui/tui-command.c (tui_cmd_window::resize) (tui_refresh_cmd_win): Update. * tui/tui-win.c (tui_resize_all, tui_set_focus_command): Update. * tui/tui.c (tui_rl_other_window, tui_enable): Update. * tui/tui-data.c (~tui_gen_win_info): Remove. * tui/tui-layout.c (tui_gen_win_info::resize): 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_getc): Update. * tui/tui-regs.c (tui_data_window::delete_data_content_windows) (tui_data_window::erase_data_content) (tui_data_item_window::rerender) (tui_data_item_window::refresh_window): Update. * tui/tui-wingeneral.c (tui_gen_win_info::refresh_window) (box_win, tui_gen_win_info::make_window) (tui_gen_win_info::make_visible): Update. (tui_delete_win): Remove. * tui/tui-winsource.c (tui_source_window_base::do_erase_source_content): Update. (tui_show_source_line, tui_source_window_base::update_tab_width) (tui_source_window_base::update_exec_info): Update. * tui/tui-data.h (struct curses_deleter): New. (struct tui_gen_win_info) <handle>: Now a unique_ptr. (struct tui_gen_win_info) <~tui_gen_win_info>: Define.
Diffstat (limited to 'gdb/tui/tui-io.c')
-rw-r--r--gdb/tui/tui-io.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/gdb/tui/tui-io.c b/gdb/tui/tui-io.c
index ee581a2..6bb495b 100644
--- a/gdb/tui/tui-io.c
+++ b/gdb/tui/tui-io.c
@@ -179,8 +179,7 @@ do_tui_putc (WINDOW *w, char c)
static void
update_cmdwin_start_line ()
{
- TUI_CMD_WIN->start_line
- = getcury (TUI_CMD_WIN->handle);
+ TUI_CMD_WIN->start_line = getcury (TUI_CMD_WIN->handle.get ());
}
/* Print a character in the curses command window. The output is
@@ -190,9 +189,7 @@ update_cmdwin_start_line ()
static void
tui_putc (char c)
{
- WINDOW *w = TUI_CMD_WIN->handle;
-
- do_tui_putc (w, c);
+ do_tui_putc (TUI_CMD_WIN->handle.get (), c);
update_cmdwin_start_line ();
}
@@ -495,7 +492,7 @@ tui_puts_internal (WINDOW *w, const char *string, int *height)
}
}
}
- if (TUI_CMD_WIN != nullptr && w == TUI_CMD_WIN->handle)
+ if (TUI_CMD_WIN != nullptr && w == TUI_CMD_WIN->handle.get ())
update_cmdwin_start_line ();
if (saw_nl)
wrefresh (w);
@@ -509,7 +506,7 @@ void
tui_puts (const char *string, WINDOW *w)
{
if (w == nullptr)
- w = TUI_CMD_WIN->handle;
+ w = TUI_CMD_WIN->handle.get ();
tui_puts_internal (w, string, nullptr);
}
@@ -545,13 +542,13 @@ tui_redisplay_readline (void)
c_pos = -1;
c_line = -1;
- w = TUI_CMD_WIN->handle;
+ w = TUI_CMD_WIN->handle.get ();
start_line = TUI_CMD_WIN->start_line;
wmove (w, start_line, 0);
prev_col = 0;
height = 1;
if (prompt != nullptr)
- tui_puts_internal (TUI_CMD_WIN->handle, prompt, &height);
+ tui_puts_internal (w, prompt, &height);
prev_col = getcurx (w);
for (in = 0; in <= rl_end; in++)
@@ -670,7 +667,7 @@ tui_mld_puts (const struct match_list_displayer *displayer, const char *s)
static void
tui_mld_flush (const struct match_list_displayer *displayer)
{
- wrefresh (TUI_CMD_WIN->handle);
+ wrefresh (TUI_CMD_WIN->handle.get ());
}
/* TUI version of displayer.erase_entire_line. */
@@ -678,7 +675,7 @@ tui_mld_flush (const struct match_list_displayer *displayer)
static void
tui_mld_erase_entire_line (const struct match_list_displayer *displayer)
{
- WINDOW *w = TUI_CMD_WIN->handle;
+ WINDOW *w = TUI_CMD_WIN->handle.get ();
int cur_y = getcury (w);
wmove (w, cur_y, 0);
@@ -716,7 +713,7 @@ gdb_wgetch (WINDOW *win)
static int
tui_mld_getc (FILE *fp)
{
- WINDOW *w = TUI_CMD_WIN->handle;
+ WINDOW *w = TUI_CMD_WIN->handle.get ();
int c = gdb_wgetch (w);
return c;
@@ -970,7 +967,7 @@ tui_getc (FILE *fp)
int ch;
WINDOW *w;
- w = TUI_CMD_WIN->handle;
+ w = TUI_CMD_WIN->handle.get ();
#ifdef TUI_USE_PIPE_FOR_READLINE
/* Flush readline output. */