From patchwork Wed Jun 5 22:21:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 33034 Received: (qmail 21899 invoked by alias); 5 Jun 2019 22:21:19 -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 21891 invoked by uid 89); 5 Jun 2019 22:21:19 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-17.3 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.1 spammy= X-HELO: gateway33.websitewelcome.com Received: from gateway33.websitewelcome.com (HELO gateway33.websitewelcome.com) (192.185.146.130) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 05 Jun 2019 22:21:13 +0000 Received: from cm11.websitewelcome.com (cm11.websitewelcome.com [100.42.49.5]) by gateway33.websitewelcome.com (Postfix) with ESMTP id 35AC0C8851F for ; Wed, 5 Jun 2019 17:21:12 -0500 (CDT) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id YeHQhO0PHdnCeYeHQh1R3k; Wed, 05 Jun 2019 17:21:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To: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=xRpxMjmMpxAsRloTUvcYmtCPy6v50/RBVPyZPlSjRGk=; b=Gefw7f38USMViA1y7flzRPB9a4 ZYVaqwhbJ6AE87v6SyauclK6q6Oy1LuDfMjGlBK5/T0vFXy7/gdgm2UJUCjx+XhDGoX26Fb9y7WlJ v9CLJrPY8rUs2Gh0jFgRGqBpm; Received: from 174-29-48-168.hlrn.qwest.net ([174.29.48.168]:47356 helo=bapiya) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.91) (envelope-from ) id 1hYeHP-002WGN-RB; Wed, 05 Jun 2019 17:21:12 -0500 From: Tom Tromey To: Pedro Alves Cc: Tom Tromey , gdb-patches@sourceware.org Subject: Re: ui_out format strings for fields and styles (Re: [PATCH] Style "pwd" output) References: <20190605020116.1550-1-tom@tromey.com> <1ee4bd6b-4cdf-f3a9-74af-0843bf123a8b@redhat.com> <87lfygi1x0.fsf@tromey.com> <32872d6a-15d6-9718-59ae-957694e114c9@redhat.com> <87imtjhj6b.fsf@tromey.com> <625cd0ba-058d-d4bf-8ba3-8676f335b0f3@redhat.com> <87blzbep47.fsf@tromey.com> <2180f72f-da10-5333-90a1-666ba3bd145e@redhat.com> Date: Wed, 05 Jun 2019 16:21:10 -0600 In-Reply-To: <2180f72f-da10-5333-90a1-666ba3bd145e@redhat.com> (Pedro Alves's message of "Wed, 5 Jun 2019 22:25:28 +0100") Message-ID: <87imtjbrmx.fsf@tromey.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1.91 (gnu/linux) MIME-Version: 1.0 >> We could just remove the enum, move to passing pointers everywhere, and >> convert the *_style objects to be pointers. This would streamline >> things a bit; Pedro> ... >> and we could use nullptr to mean "keep the default". Pedro> Yeah, that would %pN / %p] redundant/unnecessary... I didn't go quite as far as making everything take pointers, partly because it made it harder to preserve the distinction between the CLI layer and the ui-file styling layer. So instead I just removed the enum. My patch also removes (really just comments out) %pS and %pN in favor of requiring %ps. Those could be restored with a bit of effort I guess. Pedro> If you'd like to give this a try, please do feel free to push to Pedro> the branch. I didn't push but my patch is appended. Let me know what you think. I can push tomorrow if you want it. I'm not sure now if what remains of the patch is a good idea or not; or if moving fully to pointers would be better. Tom diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 0c3c7df92fb..c5d3ccab1eb 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -5836,14 +5836,14 @@ print_breakpoint_location (struct breakpoint *b, { uiout->text ("in "); uiout->field_string ("func", SYMBOL_PRINT_NAME (sym), - ui_out_style_kind::FUNCTION); + function_name_style.style ()); uiout->text (" "); uiout->wrap_hint (wrap_indent_at_field (uiout, "what")); uiout->text ("at "); } uiout->field_string ("file", symtab_to_filename_for_display (loc->symtab), - ui_out_style_kind::FILE); + file_name_style.style ()); uiout->text (":"); if (uiout->is_mi_like_p ()) @@ -6693,9 +6693,9 @@ describe_other_breakpoints (struct gdbarch *gdbarch, (others > 1) ? "," : ((others == 1) ? " and" : "")); } - current_uiout->message (_("also set at pc %pS%s%pN.\n"), - ptr (ui_out_style_kind::ADDRESS), - paddress (gdbarch, pc), nullptr); + current_uiout->message (_("also set at pc %ps.\n"), + styled_string (address_style.style (), + paddress (gdbarch, pc)).ptr ()); } } @@ -13355,12 +13355,12 @@ update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal) if (sym) { uiout->field_string ("func", SYMBOL_PRINT_NAME (sym), - ui_out_style_kind::FUNCTION); + function_name_style.style ()); uiout->text (" at "); } uiout->field_string ("file", symtab_to_filename_for_display (sal2.symtab), - ui_out_style_kind::FILE); + file_name_style.style ()); uiout->text (":"); if (uiout->is_mi_like_p ()) diff --git a/gdb/cli-out.c b/gdb/cli-out.c index 71ed5c3cf33..aaea20e1512 100644 --- a/gdb/cli-out.c +++ b/gdb/cli-out.c @@ -73,7 +73,7 @@ cli_ui_out::do_table_header (int width, ui_align alignment, return; do_field_string (0, width, alignment, 0, col_hdr.c_str (), - ui_out_style_kind::DEFAULT); + ui_file_style ()); } /* Mark beginning of a list */ @@ -102,7 +102,7 @@ cli_ui_out::do_field_int (int fldno, int width, ui_align alignment, std::string str = string_printf ("%d", value); do_field_string (fldno, width, alignment, fldname, str.c_str (), - ui_out_style_kind::DEFAULT); + ui_file_style ()); } /* used to omit a field */ @@ -115,28 +115,7 @@ cli_ui_out::do_field_skip (int fldno, int width, ui_align alignment, return; do_field_string (fldno, width, alignment, fldname, "", - ui_out_style_kind::DEFAULT); -} - -static ui_file_style -style_from_style_kind (ui_out_style_kind kind) -{ - switch (kind) - { - case ui_out_style_kind::DEFAULT: - /* Nothing. */ - return {}; - case ui_out_style_kind::FILE: - return file_name_style.style (); - case ui_out_style_kind::FUNCTION: - return function_name_style.style (); - case ui_out_style_kind::VARIABLE: - return variable_name_style.style (); - case ui_out_style_kind::ADDRESS: - return address_style.style (); - default: - gdb_assert_not_reached ("missing case"); - } + ui_file_style ()); } /* other specific cli_field_* end up here so alignment and field @@ -145,7 +124,7 @@ style_from_style_kind (ui_out_style_kind kind) void cli_ui_out::do_field_string (int fldno, int width, ui_align align, const char *fldname, const char *string, - ui_out_style_kind style) + const ui_file_style &style) { int before = 0; int after = 0; @@ -180,10 +159,7 @@ cli_ui_out::do_field_string (int fldno, int width, ui_align align, spaces (before); if (string) - { - ui_file_style fstyle = style_from_style_kind (style); - fputs_styled (string, fstyle, m_streams.back ()); - } + fputs_styled (string, style, m_streams.back ()); if (after) spaces (after); @@ -205,7 +181,7 @@ cli_ui_out::do_field_fmt (int fldno, int width, ui_align align, std::string str = string_vprintf (format, args); do_field_string (fldno, width, align, fldname, str.c_str (), - ui_out_style_kind::DEFAULT); + ui_file_style ()); } void @@ -227,14 +203,13 @@ cli_ui_out::do_text (const char *string) } void -cli_ui_out::do_message (ui_out_style_kind style, +cli_ui_out::do_message (const ui_file_style &style, const char *format, va_list args) { if (m_suppress_output) return; - ui_file_style fstyle = style_from_style_kind (style); - vfprintf_styled (m_streams.back (), fstyle, format, args); + vfprintf_styled (m_streams.back (), style, format, args); } void diff --git a/gdb/cli-out.h b/gdb/cli-out.h index 4ed7b396a57..eb519bb4a8d 100644 --- a/gdb/cli-out.h +++ b/gdb/cli-out.h @@ -52,14 +52,14 @@ protected: virtual void do_field_string (int fldno, int width, ui_align align, const char *fldname, const char *string, - ui_out_style_kind style) override; + const ui_file_style &style) override; virtual void do_field_fmt (int fldno, int width, ui_align align, const char *fldname, const char *format, va_list args) override ATTRIBUTE_PRINTF (6,0); virtual void do_spaces (int numspaces) override; virtual void do_text (const char *string) override; - virtual void do_message (ui_out_style_kind style, + virtual void do_message (const ui_file_style &style, const char *format, va_list args) override ATTRIBUTE_PRINTF (3,0); virtual void do_wrap_hint (const char *identstring) override; diff --git a/gdb/disasm.c b/gdb/disasm.c index ed740c26e0f..54401a975b9 100644 --- a/gdb/disasm.c +++ b/gdb/disasm.c @@ -31,6 +31,7 @@ #include #include "common/gdb_optional.h" #include "valprint.h" +#include "cli/cli-style.h" /* Disassemble functions. FIXME: We should get rid of all the duplicate code in gdb that does @@ -245,7 +246,7 @@ gdb_pretty_print_disassembler::pretty_print_insn (struct ui_out *uiout, uiout->text (" <"); if ((flags & DISASSEMBLY_OMIT_FNAME) == 0) uiout->field_string ("func-name", name.c_str (), - ui_out_style_kind::FUNCTION); + function_name_style.style ()); uiout->text ("+"); uiout->field_int ("offset", offset); uiout->text (">:\t"); diff --git a/gdb/mi/mi-out.c b/gdb/mi/mi-out.c index bb52360e540..b8ee8006018 100644 --- a/gdb/mi/mi-out.c +++ b/gdb/mi/mi-out.c @@ -70,9 +70,9 @@ mi_ui_out::do_table_header (int width, ui_align alignment, do_field_int (0, 0, ui_center, "width", width); do_field_int (0, 0, ui_center, "alignment", alignment); do_field_string (0, 0, ui_center, "col_name", col_name.c_str (), - ui_out_style_kind::DEFAULT); + ui_file_style ()); do_field_string (0, width, alignment, "colhdr", col_hdr.c_str (), - ui_out_style_kind::DEFAULT); + ui_file_style ()); close (ui_out_type_tuple); } @@ -102,7 +102,7 @@ mi_ui_out::do_field_int (int fldno, int width, ui_align alignment, xsnprintf (buffer, sizeof (buffer), "%d", value); do_field_string (fldno, width, alignment, fldname, buffer, - ui_out_style_kind::DEFAULT); + ui_file_style ()); } /* Used to omit a field. */ @@ -119,7 +119,7 @@ mi_ui_out::do_field_skip (int fldno, int width, ui_align alignment, void mi_ui_out::do_field_string (int fldno, int width, ui_align align, const char *fldname, const char *string, - ui_out_style_kind style) + const ui_file_style &style) { ui_file *stream = m_streams.back (); field_separator (); @@ -159,7 +159,7 @@ mi_ui_out::do_text (const char *string) } void -mi_ui_out::do_message (ui_out_style_kind style, +mi_ui_out::do_message (const ui_file_style &style, const char *format, va_list args) { } diff --git a/gdb/mi/mi-out.h b/gdb/mi/mi-out.h index 914a44194d4..f01d62f9bf3 100644 --- a/gdb/mi/mi-out.h +++ b/gdb/mi/mi-out.h @@ -58,13 +58,13 @@ protected: const char *fldname) override; virtual void do_field_string (int fldno, int width, ui_align align, const char *fldname, const char *string, - ui_out_style_kind style) override; + const ui_file_style &style) override; virtual void do_field_fmt (int fldno, int width, ui_align align, const char *fldname, const char *format, va_list args) override ATTRIBUTE_PRINTF (6,0); virtual void do_spaces (int numspaces) override; virtual void do_text (const char *string) override; - virtual void do_message (ui_out_style_kind style, + virtual void do_message (const ui_file_style &style, const char *format, va_list args) override ATTRIBUTE_PRINTF (3,0); virtual void do_wrap_hint (const char *identstring) override; diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c index 95ad410f23f..0d084564c20 100644 --- a/gdb/python/py-framefilter.c +++ b/gdb/python/py-framefilter.c @@ -31,6 +31,7 @@ #include "mi/mi-cmds.h" #include "python-internal.h" #include "common/gdb_optional.h" +#include "cli/cli-style.h" enum mi_print_types { @@ -898,7 +899,7 @@ py_print_frame (PyObject *filter, frame_filter_flags flags, if (function == NULL) out->field_skip ("func"); else - out->field_string ("func", function, ui_out_style_kind::FUNCTION); + out->field_string ("func", function, function_name_style.style ()); } } @@ -935,7 +936,7 @@ py_print_frame (PyObject *filter, frame_filter_flags flags, out->text (" at "); annotate_frame_source_file (); out->field_string ("file", filename.get (), - ui_out_style_kind::FILE); + file_name_style.style ()); annotate_frame_source_file_end (); } } diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c index 21085d5c62c..02bc43810f0 100644 --- a/gdb/record-btrace.c +++ b/gdb/record-btrace.c @@ -41,6 +41,7 @@ #include "common/vec.h" #include "inferior.h" #include +#include "cli/cli-style.h" static const target_info record_btrace_target_info = { "record-btrace", @@ -1091,7 +1092,7 @@ btrace_call_history_src_line (struct ui_out *uiout, uiout->field_string ("file", symtab_to_filename_for_display (symbol_symtab (sym)), - ui_out_style_kind::FILE); + file_name_style.style ()); btrace_compute_src_line_range (bfun, &begin, &end); if (end < begin) @@ -1183,13 +1184,13 @@ btrace_call_history (struct ui_out *uiout, if (sym != NULL) uiout->field_string ("function", SYMBOL_PRINT_NAME (sym), - ui_out_style_kind::FUNCTION); + function_name_style.style ()); else if (msym != NULL) uiout->field_string ("function", MSYMBOL_PRINT_NAME (msym), - ui_out_style_kind::FUNCTION); + function_name_style.style ()); else if (!uiout->is_mi_like_p ()) uiout->field_string ("function", "??", - ui_out_style_kind::FUNCTION); + function_name_style.style ()); if ((flags & RECORD_PRINT_INSN_RANGE) != 0) { diff --git a/gdb/skip.c b/gdb/skip.c index 127b11dc443..0578422b99c 100644 --- a/gdb/skip.c +++ b/gdb/skip.c @@ -36,6 +36,7 @@ #include "gdb_regex.h" #include "common/gdb_optional.h" #include +#include "cli/cli-style.h" /* True if we want to print debug printouts related to file/function skipping. */ @@ -414,7 +415,7 @@ info_skip_command (const char *arg, int from_tty) current_uiout->field_string ("file", e.file ().empty () ? "" : e.file ().c_str (), - ui_out_style_kind::FILE); /* 4 */ + file_name_style.style ()); /* 4 */ if (e.function_is_regexp ()) current_uiout->field_string ("regexp", "y"); /* 5 */ else @@ -423,7 +424,7 @@ info_skip_command (const char *arg, int from_tty) current_uiout->field_string ("function", e.function ().empty () ? "" : e.function ().c_str (), - ui_out_style_kind::FUNCTION); /* 6 */ + function_name_style.style ()); /* 6 */ current_uiout->text ("\n"); } diff --git a/gdb/solib.c b/gdb/solib.c index e0b1a921f82..662433d33d1 100644 --- a/gdb/solib.c +++ b/gdb/solib.c @@ -47,6 +47,7 @@ #include "gdb_bfd.h" #include "common/filestuff.h" #include "source.h" +#include "cli/cli-style.h" /* Architecture-specific operations. */ @@ -1104,7 +1105,7 @@ info_sharedlibrary_command (const char *pattern, int from_tty) else uiout->field_string ("syms-read", so->symbols_loaded ? "Yes" : "No"); - uiout->field_string ("name", so->so_name, ui_out_style_kind::FILE); + uiout->field_string ("name", so->so_name, file_name_style.style ()); uiout->text ("\n"); } diff --git a/gdb/source.c b/gdb/source.c index 9a30209880b..3f6f64e1fdd 100644 --- a/gdb/source.c +++ b/gdb/source.c @@ -46,6 +46,7 @@ #include #include "common/pathstuff.h" #include "source-cache.h" +#include "cli/cli-style.h" #define OPEN_MODE (O_RDONLY | O_BINARY) #define FDOPEN_MODE FOPEN_RB @@ -1306,7 +1307,7 @@ print_source_lines_base (struct symtab *s, int line, int stopline, not for TUI. */ if (uiout->is_mi_like_p () || uiout->test_flags (ui_source_list)) uiout->field_string ("file", symtab_to_filename_for_display (s), - ui_out_style_kind::FILE); + file_name_style.style ()); if (uiout->is_mi_like_p () || !uiout->test_flags (ui_source_list)) { const char *s_fullname = symtab_to_fullname (s); diff --git a/gdb/stack.c b/gdb/stack.c index 547e82bbfb2..d8c6fdf550b 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -53,6 +53,7 @@ #include "observable.h" #include "common/def-vector.h" #include "cli/cli-option.h" +#include "cli/cli-style.h" /* The possible choices of "set print frame-arguments", and the value of this setting. */ @@ -341,7 +342,7 @@ print_frame_arg (const frame_print_options &fp_opts, if (arg->entry_kind == print_entry_values_only || arg->entry_kind == print_entry_values_compact) stb.puts ("@entry"); - uiout->field_stream ("name", stb, ui_out_style_kind::VARIABLE); + uiout->field_stream ("name", stb, variable_name_style.style ()); annotate_arg_name_end (); uiout->text ("="); @@ -909,18 +910,18 @@ print_frame_info (const frame_print_options &fp_opts, { annotate_function_call (); uiout->field_string ("func", "", - ui_out_style_kind::FUNCTION); + function_name_style.style ()); } else if (get_frame_type (frame) == SIGTRAMP_FRAME) { annotate_signal_handler_caller (); uiout->field_string ("func", "", - ui_out_style_kind::FUNCTION); + function_name_style.style ()); } else if (get_frame_type (frame) == ARCH_FRAME) { uiout->field_string ("func", "", - ui_out_style_kind::FUNCTION); + function_name_style.style ()); } uiout->text ("\n"); annotate_frame_end (); @@ -1262,7 +1263,7 @@ print_frame (const frame_print_options &fp_opts, uiout->field_core_addr ("addr", gdbarch, pc); else uiout->field_string ("addr", "", - ui_out_style_kind::ADDRESS); + address_style.style ()); annotate_frame_address_end (); uiout->text (" in "); } @@ -1271,7 +1272,7 @@ print_frame (const frame_print_options &fp_opts, string_file stb; fprintf_symbol_filtered (&stb, funname ? funname.get () : "??", funlang, DMGL_ANSI); - uiout->field_stream ("func", stb, ui_out_style_kind::FUNCTION); + uiout->field_stream ("func", stb, function_name_style.style ()); uiout->wrap_hint (" "); annotate_frame_args (); @@ -1313,7 +1314,8 @@ print_frame (const frame_print_options &fp_opts, uiout->wrap_hint (" "); uiout->text (" at "); annotate_frame_source_file (); - uiout->field_string ("file", filename_display, ui_out_style_kind::FILE); + uiout->field_string ("file", filename_display, + file_name_style.style ()); if (uiout->is_mi_like_p ()) { const char *fullname = symtab_to_fullname (sal.symtab); diff --git a/gdb/symfile.c b/gdb/symfile.c index 26762d289ca..903f2ff817b 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -1115,11 +1115,9 @@ symbol_file_add_with_addrs (bfd *abfd, const char *name, if (deprecated_pre_add_symbol_hook) deprecated_pre_add_symbol_hook (name); else - { - puts_filtered (_("Reading symbols from ")); - fputs_styled (name, file_name_style.style (), gdb_stdout); - puts_filtered ("...\n"); - } + current_uiout->message (_("Reading symbols from %ps...\n"), + styled_string (file_name_style.style (), + name).ptr ()); } syms_from_objfile (objfile, addrs, add_flags); @@ -1131,7 +1129,9 @@ symbol_file_add_with_addrs (bfd *abfd, const char *name, if ((flags & OBJF_READNOW)) { if (should_print) - printf_filtered (_("Expanding full symbols from %s...\n"), name); + current_uiout->message (_("Expanding full symbols from %ps...\n"), + styled_string (file_name_style.style (), + name).ptr ()); if (objfile->sf) objfile->sf->qf->expand_all_symtabs (objfile); @@ -1143,7 +1143,9 @@ symbol_file_add_with_addrs (bfd *abfd, const char *name, file, and so printing it twice is just redundant. */ if (should_print && !objfile_has_symbols (objfile) && objfile->separate_debug_objfile == nullptr) - printf_filtered (_("(No debugging symbols found in %s)\n"), name); + current_uiout->message (_("(No debugging symbols found in %ps)\n"), + styled_string (file_name_style.style (), + name).ptr ()); if (should_print) { diff --git a/gdb/symtab.c b/gdb/symtab.c index 7dbf24eb7c5..e5f702ab804 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -4605,7 +4605,7 @@ print_symbol_info (enum search_domain kind, { current_uiout->message (_("\nFile %ps:\n"), - styled_string (ui_out_style_kind::FILE, s_filename).ptr ()); + styled_string (file_name_style.style (), s_filename).ptr ()); } if (SYMBOL_LINE (sym) != 0) @@ -4652,13 +4652,13 @@ print_msymbol_info (struct bound_minimal_symbol msymbol) tmp = hex_string_custom (BMSYMBOL_VALUE_ADDRESS (msymbol), 16); - ui_out_style_kind sym_style = (msymbol.minsym->text_p () - ? ui_out_style_kind::FUNCTION - : ui_out_style_kind::DEFAULT); + ui_file_style sym_style = (msymbol.minsym->text_p () + ? function_name_style.style () + : ui_file_style ()); current_uiout->message (_("%ps %ps\n"), - styled_string (ui_out_style_kind::ADDRESS, tmp).ptr (), + styled_string (address_style.style (), tmp).ptr (), styled_string (sym_style, MSYMBOL_PRINT_NAME (msymbol.minsym)).ptr ()); } diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c index c7585c67839..170c40a3046 100644 --- a/gdb/tracepoint.c +++ b/gdb/tracepoint.c @@ -57,6 +57,7 @@ #include "tracefile.h" #include "location.h" #include +#include "cli/cli-style.h" /* readline include files */ #include "readline/readline.h" @@ -3690,7 +3691,7 @@ print_one_static_tracepoint_marker (int count, { uiout->text ("in "); uiout->field_string ("func", SYMBOL_PRINT_NAME (sym), - ui_out_style_kind::FUNCTION); + function_name_style.style ()); uiout->wrap_hint (wrap_indent); uiout->text (" at "); } @@ -3701,7 +3702,7 @@ print_one_static_tracepoint_marker (int count, { uiout->field_string ("file", symtab_to_filename_for_display (sal.symtab), - ui_out_style_kind::FILE); + file_name_style.style ()); uiout->text (":"); if (uiout->is_mi_like_p ()) diff --git a/gdb/tui/tui-out.c b/gdb/tui/tui-out.c index 5fabff2cf1c..521c519cb75 100644 --- a/gdb/tui/tui-out.c +++ b/gdb/tui/tui-out.c @@ -52,7 +52,7 @@ tui_ui_out::do_field_int (int fldno, int width, ui_align alignment, void tui_ui_out::do_field_string (int fldno, int width, ui_align align, const char *fldname, const char *string, - ui_out_style_kind style) + const ui_file_style &style) { if (suppress_output ()) return; diff --git a/gdb/tui/tui-out.h b/gdb/tui/tui-out.h index edf0b912bef..173027df525 100644 --- a/gdb/tui/tui-out.h +++ b/gdb/tui/tui-out.h @@ -35,7 +35,7 @@ protected: void do_field_int (int fldno, int width, ui_align align, const char *fldname, int value) override; void do_field_string (int fldno, int width, ui_align align, const char *fldname, - const char *string, ui_out_style_kind style) override; + const char *string, const ui_file_style &style) override; void do_field_fmt (int fldno, int width, ui_align align, const char *fldname, const char *format, va_list args) override ATTRIBUTE_PRINTF (6,0); diff --git a/gdb/ui-out.c b/gdb/ui-out.c index 4169fdcb935..e74f685af02 100644 --- a/gdb/ui-out.c +++ b/gdb/ui-out.c @@ -25,6 +25,7 @@ #include "language.h" #include "ui-out.h" #include "common/format.h" +#include "cli/cli-style.h" #include #include @@ -470,12 +471,12 @@ ui_out::field_core_addr (const char *fldname, struct gdbarch *gdbarch, CORE_ADDR address) { field_string (fldname, print_core_address (gdbarch, address), - ui_out_style_kind::ADDRESS); + address_style.style ()); } void ui_out::field_stream (const char *fldname, string_file &stream, - ui_out_style_kind style) + const ui_file_style &style) { if (!stream.empty ()) field_string (fldname, stream.c_str (), style); @@ -500,7 +501,7 @@ ui_out::field_skip (const char *fldname) void ui_out::field_string (const char *fldname, const char *string, - ui_out_style_kind style) + const ui_file_style &style) { int fldno; int width; @@ -548,7 +549,8 @@ ui_out::text (const char *string) } void -ui_out::call_do_message (ui_out_style_kind style, const char *format, ...) +ui_out::call_do_message (const ui_file_style &style, const char *format, + ...) { va_list args; @@ -562,7 +564,7 @@ ui_out::message (const char *format, ...) { format_pieces fpieces (&format, true); - ui_out_style_kind style = ui_out_style_kind::DEFAULT; + ui_file_style style; va_list args; va_start (args, format); @@ -618,13 +620,13 @@ ui_out::message (const char *format, ...) call_do_message (ss->style (), "%s", ss->str ()); } break; - case 'S': - style = *va_arg (args, ui_out_style_kind *); - break; - case 'N': - va_arg (args, void *); - style = ui_out_style_kind::DEFAULT; - break; + /* case 'S': */ + /* style = *va_arg (args, const ui_file_style *); */ + /* break; */ + /* case 'N': */ + /* va_arg (args, void *); */ + /* style = nullptr; */ + /* break; */ default: call_do_message (style, current_substring, va_arg (args, void *)); break; diff --git a/gdb/ui-out.h b/gdb/ui-out.h index 059d1e376aa..f4c3857fe2d 100644 --- a/gdb/ui-out.h +++ b/gdb/ui-out.h @@ -26,6 +26,7 @@ #include #include "common/enum-flags.h" +#include "ui-style.h" class ui_out_level; class ui_out_table; @@ -67,22 +68,6 @@ enum ui_out_type ui_out_type_list }; -/* Possible kinds of styling. */ - -enum class ui_out_style_kind -{ - /* The default (plain) style. */ - DEFAULT, - /* File name. */ - FILE, - /* Function name. */ - FUNCTION, - /* Variable name. */ - VARIABLE, - /* Address. */ - ADDRESS -}; - struct int_field { int_field (const char *name, int val) @@ -105,7 +90,7 @@ private: struct styled_string { - styled_string (ui_out_style_kind style, const char *str) + styled_string (const ui_file_style &style, const char *str) : m_style (style), m_str (str) { @@ -115,32 +100,14 @@ struct styled_string va_args. */ const styled_string *ptr () const { return this; } - ui_out_style_kind style () const {return m_style; } + const ui_file_style &style () const { return m_style; } const char *str () const {return m_str; } private: - ui_out_style_kind m_style; + ui_file_style m_style; const char *m_str; }; -/* Wrap a ui_out_style_kind in a pointer to a temporary. */ - -/* XXX: Make a template? */ -struct ptrS -{ - ptrS (ui_out_style_kind t) : m_t (t) {} - - const ui_out_style_kind *ptr () const { return &m_t; } - - ui_out_style_kind m_t; -}; - -static inline const ui_out_style_kind * -ptr (ptrS &&t) -{ - return t.ptr (); -} - class ui_out { public: @@ -171,10 +138,10 @@ class ui_out void field_core_addr (const char *fldname, struct gdbarch *gdbarch, CORE_ADDR address); void field_string (const char *fldname, const char *string, - ui_out_style_kind style = ui_out_style_kind::DEFAULT); + const ui_file_style &style = ui_file_style ()); void field_string (const char *fldname, const std::string &string); void field_stream (const char *fldname, string_file &stream, - ui_out_style_kind style = ui_out_style_kind::DEFAULT); + const ui_file_style &style = ui_file_style ()); void field_skip (const char *fldname); void field_fmt (const char *fldname, const char *format, ...) ATTRIBUTE_PRINTF (3, 4); @@ -219,14 +186,14 @@ class ui_out const char *fldname) = 0; virtual void do_field_string (int fldno, int width, ui_align align, const char *fldname, const char *string, - ui_out_style_kind style) = 0; + const ui_file_style &style) = 0; virtual void do_field_fmt (int fldno, int width, ui_align align, const char *fldname, const char *format, va_list args) ATTRIBUTE_PRINTF (6,0) = 0; virtual void do_spaces (int numspaces) = 0; virtual void do_text (const char *string) = 0; - virtual void do_message (ui_out_style_kind style, + virtual void do_message (const ui_file_style &style, const char *format, va_list args) ATTRIBUTE_PRINTF (3,0) = 0; virtual void do_wrap_hint (const char *identstring) = 0; @@ -240,7 +207,8 @@ class ui_out { return false; } private: - void call_do_message (ui_out_style_kind style, const char *format, ...); + void call_do_message (const ui_file_style &style, const char *format, + ...); ui_out_flags m_flags;