Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi <simark@simark.ca>
To: Tom Tromey <tom@tromey.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH] Make BLOCK_START and BLOCK_END into rvalues
Date: Sat, 16 May 2020 12:15:03 -0400	[thread overview]
Message-ID: <edb8c0bb-a21a-40be-b63c-20b2ddd27ed6@simark.ca> (raw)
In-Reply-To: <20200516151021.7080-1-tom@tromey.com>

On 2020-05-16 11:10 a.m., Tom Tromey wrote:
> This changes the BLOCK_START and BLOCK_END macros to expand to
> rvalues, and then updates some code to assign to these fields
> directly.
> 
> I considered adding setters here, but that seemed a bit needless,
> given that these are "open" structures.  However, I can do that if
> it's preferable.  Note that when the time comes to remove the
> BLOCK_START and BLOCK_END macros, I think they will be replaced with
> methods, because that will make it simpler to achieve objfile
> independence for blocks.

This is similar to what I'm doing to struct type, so it would be nice to agree
on the way forward for all these structures, and change them in a consistent
manner.

What I'm doing/considering for struct type is to add getters / setters for all
properties.  The fields themselves should really become private, but it's
probably not possible to do it right now, since the structures need to remain
POD.  I think we could still prefix them with `m_` while leaving them public,
doing so will make sure to catch any place that was accessing the field directly,
not using the macro.  And when writing new code, it will be semi-obvious by the
naming that you shouldn't access the field directly.

Also, the getter can't have the same name as the field, so in some cases that
would be another reason to rename the field.  Although in the case of this patch,
I would name the getters simply `start` and `end`, just like the macros are
named `..._START` and `..._END`, so there's no conflict (we could still rename
the fields to `m_start` and `m_end` for consistency).

Since you are changing the places that modify the field values, I'd suggest
adding the setter right away, it's a step in the right direction.

And I'd suggest adding the getter too, changing the BLOCK_START macro to use
it, it shouldn't be much more work.  And it will achieve the goal of making
the macro yield an rvalue.

If you want, I can look into removing the macros after that, like I do for
the type macros.

Simon


  reply	other threads:[~2020-05-16 16:15 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-16 15:10 Tom Tromey
2020-05-16 16:15 ` Simon Marchi [this message]
2020-05-17 14:05   ` Tom Tromey
2020-05-17 14:40     ` Simon Marchi
2020-05-16 16:36 ` Christian Biesinger

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=edb8c0bb-a21a-40be-b63c-20b2ddd27ed6@simark.ca \
    --to=simark@simark.ca \
    --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