Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Trevor Saunders <tbsaunde@tbsaunde.org>
To: Tom Tromey <tom@tromey.com>
Cc: gdb-patches@sourceware.org
Subject: Re: [RFA 1/5] Remove some ui_out-related cleanups from Python
Date: Mon, 16 Jan 2017 11:19:00 -0000	[thread overview]
Message-ID: <20170116113021.sar3yh5ivykpqmbw@ball> (raw)
In-Reply-To: <20170115134253.24018-2-tom@tromey.com>

> +++ b/gdb/common/gdb_option.h

might be nice to put it in include/ but fine to do that later when
something else actually wants it.

> +/* This class attempts to be a compatible subset of std::optional,
> +   which is slated to be available in C++17.  This class optionally
> +   holds an object of some type -- by default it is constructed not
> +   holding an object, but later the object can be "emplaced".  This is
> +   similar to using std::unique_ptr, but stack allocation is
> +   guaranteed.  */

 wording nit, but stack isn't quiet what you want there, I can imagine
 putting an optional<T> in some object that lives on the heap.

> +template<typename T>
> +class optional
> +{
> +public:
> +
> +  optional ()
> +    : m_instantiated (false)
> +  {
> +  }
> +
> +  ~optional ()
> +  {
> +    if (m_instantiated)
> +      destroy ();
> +  }
> +
> +  /* These aren't deleted in std::optional, but it was simpler to
> +     delete them here, because currently the users of this class don't
> +     need them, and making them depend on the definition of T is
> +     somewhat complicated.  */

I think you can make <type_traits> do most of it, but fair enough.

> +  /* True if the object was ever emplaced.  */
> +  bool m_instantiated;
> +
> +  /* The object.  */
> +  union
> +  {
> +    struct { } m_dummy;
> +    T m_item;
> +  };

It doesn't matter yet, but space wise it would be better to put the bool
last right? For example if sizeof(T) is 6, or if the optional is in some
larger structure with a bool next.

Trev


  parent reply	other threads:[~2017-01-16 11:19 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-15 13:43 [RFA 0/5] more cleanup removal in Python Tom Tromey
2017-01-15 13:43 ` [RFA 4/5] Change one more spot to use gdbpy_ref Tom Tromey
2017-02-09 12:52   ` Pedro Alves
2017-01-15 13:43 ` [RFA 3/5] Introduce gdbpy_subclass and use it to simplify some logic Tom Tromey
2017-01-24 20:21   ` Simon Marchi
2017-02-09 11:44     ` Pedro Alves
2017-02-09 18:52       ` Tom Tromey
2017-02-09 13:00   ` Pedro Alves
2017-01-15 13:43 ` [RFA 1/5] Remove some ui_out-related cleanups from Python Tom Tromey
2017-01-15 21:52   ` Simon Marchi
2017-01-16 16:13     ` Tom Tromey
2017-01-16 11:19   ` Trevor Saunders [this message]
2017-02-08 17:28     ` Pedro Alves
2017-02-08 22:27       ` Pedro Alves
2017-02-08 23:05       ` Tom Tromey
2017-02-08 23:52         ` Pedro Alves
2017-02-09  4:34           ` Matt Rice
2017-02-09 12:48             ` Pedro Alves
2017-02-09 12:51               ` Pedro Alves
2017-02-09 15:46                 ` Matt Rice
2017-02-09 16:04                   ` Simon Marchi
2017-02-10  6:47       ` Trevor Saunders
2017-01-15 13:43 ` [RFA 2/5] Introduce ui_file_up and use it to remove cleanups Tom Tromey
2017-01-16  9:59   ` Trevor Saunders
2017-01-16 17:58   ` Pedro Alves
2017-01-16 19:08     ` Tom Tromey
2017-01-17  1:40       ` Pedro Alves
2017-01-17 19:05         ` Tom Tromey
2017-01-15 13:43 ` [RFA 5/5] Remove some gotos from Python Tom Tromey
2017-02-09 13:03   ` Pedro Alves

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=20170116113021.sar3yh5ivykpqmbw@ball \
    --to=tbsaunde@tbsaunde.org \
    --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