Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <palves@redhat.com>
To: Simon Marchi <simon.marchi@ericsson.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH 4/6] Constify some parameters in the varobj code
Date: Tue, 03 Feb 2015 16:55:00 -0000	[thread overview]
Message-ID: <54D0FD8D.5050408@redhat.com> (raw)
In-Reply-To: <1422559716-5480-4-git-send-email-simon.marchi@ericsson.com>

On 01/29/2015 08:28 PM, Simon Marchi wrote:
> To make it clear that some functions should not modify the variable
> object, this patch adds the const qualifier where it makes sense to some
> struct varobj * parameters. Most getters should take a const pointer to
> guarantee they don't modify the object.
> 
> Unfortunately, I couldn't add it to some callbacks (such as name_of_child).
> In the C implementation, they call c_describe_child, which calls
> varobj_get_path_expr. varobj_get_path_expr needs to modify the object in
> order to cache the computed value. It therefore can't take a const
> pointer, and it affects the whole call chain. I suppose that's where you
> would use a "mutable" in C++.

FYI, in these cases it's totally fine to have the function take a const pointer,
and then cast away the const inside the function.  We do exactly that in
a few places.  E.g.:

/* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
   in the language-specific part of GSYMBOL, if it has not been
   previously computed.  Tries to save the decoded name in the same
   obstack as GSYMBOL, if possible, and otherwise on the heap (so that,
   in any case, the decoded symbol has a lifetime at least that of
   GSYMBOL).
   The GSYMBOL parameter is "mutable" in the C++ sense: logically
   const, but nevertheless modified to a semantically equivalent form
   when a decoded name is cached in it.  */

const char *
ada_decode_symbol (const struct general_symbol_info *arg)
{
  struct general_symbol_info *gsymbol = (struct general_symbol_info *) arg;
...

Thanks,
Pedro Alves


  parent reply	other threads:[~2015-02-03 16:55 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-29 19:29 [PATCH 1/6] Free results of varobj_get_expression Simon Marchi
2015-01-30  1:56 ` [PATCH 3/6] Set varobj->path_expr in varobj_get_path_expr Simon Marchi
2015-01-30 18:55   ` Joel Brobecker
2015-01-30 22:58     ` Simon Marchi
2015-01-30  3:13 ` [PATCH 2/6] Mention which return values need to be freed in lang_varobj_ops Simon Marchi
2015-01-30  8:19   ` Joel Brobecker
2015-01-30 20:10     ` Simon Marchi
2015-01-31 20:06       ` Joel Brobecker
2015-02-02 18:18         ` Simon Marchi
2015-01-30  3:28 ` [PATCH 6/6] Fix varobj_delete comment Simon Marchi
2015-01-30 17:04   ` Joel Brobecker
2015-01-31  3:20     ` Simon Marchi
2015-01-30  3:33 ` [PATCH 5/6] Mention that create_child takes ownership of the allocated name Simon Marchi
2015-01-30 16:41   ` Joel Brobecker
2015-01-31  1:14     ` Simon Marchi
2015-01-30  3:35 ` [PATCH 4/6] Constify some parameters in the varobj code Simon Marchi
2015-01-30  9:03   ` Joel Brobecker
2015-01-30 22:59     ` Simon Marchi
2015-02-03 16:55   ` Pedro Alves [this message]
2015-02-03 18:07     ` Simon Marchi
2015-01-30  3:40 ` [PATCH 1/6] Free results of varobj_get_expression Joel Brobecker
2015-01-30 22:57   ` Simon Marchi

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=54D0FD8D.5050408@redhat.com \
    --to=palves@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=simon.marchi@ericsson.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