public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Andrew Burgess <aburgess@redhat.com>
To: Tom Tromey <tom@tromey.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 07/18] Remove language_defn::emitchar
Date: Wed, 16 Feb 2022 16:12:00 +0000	[thread overview]
Message-ID: <20220216161200.GK2571@redhat.com> (raw)
In-Reply-To: <20220216135518.3162480-8-tom@tromey.com>

* Tom Tromey <tom@tromey.com> [2022-02-16 06:55:07 -0700]:

> Nothing outside of the specific language implementations ever calls
> language_defn::emitchar.  This patch removes this method and updates
> the rest of the code.  In some spots, the method is entirely removed;
> in others, just the 'override' is removed.

This looks good.  My only feedback would be that for pascal_language
and m2_language, it would be nice if the emitchar function was made
private.  Maybe that would be better done in a separate commit though,
so that the diff in this one is smaller, and focuses just on the core
change.

Also, I've not looked ahead yet, so maybe this problem is already
solved by a later commit.

Thanks,
Andrew


> ---
>  gdb/ada-lang.c  |  8 --------
>  gdb/c-lang.c    | 19 +++----------------
>  gdb/f-lang.h    | 12 ++----------
>  gdb/language.c  |  9 ---------
>  gdb/language.h  |  6 ------
>  gdb/m2-lang.h   |  2 +-
>  gdb/p-lang.h    |  2 +-
>  gdb/rust-lang.c | 10 ++++++----
>  gdb/rust-lang.h | 12 +-----------
>  9 files changed, 14 insertions(+), 66 deletions(-)
> 
> diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
> index d2f620cbb04..e3bd1fa7c17 100644
> --- a/gdb/ada-lang.c
> +++ b/gdb/ada-lang.c
> @@ -13317,14 +13317,6 @@ class ada_language : public language_defn
>  
>    /* See language.h.  */
>  
> -  void emitchar (int ch, struct type *chtype,
> -		 struct ui_file *stream, int quoter) const override
> -  {
> -    ada_emit_char (ch, chtype, stream, quoter, 1);
> -  }
> -
> -  /* See language.h.  */
> -
>    void printchar (int ch, struct type *chtype,
>  		  struct ui_file *stream) const override
>    {
> diff --git a/gdb/c-lang.c b/gdb/c-lang.c
> index fbbecb696b9..1a6e6969a84 100644
> --- a/gdb/c-lang.c
> +++ b/gdb/c-lang.c
> @@ -139,20 +139,6 @@ classify_type (struct type *elttype, struct gdbarch *gdbarch,
>    return result;
>  }
>  
> -/* Print the character C on STREAM as part of the contents of a
> -   literal string whose delimiter is QUOTER.  Note that that format
> -   for printing characters and strings is language specific.  */
> -
> -void
> -language_defn::emitchar (int c, struct type *type,
> -			 struct ui_file *stream, int quoter) const
> -{
> -  const char *encoding;
> -
> -  classify_type (type, type->arch (), &encoding);
> -  generic_emit_char (c, type, stream, quoter, encoding);
> -}
> -
>  /* See language.h.  */
>  
>  void
> @@ -160,8 +146,9 @@ language_defn::printchar (int c, struct type *type,
>  			  struct ui_file * stream) const
>  {
>    c_string_type str_type;
> +  const char *encoding;
>  
> -  str_type = classify_type (type, type->arch (), NULL);
> +  str_type = classify_type (type, type->arch (), &encoding);
>    switch (str_type)
>      {
>      case C_CHAR:
> @@ -178,7 +165,7 @@ language_defn::printchar (int c, struct type *type,
>      }
>  
>    fputc_filtered ('\'', stream);
> -  emitchar (c, type, stream, '\'');
> +  generic_emit_char (c, type, stream, '\'', encoding);
>    fputc_filtered ('\'', stream);
>  }
>  
> diff --git a/gdb/f-lang.h b/gdb/f-lang.h
> index 11debd5569f..388c832dcdb 100644
> --- a/gdb/f-lang.h
> +++ b/gdb/f-lang.h
> @@ -149,20 +149,12 @@ class f_language : public language_defn
>  
>    /* See language.h.  */
>  
> -  void emitchar (int ch, struct type *chtype,
> -		 struct ui_file *stream, int quoter) const override
> -  {
> -    const char *encoding = get_encoding (chtype);
> -    generic_emit_char (ch, chtype, stream, quoter, encoding);
> -  }
> -
> -  /* See language.h.  */
> -
>    void printchar (int ch, struct type *chtype,
>  		  struct ui_file *stream) const override
>    {
>      fputs_filtered ("'", stream);
> -    emitchar (ch, chtype, stream, '\'');
> +    const char *encoding = get_encoding (chtype);
> +    generic_emit_char (ch, chtype, stream, '\'', encoding);
>      fputs_filtered ("'", stream);
>    }
>  
> diff --git a/gdb/language.c b/gdb/language.c
> index 20b6d8ccf9b..dff9f8bdaf9 100644
> --- a/gdb/language.c
> +++ b/gdb/language.c
> @@ -786,15 +786,6 @@ class auto_or_unknown_language : public language_defn
>  
>    /* See language.h.  */
>  
> -  void emitchar (int ch, struct type *chtype,
> -		 struct ui_file *stream, int quoter) const override
> -  {
> -    error (_("emit character not implemented for language \"%s\""),
> -	   natural_name ());
> -  }
> -
> -  /* See language.h.  */
> -
>    void printchar (int ch, struct type *chtype,
>  		  struct ui_file *stream) const override
>    {
> diff --git a/gdb/language.h b/gdb/language.h
> index f2885000259..2820eca0050 100644
> --- a/gdb/language.h
> +++ b/gdb/language.h
> @@ -524,12 +524,6 @@ struct language_defn
>  
>    virtual int parser (struct parser_state *ps) const;
>  
> -  /* Print the character CH (of type CHTYPE) on STREAM as part of the
> -     contents of a literal string whose delimiter is QUOTER.  */
> -
> -  virtual void emitchar (int ch, struct type *chtype,
> -			 struct ui_file *stream, int quoter) const;
> -
>    virtual void printchar (int ch, struct type *chtype,
>  			  struct ui_file * stream) const;
>  
> diff --git a/gdb/m2-lang.h b/gdb/m2-lang.h
> index 86a093e5f1b..ee2fc6fb8bc 100644
> --- a/gdb/m2-lang.h
> +++ b/gdb/m2-lang.h
> @@ -93,7 +93,7 @@ class m2_language : public language_defn
>    /* See language.h.  */
>  
>    void emitchar (int ch, struct type *chtype,
> -		 struct ui_file *stream, int quoter) const override;
> +		 struct ui_file *stream, int quoter) const;
>  
>    /* See language.h.  */
>  
> diff --git a/gdb/p-lang.h b/gdb/p-lang.h
> index 429ef23aea4..b831bde0af6 100644
> --- a/gdb/p-lang.h
> +++ b/gdb/p-lang.h
> @@ -110,7 +110,7 @@ class pascal_language : public language_defn
>    /* See language.h.  */
>  
>    void emitchar (int ch, struct type *chtype,
> -		 struct ui_file *stream, int quoter) const override
> +		 struct ui_file *stream, int quoter) const
>    {
>      int in_quotes = 0;
>  
> diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c
> index 3668d2d0c6d..41e973797d2 100644
> --- a/gdb/rust-lang.c
> +++ b/gdb/rust-lang.c
> @@ -1592,13 +1592,14 @@ rust_language::print_type (struct type *type, const char *varstring,
>  /* See language.h.  */
>  
>  void
> -rust_language::emitchar (int ch, struct type *chtype,
> -			 struct ui_file *stream, int quoter) const
> +rust_language::printchar (int ch, struct type *chtype,
> +			  struct ui_file *stream) const
>  {
> +  fputs_filtered ("'", stream);
>    if (!rust_chartype_p (chtype))
> -    generic_emit_char (ch, chtype, stream, quoter,
> +    generic_emit_char (ch, chtype, stream, '\'',
>  		       target_charset (chtype->arch ()));
> -  else if (ch == '\\' || ch == quoter)
> +  else if (ch == '\\')
>      fprintf_filtered (stream, "\\%c", ch);
>    else if (ch == '\n')
>      fputs_filtered ("\\n", stream);
> @@ -1614,6 +1615,7 @@ rust_language::emitchar (int ch, struct type *chtype,
>      fprintf_filtered (stream, "\\x%02x", ch);
>    else
>      fprintf_filtered (stream, "\\u{%06x}", ch);
> +  fputs_filtered ("'", stream);
>  }
>  
>  /* See language.h.  */
> diff --git a/gdb/rust-lang.h b/gdb/rust-lang.h
> index 60a1967ff45..1db83fe75ae 100644
> --- a/gdb/rust-lang.h
> +++ b/gdb/rust-lang.h
> @@ -170,18 +170,8 @@ class rust_language : public language_defn
>  
>    /* See language.h.  */
>  
> -  void emitchar (int ch, struct type *chtype,
> -		 struct ui_file *stream, int quoter) const override;
> -
> -  /* See language.h.  */
> -
>    void printchar (int ch, struct type *chtype,
> -		  struct ui_file *stream) const override
> -  {
> -    fputs_filtered ("'", stream);
> -    emitchar (ch, chtype, stream, '\'');
> -    fputs_filtered ("'", stream);
> -  }
> +		  struct ui_file *stream) const override;
>  
>    /* See language.h.  */
>  
> -- 
> 2.31.1
> 


  reply	other threads:[~2022-02-16 16:12 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-16 13:55 [PATCH 00/18] Refactor character printing Tom Tromey
2022-02-16 13:55 ` [PATCH 01/18] Fix latent quote char bug in generic_printstr Tom Tromey
2022-02-16 15:38   ` Andrew Burgess
2022-02-16 13:55 ` [PATCH 02/18] Boolify need_escape in generic_emit_char Tom Tromey
2022-02-16 15:39   ` Andrew Burgess
2022-02-16 13:55 ` [PATCH 03/18] Remove c_emit_char Tom Tromey
2022-02-16 15:40   ` Andrew Burgess
2022-02-16 13:55 ` [PATCH 04/18] Remove c_printstr Tom Tromey
2022-02-16 15:46   ` Andrew Burgess
2022-02-16 13:55 ` [PATCH 05/18] Don't use wchar_printable in print_wchar Tom Tromey
2022-02-16 15:52   ` Andrew Burgess
2022-02-16 13:55 ` [PATCH 06/18] Fix a latent bug " Tom Tromey
2022-02-16 16:02   ` Andrew Burgess
2022-02-17 22:02     ` Tom Tromey
2022-02-16 13:55 ` [PATCH 07/18] Remove language_defn::emitchar Tom Tromey
2022-02-16 16:12   ` Andrew Burgess [this message]
2022-02-17 22:02     ` Tom Tromey
2022-02-16 13:55 ` [PATCH 08/18] Add gdb_iswcntrl Tom Tromey
2022-02-16 16:13   ` Andrew Burgess
2022-02-16 13:55 ` [PATCH 09/18] Include \0 in printable wide characters Tom Tromey
2022-02-16 17:19   ` Andrew Burgess
2022-02-16 13:55 ` [PATCH 10/18] Use a ui_file in print_wchar Tom Tromey
2022-02-16 17:25   ` Andrew Burgess
2022-02-16 13:55 ` [PATCH 11/18] Add an emitter callback to generic_printstr and generic_emit_char Tom Tromey
2022-02-16 17:47   ` Andrew Burgess
2022-02-16 20:40     ` Tom Tromey
2022-02-16 21:00       ` Tom Tromey
2022-02-16 13:55 ` [PATCH 12/18] Add a default encoding to generic_emit_char and generic_printstr Tom Tromey
2022-02-16 13:55 ` [PATCH 13/18] Change generic_emit_char to print the quotes Tom Tromey
2022-02-16 13:55 ` [PATCH 14/18] Use generic_emit_char in Rust Tom Tromey
2022-02-16 13:55 ` [PATCH 15/18] Use generic_emit_char in Ada Tom Tromey
2022-02-16 13:55 ` [PATCH 16/18] Use generic_emit_char in Modula-2 Tom Tromey
2022-02-16 13:55 ` [PATCH 17/18] Use generic_emit_char in Pascal Tom Tromey
2022-02-16 13:55 ` [PATCH 18/18] Simplify Fortran string printing Tom Tromey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220216161200.GK2571@redhat.com \
    --to=aburgess@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=tom@tromey.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).