Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Doug Evans <dje@google.com>
To: Joel Brobecker <brobecker@adacore.com>
Cc: Yao Qi <yao@codesourcery.com>,    gdb-patches@sourceware.org
Subject: Re: [PATCH 4/7] Move struct varobj to varobj.h.
Date: Wed, 02 Oct 2013 19:32:00 -0000	[thread overview]
Message-ID: <21068.29897.907653.959807@ruffy.mtv.corp.google.com> (raw)
In-Reply-To: <20131002094636.GC2971@adacore.com>

Joel Brobecker writes:
 > > This patch moves most of the fields of struct varobj to varobj.h, and
 > > continue to name it 'struct varobj.h' there.  New struct
 > > varobj_dynamic 'extends' struct varobj in varobj.c.
 > > 
 > > Move part of struct varobj to varobj.h
 > > 
 > > gdb:
 > > 
 > > 2013-09-18  Yao Qi  <yao@codesourcery.com>
 > > 
 > > 	* varobj.c (struct varobj): Move most of the fields to
 > > 	varobj.h.
 > > 	(struct varobj_dynamic): New struct.
 > > 	(varobj_get_display_hint) [HAVE_PYTHON]: Cast 'var' to type
 > > 	'struct varobj_dynamic'.
 > > 	(varobj_has_more): Likewise.
 > > 	(dynamic_varobj_has_child_method): Change type of parameter
 > > 	'var' to 'struct varobj_dynamic *'.
 > > 	(update_dynamic_varobj_children): Likewise.
 > > 	(install_visualizer): Likewise.
 > > 	(install_default_visualizer, construct_visualizer): Likewise.
 > > 	(varobj_get_num_children): Likewise.
 > > 	(dynamic_varobj_has_child_method): Adjust.
 > > 	(varobj_list_children, varobj_get_attributes): Likewise.
 > > 	(varobj_set_value, install_new_value): Likewise.
 > > 	(varobj_update, new_variable): Likewise.
 > > 	(my_value_of_variable, value_get_print_value): Likewise.
 > > 	* varobj.h (struct varobj): Moved from varobj.c.
 > 
 > Overall, I like the direction that the whole series is taking.

Me too.

 > But this is a patch that makes me a little uncomfortable, because
 > I am not sure really want to introduce this kind of polymorphism
 > where we cast struct varobj into struct varobj_dynamic.

Me too. :-)

 > I would
 > need to think about it some more - it seems to me that at the root
 > of things, we are always manipulating a varobj_dynamic so it is
 > always safe to cast it.  But this then begs the question why not
 > declare them as struct varobj_dynamic in the first place. The answer
 > is probably that we don't want to expose too much of struct varobj,
 > and in particular the part dealing with dynamicity and pretty-printers.

We don't have "private" but, heh, Python doesn't either except by convention.
So ... we *could* have a similar convention.
Just a thought for discussion's sake ... :-)
[If C++ is around the corner one might punt, though it couldn't hurt
to document (in some way) what's private and what's not today.]

 > Perhaps, and this is thinking out loud, another approach would be
 > to make this data part of the public struct varobj, but inside
 > an opaque structure?

"works for me"
There's only one constructor (I think), it could handle the details.

 > I'd really like feedback from other maintainers who have experience
 > in this area...

IWBN to have something that didn't use casting alright.


  reply	other threads:[~2013-10-02 19:32 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-18 13:55 [RFC 0/7] Move language-related stuff out of varobj.c Yao Qi
2013-09-18 13:55 ` [PATCH 1/7] Remove field language in struct language_specific Yao Qi
2013-10-01 10:03   ` Joel Brobecker
2013-10-01 13:35     ` Yao Qi
2013-09-18 13:55 ` [PATCH 3/7] Remove field value_of_root Yao Qi
2013-10-01 10:16   ` Joel Brobecker
2013-10-01 13:52     ` Yao Qi
2013-09-18 13:55 ` [PATCH 7/7] Remove ada-varobj.h Yao Qi
2013-10-17  5:46   ` Joel Brobecker
2013-10-17 13:34     ` Yao Qi
2013-09-18 13:55 ` [PATCH 2/7] Remove vlang_unknown Yao Qi
2013-10-01 10:07   ` Joel Brobecker
2013-10-01 13:34     ` Yao Qi
2013-10-02  0:19       ` Doug Evans
2013-10-02  9:32         ` Joel Brobecker
2013-10-04  8:31           ` Yao Qi
2013-09-18 13:55 ` [PATCH 5/7] New lang-varobj.h Yao Qi
2013-10-02 17:18   ` Doug Evans
2013-10-08  4:59     ` Joel Brobecker
2013-10-09 23:51       ` Yao Qi
2013-10-09 23:56         ` Doug Evans
2013-10-10  0:19           ` Yao Qi
2013-09-18 13:55 ` [PATCH 4/7] Move struct varobj to varobj.h Yao Qi
2013-10-02  9:46   ` Joel Brobecker
2013-10-02 19:32     ` Doug Evans [this message]
2013-10-06  6:33     ` Yao Qi
2013-10-08  4:56       ` Joel Brobecker
2013-10-08 21:03         ` Doug Evans
2013-10-09  0:28         ` Yao Qi
2013-10-14  8:19         ` Yao Qi
2013-09-18 13:55 ` [PATCH 6/7] Move language stuff out of varobj.c Yao Qi
2013-10-11  8:20   ` Yao Qi
2013-10-17  5:40     ` Joel Brobecker
2013-10-17 13:33       ` Yao Qi
2013-09-28  0:56 ` [RFC 0/7] Move language-related " Yao Qi

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=21068.29897.907653.959807@ruffy.mtv.corp.google.com \
    --to=dje@google.com \
    --cc=brobecker@adacore.com \
    --cc=gdb-patches@sourceware.org \
    --cc=yao@codesourcery.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