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.
next prev parent 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