From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by sourceware.org (Postfix) with ESMTPS id C80953858D37 for ; Fri, 23 Jun 2023 11:15:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C80953858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 0669D1F45A; Fri, 23 Jun 2023 11:15:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1687518932; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=TSsexvtayYEMYEeF28WNyuGv6UUk+KKkpIx+aRcTAJk=; b=nWrH6HyCCLV/TJCCtc5ON8SxFUBzIChDYe2Xz5rXci3URxLtqzQxkNJ8sXKGlP/8BqR6Is /PC05h6oLSbENkhPrns69p7JfpY4BDQFis6NlzTLpoK9GaCEU5kpEBnDkrufeiHhyIFRu0 eYif+ZOB5F6AHO8PQoPVvVBn0tO6kX0= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1687518932; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=TSsexvtayYEMYEeF28WNyuGv6UUk+KKkpIx+aRcTAJk=; b=gt2WPjmSOGM7vjv/qX1uUnL4UT3LqR/uHUPjgfm6y8McB5t+nLyxvtqcST3zLo8FHTOfBj r9m13DQ5cP6r1FBg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id E3824139F7; Fri, 23 Jun 2023 11:15:31 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id SPyENtN+lWSBFQAAMHmgww (envelope-from ); Fri, 23 Jun 2023 11:15:31 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH 2/4] [gdb/tui] Introduce translate_acs Date: Fri, 23 Jun 2023 13:15:34 +0200 Message-Id: <20230623111536.1623-2-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20230623111536.1623-1-tdevries@suse.de> References: <20230623111536.1623-1-tdevries@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: In function tui_update_variables we have the somewhat inconvenient: ... entry = translate (tui_border_kind, tui_border_kind_translate_lrcorner); int val = (entry->value < 0) ? ACS_LRCORNER : entry->value; ... Add a new function translate_acs, that allows us to do the more straighforward: ... int val = translate_acs (tui_border_kind, tui_border_kind_translate_lrcorner, ACS_LRCORNER); ... By special-casing "acs" in translate_acs, we can now remove the acs entries from the translation tables. Tested on x86_64-linux. --- gdb/tui/tui-win.c | 59 +++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/gdb/tui/tui-win.c b/gdb/tui/tui-win.c index fe80df468fa..1406e072c43 100644 --- a/gdb/tui/tui-win.c +++ b/gdb/tui/tui-win.c @@ -128,49 +128,41 @@ static struct tui_translate tui_border_mode_translate[] = { { 0, 0 } }; -/* Translation tables for border-kind, one for each border - character (see wborder, border curses operations). - -1 is used to indicate the ACS because ACS characters - are determined at run time by curses (depends on terminal). */ +/* Translation tables for border-kind (acs excluded), one for each border + character (see wborder, border curses operations). */ static struct tui_translate tui_border_kind_translate_vline[] = { { "space", ' ' }, { "ascii", '|' }, - { "acs", -1 }, { 0, 0 } }; static struct tui_translate tui_border_kind_translate_hline[] = { { "space", ' ' }, { "ascii", '-' }, - { "acs", -1 }, { 0, 0 } }; static struct tui_translate tui_border_kind_translate_ulcorner[] = { { "space", ' ' }, { "ascii", '+' }, - { "acs", -1 }, { 0, 0 } }; static struct tui_translate tui_border_kind_translate_urcorner[] = { { "space", ' ' }, { "ascii", '+' }, - { "acs", -1 }, { 0, 0 } }; static struct tui_translate tui_border_kind_translate_llcorner[] = { { "space", ' ' }, { "ascii", '+' }, - { "acs", -1 }, { 0, 0 } }; static struct tui_translate tui_border_kind_translate_lrcorner[] = { { "space", ' ' }, { "ascii", '+' }, - { "acs", -1 }, { 0, 0 } }; @@ -263,6 +255,19 @@ translate (const char *name, struct tui_translate *table) gdb_assert_not_reached (""); } +/* Translate NAME to a value. If NAME is "acs", use ACS_CHAR. Otherwise, use + translation table TABLE. */ +static int +translate_acs (const char *name, struct tui_translate *table, int acs_char) +{ + /* The ACS characters are determined at run time by curses terminal + management. */ + if (strcmp (name, "acs") == 0) + return acs_char; + + return translate (name, table)->value; +} + /* Update the tui internal configuration according to gdb settings. Returns 1 if the configuration has changed and the screen should be redrawn. */ @@ -280,27 +285,31 @@ tui_update_variables () need_redraw |= assign_return_if_changed (tui_active_border_attrs, entry->value); - /* If one corner changes, all characters are changed. - Only check the first one. The ACS characters are determined at - run time by curses terminal management. */ - entry = translate (tui_border_kind, tui_border_kind_translate_lrcorner); - int val = (entry->value < 0) ? ACS_LRCORNER : entry->value; + /* If one corner changes, all characters are changed. Only check the first + one. */ + int val = translate_acs (tui_border_kind, tui_border_kind_translate_lrcorner, + ACS_LRCORNER); need_redraw |= assign_return_if_changed (tui_border_lrcorner, val); - entry = translate (tui_border_kind, tui_border_kind_translate_llcorner); - tui_border_llcorner = (entry->value < 0) ? ACS_LLCORNER : entry->value; + tui_border_llcorner + = translate_acs (tui_border_kind, tui_border_kind_translate_llcorner, + ACS_LLCORNER); - entry = translate (tui_border_kind, tui_border_kind_translate_ulcorner); - tui_border_ulcorner = (entry->value < 0) ? ACS_ULCORNER : entry->value; + tui_border_ulcorner + = translate_acs (tui_border_kind, tui_border_kind_translate_ulcorner, + ACS_ULCORNER); - entry = translate (tui_border_kind, tui_border_kind_translate_urcorner); - tui_border_urcorner = (entry->value < 0) ? ACS_URCORNER : entry->value; + tui_border_urcorner = + translate_acs (tui_border_kind, tui_border_kind_translate_urcorner, + ACS_URCORNER); - entry = translate (tui_border_kind, tui_border_kind_translate_hline); - tui_border_hline = (entry->value < 0) ? ACS_HLINE : entry->value; + tui_border_hline + = translate_acs (tui_border_kind, tui_border_kind_translate_hline, + ACS_HLINE); - entry = translate (tui_border_kind, tui_border_kind_translate_vline); - tui_border_vline = (entry->value < 0) ? ACS_VLINE : entry->value; + tui_border_vline + = translate_acs (tui_border_kind, tui_border_kind_translate_vline, + ACS_VLINE); return need_redraw; } -- 2.35.3