From: Jim Blandy <jimb@redhat.com>
To: Daniel Jacobowitz <drow@mvista.com>
Cc: gdb@sources.redhat.com, Benjamin Kosnik <bkoz@redhat.com>,
Daniel Berlin <dan@dberlin.org>
Subject: Re: C++ nested classes, namespaces, structs, and compound statements
Date: Wed, 10 Apr 2002 10:31:00 -0000 [thread overview]
Message-ID: <npn0wbe9zk.fsf@zwingli.cygnus.com> (raw)
In-Reply-To: <20020408214935.A14098@nevyn.them.org>
Daniel Jacobowitz <drow@mvista.com> writes:
> Sure. But I think this is a chance (if we want one) to move in a
> different direction. We'd have to work out the details, but I envision
> something like this (names made up as I go along):
>
> struct environment_entry {
> const char *name;
> enum name_type kind;
> void *data;
> }
>
> enum name_type {
> type_kind,
> field_kind,
> symbol_kind,
> namespace_kind,
> };
In other words, replace the sloppy union with a properly discriminated
union? I'm for it.
But granted that it's important to clearly distinguish between the
expanding set of uses we're putting `struct symbol' to, and that
extending enum address_class isn't the best idea, how is it better to
make this change concurrently with the enclosing environment changes?
We could do this change right now. Isn't it basically independent?
Getting too technical for this point in the discussion: I like doing
subclassing of structs in C like this:
struct environment_entry {
const char *name;
enum name_type kind;
};
struct field_entry {
struct environment_entry env;
enum field_visibility visibility;
struct type *type;
...
};
Since C guarantees that a pointer to a struct can be safely converted
to a pointer to its first member and back, this is okay. And while
going from superclass to subclass still isn't typesafe, going from
subclass to superclass is. (The down-casting should be hidden in a
function which also checks the tag.)
But this is just bikeshedding. I like your basic idea, however one
implements it.
next prev parent reply other threads:[~2002-04-10 17:31 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-04-05 20:42 Jim Blandy
2002-04-05 22:05 ` Daniel Berlin
2002-04-05 22:34 ` Daniel Jacobowitz
2002-04-05 23:49 ` Daniel Berlin
2002-04-06 7:18 ` Dan Kegel
2002-04-06 9:26 ` Gianni Mariani
2002-04-06 11:57 ` Daniel Berlin
2002-04-08 17:24 ` Jim Blandy
2002-04-08 17:03 ` Jim Blandy
2002-04-08 18:59 ` Daniel Jacobowitz
2002-04-09 18:35 ` Jim Blandy
2002-04-09 20:56 ` Daniel Jacobowitz
2002-04-12 15:08 ` Jim Blandy
2002-04-12 16:32 ` Daniel Jacobowitz
2002-04-08 17:19 ` Jim Blandy
2002-04-08 18:49 ` Daniel Jacobowitz
2002-04-10 10:31 ` Jim Blandy [this message]
2002-04-10 12:08 ` Daniel Jacobowitz
2002-04-12 13:58 ` Jim Blandy
2002-04-12 16:56 ` Daniel Jacobowitz
2002-04-16 12:08 ` Jim Blandy
2002-04-16 14:01 ` Daniel Jacobowitz
2002-04-16 14:52 ` Jim Blandy
2002-04-16 14:58 ` Daniel Jacobowitz
2002-04-06 6:31 ` Andrew Cagney
2002-04-06 7:58 ` Daniel Berlin
2002-04-08 0:59 ` Joel Brobecker
2002-04-08 2:01 ` Doubt in GDB SathisKanna k
2002-04-06 8:49 ` C++ nested classes, namespaces, structs, and compound statements Per Bothner
2002-04-08 16:29 ` Jim Blandy
2002-04-08 16:48 ` Daniel Jacobowitz
2002-04-09 6:55 ` Petr Sorfa
2002-04-10 10:34 ` Jim Blandy
2002-04-10 12:31 ` Daniel Berlin
2002-04-10 12:53 ` Petr Sorfa
2002-04-05 22:02 Michael Elizabeth Chastain
2002-04-05 22:13 ` Daniel Berlin
2002-04-05 22:30 ` Daniel Berlin
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=npn0wbe9zk.fsf@zwingli.cygnus.com \
--to=jimb@redhat.com \
--cc=bkoz@redhat.com \
--cc=dan@dberlin.org \
--cc=drow@mvista.com \
--cc=gdb@sources.redhat.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