From patchwork Mon Jun 24 18:48:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 33358 Received: (qmail 60947 invoked by alias); 24 Jun 2019 18:49:02 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 60635 invoked by uid 89); 24 Jun 2019 18:49:00 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-22.5 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.1 spammy= X-HELO: gateway23.websitewelcome.com Received: from gateway23.websitewelcome.com (HELO gateway23.websitewelcome.com) (192.185.49.179) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 24 Jun 2019 18:48:56 +0000 Received: from cm14.websitewelcome.com (cm14.websitewelcome.com [100.42.49.7]) by gateway23.websitewelcome.com (Postfix) with ESMTP id 006646BDE for ; Mon, 24 Jun 2019 13:48:55 -0500 (CDT) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id fU1OhsJSM2qH7fU1Oh1I9e; Mon, 24 Jun 2019 13:48:54 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=9MeC+ZnJqNCxvEniHosvw4735kYvdZjwmSeCNiDA1RM=; b=BL1FpUoVzBbbKabEVCEbHaDhbw mJx2BG5S1vcJ2XDF08n3kHPaDHR30TMenN3nOwiFgPP07+unRktjsjI/WUlDzc0bgDt9ZCW/cNUfc ml6P6Ab7ka+bI2vL8dJE/DeTK; Received: from 75-166-12-78.hlrn.qwest.net ([75.166.12.78]:56746 helo=bapiya.Home) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92) (envelope-from ) id 1hfU1O-003qDK-PI; Mon, 24 Jun 2019 13:48:54 -0500 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH 61/66] More type safety for TUI source window functions Date: Mon, 24 Jun 2019 12:48:36 -0600 Message-Id: <20190624184841.3492-12-tom@tromey.com> In-Reply-To: <20190624184841.3492-1-tom@tromey.com> References: <20190623224329.16060-1-tom@tromey.com> <20190624184841.3492-1-tom@tromey.com> A few functions can only operate on a source or disassembly window. This patch adds a bit more type safety to a few of these functions. This simplifies a subsequent patch. 2019-06-23 Tom Tromey * tui/tui-winsource.h (tui_clear_source_content) (tui_erase_source_content, tui_show_source_content): Change type of win_info. * tui/tui-winsource.c (tui_clear_source_content) (tui_erase_source_content, tui_show_source_content): Change type of win_info. * tui/tui-win.c (tui_resize_all, tui_adjust_win_heights): Update. * tui/tui-source.h (tui_set_source_content_nil): Change type of win_info. * tui/tui-source.c (tui_set_source_content_nil): Change type of win_info. * tui/tui-layout.c (show_source_or_disasm_and_command): Update. --- gdb/ChangeLog | 15 +++++++++++++++ gdb/tui/tui-layout.c | 2 +- gdb/tui/tui-source.c | 2 +- gdb/tui/tui-source.h | 2 +- gdb/tui/tui-win.c | 39 ++++++++++++++++++++++++--------------- gdb/tui/tui-winsource.c | 6 +++--- gdb/tui/tui-winsource.h | 6 +++--- 7 files changed, 48 insertions(+), 24 deletions(-) diff --git a/gdb/tui/tui-layout.c b/gdb/tui/tui-layout.c index 9fffba779a9..ad99ec9abd9 100644 --- a/gdb/tui/tui-layout.c +++ b/gdb/tui/tui-layout.c @@ -921,7 +921,7 @@ show_source_or_disasm_and_command (enum tui_layout_type layout_type) base->m_has_locator = true; tui_make_visible (locator); tui_show_locator_content (); - tui_show_source_content (*win_info_ptr); + tui_show_source_content (base); if (TUI_CMD_WIN == NULL) { diff --git a/gdb/tui/tui-source.c b/gdb/tui/tui-source.c index 54e4e1be903..fd89d98ba16 100644 --- a/gdb/tui/tui-source.c +++ b/gdb/tui/tui-source.c @@ -222,7 +222,7 @@ tui_set_source_content (struct symtab *s, source files cannot be accessed. */ void -tui_set_source_content_nil (struct tui_win_info *win_info, +tui_set_source_content_nil (struct tui_source_window_base *win_info, const char *warning_string) { int line_width; diff --git a/gdb/tui/tui-source.h b/gdb/tui/tui-source.h index 7757373a2a2..9e1dc1a6e10 100644 --- a/gdb/tui/tui-source.h +++ b/gdb/tui/tui-source.h @@ -27,7 +27,7 @@ struct symtab; struct tui_win_info; -extern void tui_set_source_content_nil (struct tui_win_info *, +extern void tui_set_source_content_nil (struct tui_source_window_base *, const char *); extern enum tui_status tui_set_source_content (struct symtab *, diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c index 3837397d9e7..f88ec970781 100644 --- a/gdb/tui/tui-win.c +++ b/gdb/tui/tui-win.c @@ -556,6 +556,7 @@ tui_resize_all (void) struct tui_win_info *win_with_focus = tui_win_with_focus (); struct tui_win_info *first_win; struct tui_win_info *second_win; + tui_source_window_base *src_win; struct tui_locator_window *locator = tui_locator_win_info_ptr (); int win_type; int new_height, split_diff, cmd_split_diff, num_wins_displayed = 2; @@ -592,7 +593,8 @@ tui_resize_all (void) { case SRC_COMMAND: case DISASSEM_COMMAND: - first_win = tui_source_windows ()[0]; + src_win = tui_source_windows ()[0]; + first_win = src_win; first_win->width += width_diff; locator->width += width_diff; /* Check for invalid heights. */ @@ -614,13 +616,14 @@ tui_resize_all (void) make_invisible_and_set_new_height (TUI_CMD_WIN, new_height); first_win->make_visible_with_new_height (); TUI_CMD_WIN->make_visible_with_new_height (); - if (first_win->content_size <= 0) - tui_erase_source_content (first_win, EMPTY_SOURCE_PROMPT); + if (src_win->content_size <= 0) + tui_erase_source_content (src_win, EMPTY_SOURCE_PROMPT); break; default: if (cur_layout == SRC_DISASSEM_COMMAND) { - first_win = TUI_SRC_WIN; + src_win = TUI_SRC_WIN; + first_win = src_win; first_win->width += width_diff; second_win = TUI_DISASM_WIN; second_win->width += width_diff; @@ -629,7 +632,8 @@ tui_resize_all (void) { first_win = TUI_DATA_WIN; first_win->width += width_diff; - second_win = tui_source_windows ()[0]; + src_win = tui_source_windows ()[0]; + second_win = src_win; second_win->width += width_diff; } /* Change the first window's height/width. */ @@ -677,10 +681,8 @@ tui_resize_all (void) first_win->make_visible_with_new_height (); second_win->make_visible_with_new_height (); TUI_CMD_WIN->make_visible_with_new_height (); - if (first_win->content_size <= 0) - tui_erase_source_content (first_win, EMPTY_SOURCE_PROMPT); - if (second_win->content_size <= 0) - tui_erase_source_content (second_win, EMPTY_SOURCE_PROMPT); + if (src_win->content_size <= 0) + tui_erase_source_content (src_win, EMPTY_SOURCE_PROMPT); break; } /* Now remove all invisible windows, and their content so that @@ -1124,21 +1126,28 @@ tui_adjust_win_heights (struct tui_win_info *primary_win_info, TUI_CMD_WIN->origin.y = locator->origin.y + 1; win_info->make_visible_with_new_height (); primary_win_info->make_visible_with_new_height (); - if (src_win_info->content_size <= 0) - tui_erase_source_content (src_win_info, EMPTY_SOURCE_PROMPT); + if ((src_win_info->type == SRC_WIN + || src_win_info->type == DISASSEM_WIN) + && src_win_info->content_size <= 0) + tui_erase_source_content + ((tui_source_window_base *) src_win_info, + EMPTY_SOURCE_PROMPT); } else { struct tui_win_info *first_win; - struct tui_win_info *second_win; + struct tui_source_window_base *second_win; + tui_source_window_base *src1; if (cur_layout == SRC_DISASSEM_COMMAND) { - first_win = TUI_SRC_WIN; + src1 = TUI_SRC_WIN; + first_win = src1; second_win = TUI_DISASM_WIN; } else { + src1 = nullptr; first_win = TUI_DATA_WIN; second_win = tui_source_windows ()[0]; } @@ -1227,8 +1236,8 @@ tui_adjust_win_heights (struct tui_win_info *primary_win_info, TUI_CMD_WIN->make_visible_with_new_height (); second_win->make_visible_with_new_height (); first_win->make_visible_with_new_height (); - if (first_win->content_size <= 0) - tui_erase_source_content (first_win, EMPTY_SOURCE_PROMPT); + if (src1 != nullptr && src1->content_size <= 0) + tui_erase_source_content (src1, EMPTY_SOURCE_PROMPT); if (second_win->content_size <= 0) tui_erase_source_content (second_win, EMPTY_SOURCE_PROMPT); } diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c index f30c3d67632..b11feff2a4d 100644 --- a/gdb/tui/tui-winsource.c +++ b/gdb/tui/tui-winsource.c @@ -204,7 +204,7 @@ tui_update_source_windows_with_line (struct symtab *s, int line) } void -tui_clear_source_content (struct tui_win_info *win_info, +tui_clear_source_content (struct tui_source_window_base *win_info, int display_prompt) { if (win_info != NULL) @@ -225,7 +225,7 @@ tui_clear_source_content (struct tui_win_info *win_info, void -tui_erase_source_content (struct tui_win_info *win_info, +tui_erase_source_content (struct tui_source_window_base *win_info, int display_prompt) { int x_pos; @@ -291,7 +291,7 @@ tui_show_source_line (struct tui_win_info *win_info, int lineno) } void -tui_show_source_content (struct tui_win_info *win_info) +tui_show_source_content (struct tui_source_window_base *win_info) { if (win_info->content_size > 0) { diff --git a/gdb/tui/tui-winsource.h b/gdb/tui/tui-winsource.h index 09a9d5abf4a..f914c0aaf14 100644 --- a/gdb/tui/tui-winsource.h +++ b/gdb/tui/tui-winsource.h @@ -50,9 +50,9 @@ extern void tui_update_source_window_as_is (struct tui_source_window_base *, extern void tui_update_source_windows_with_addr (struct gdbarch *, CORE_ADDR); extern void tui_update_source_windows_with_line (struct symtab *, int); -extern void tui_clear_source_content (struct tui_win_info *, int); -extern void tui_erase_source_content (struct tui_win_info *, int); -extern void tui_show_source_content (struct tui_win_info *); +extern void tui_clear_source_content (struct tui_source_window_base *, int); +extern void tui_erase_source_content (struct tui_source_window_base *, int); +extern void tui_show_source_content (struct tui_source_window_base *); extern void tui_set_exec_info_content (struct tui_source_window_base *); extern void tui_show_exec_info_content (struct tui_source_window_base *); extern void tui_erase_exec_info_content (struct tui_source_window_base *);