public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Lancelot SIX <lsix@lancelotsix.com>
To: Tom Tromey <tom@tromey.com>
Cc: Lancelot SIX via Gdb-patches <gdb-patches@sourceware.org>
Subject: Re: [PATCH 15/16] gdb: make cmd_list_element var an optional union
Date: Thu, 29 Jul 2021 20:12:35 +0000	[thread overview]
Message-ID: <20210729201235.h4b7mbvzxu2rnckr@ubuntu.lan> (raw)
In-Reply-To: <87eebhau75.fsf@tromey.com>

On Thu, Jul 29, 2021 at 11:47:10AM -0600, Tom Tromey wrote:
> >>>>> "Lancelot" == Lancelot SIX <lsix@lancelotsix.com> writes:
> 
> Lancelot> Would you prefer to have something like var.get<var_string> () return a
> Lancelot> string happily if var is lets say a var_filename but fail if it is a
> Lancelot> var_boolean?
> 
> Yeah.
> 
> Lancelot> I guess it is possible, but I did intentionally went for a very explicit
> Lancelot> approach.  The idea is to have the user of the class state that he is
> Lancelot> aware he will access a data of a given type that can be interpreted in
> Lancelot> different ways.  This kind of makes more sense when dealing with the
> Lancelot> various var_*integer* types where the same value can have different
> Lancelot> meaning depending on the effective var_type.
> 
> I don't understand how to reconcile this with the idea that one could
> pass in a bunch of var_ parameters and get some result back.
> Like does get<var_integer, var_zinteger> work?

Yes, given that both var_integer and var_zinteger use a int*, this would
work. However, something like get<var_uinteger, var_zuienteger> will
fail to compile because var_uinteger uses unsigned int* while
var_zuinteger uses a int*.

> 
> I guess the argument would be that the author of that line is supposed
> to understand what's happening and that the meaning of the value might
> "vary"?

It is the original idea.  Multiple "var_types" can share the same
storage type while still being different logical types (a given value is
to be interpreted differently based on the actual type).  The original
idea was to use it in a 'get<var_sometype>' way but this was conflicting
with how this is used.  I followed that path to see where it lead.

> For me that seems to add a bunch of extra template code but
> without any real gain in safety.

I’ll revisit all of this in a V2 later.  I was worried about the amount
of template boilerplate this adds compared to the value it brings, I
should have worried a bit more!  If I strip the extra template noise,
this can come down to some get_string/set_string/get_int/set_int and so
on.  The 'get<var_?>' can be a light abstraction on top of that, if ever
needed (I am not sure it is).

Thanks for the comments, much appreciated.

Best,
Lancelot.

> 
> Tom

  reply	other threads:[~2021-07-29 20:12 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-14  4:55 [PATCH 00/16] Bunch of commands related cleanups Simon Marchi
2021-07-14  4:55 ` [PATCH 01/16] gdb/testsuite: split gdb.python/py-parameter.exp in procs Simon Marchi
2021-07-14  4:55 ` [PATCH 02/16] gdb.base/setshow.exp: use save_vars to save/restore gdb_prompt Simon Marchi
2021-07-14  4:55 ` [PATCH 03/16] gdb.base/setshow.exp: split in procs Simon Marchi
2021-07-14  4:55 ` [PATCH 04/16] gdb.base/setshow.exp: fix duplicate test name Simon Marchi
2021-07-14  4:55 ` [PATCH 05/16] gdb: un-share set_inferior_cwd declaration Simon Marchi
2021-07-14  4:55 ` [PATCH 06/16] gdb: remove inferior::{argc,argv} Simon Marchi
2021-07-14  4:55 ` [PATCH 07/16] gdb: add setter/getter for inferior arguments Simon Marchi
2021-07-14  4:55 ` [PATCH 08/16] gdb: add setter/getter for inferior cwd Simon Marchi
2021-07-14  4:55 ` [PATCH 09/16] gdb: make inferior::m_args an std::string Simon Marchi
2021-07-14  4:55 ` [PATCH 10/16] gdb: make inferior::m_cwd " Simon Marchi
2021-07-14  4:55 ` [PATCH 11/16] gdb: make inferior::m_terminal " Simon Marchi
2021-07-14  4:55 ` [PATCH 12/16] gdb: rename cfunc to simple_func Simon Marchi
2021-07-14  4:55 ` [PATCH 13/16] gdb: remove cmd_list_element::function::sfunc Simon Marchi
2021-07-28 19:10   ` Tom Tromey
2021-07-28 21:17     ` Simon Marchi
2021-07-29 17:33       ` Tom Tromey
2021-07-14  4:55 ` [PATCH 14/16] gdb/testsuite: test get/set value of unregistered Guile parameter Simon Marchi
2021-07-23 19:42   ` Simon Marchi
2021-07-14  4:55 ` [PATCH 15/16] gdb: make cmd_list_element var an optional union Simon Marchi
2021-07-14 12:08   ` Lancelot SIX
2021-07-14 17:12     ` Lancelot SIX
2021-07-14 19:22       ` Simon Marchi
2021-07-14 23:22         ` Lancelot SIX
2021-07-19 14:32           ` Simon Marchi
2021-07-19 19:52             ` Simon Marchi
2021-07-20 23:03               ` Lancelot SIX
2021-07-23 19:56                 ` Simon Marchi
2021-07-23 20:46                   ` Lancelot SIX
2021-07-23 21:15                     ` Simon Marchi
2021-07-23 22:55                       ` Lancelot SIX
2021-07-24  2:04                         ` Simon Marchi
2021-07-28 20:13                 ` Tom Tromey
2021-07-28 20:45                   ` Lancelot SIX
2021-07-29 17:47                     ` Tom Tromey
2021-07-29 20:12                       ` Lancelot SIX [this message]
2021-07-30  2:09                         ` Simon Marchi
2021-07-30 17:47                           ` Lancelot SIX
2021-07-18 15:44   ` Lancelot SIX
2021-07-19 14:19     ` Simon Marchi
2021-07-19 20:58       ` Lancelot SIX
2021-07-28 19:47   ` Tom Tromey
2021-07-28 20:59     ` Simon Marchi
2021-07-29 17:41       ` Tom Tromey
2021-07-29 17:44         ` Simon Marchi
2021-07-29 17:49           ` Tom Tromey
2021-07-29 18:00             ` Simon Marchi
2021-07-14  4:55 ` [PATCH 16/16] gdb: make string-like set show commands use std::string variable Simon Marchi
2021-07-28 20:27   ` Tom Tromey
2021-07-28 21:03     ` 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=20210729201235.h4b7mbvzxu2rnckr@ubuntu.lan \
    --to=lsix@lancelotsix.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).