diff options
author | Tom Tromey <tom@tromey.com> | 2019-10-01 17:29:49 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2019-10-09 16:50:35 -0600 |
commit | 7523da63ca33a37b54c2cde18b7752d0f0f11c26 (patch) | |
tree | 9c89a33c5d2848fa4613e5b558136a6cd000fb24 /gdb/tui/tui-io.c | |
parent | a7798e7f7dd1c4226376d455af957e369aa2a192 (diff) | |
download | gdb-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.c | 23 |
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. */ |