From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Ada202X: Easy to use "UML private"-like components
Date: Mon, 24 Jun 2013 20:43:54 -0400
Date: 2013-06-24T20:43:54-04:00 [thread overview]
Message-ID: <wccli5zqat1.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: b2rsmlFpmvmU1@mid.individual.net
Niklas Holsti <niklas.holsti@tidorum.invalid> writes:
> That seems likely to create program-portability problems - on a 64-bit
> machine, a 64-bit record could be opaque, but it could not be opaque on
> a 32-bit machine (unless all pointers are artificially made 64 bits
> wide, too).
Yes. I was appalled by that feature for exactly that reason.
I'm a big fan of portability.
But given the time frame of Modula-2, I think your example should be
16-bit/32-bit not 32/64. ;-)
In any case, in plain English, "opaque" doesn't have all these
pointer/heap implications, so I suggest saying something like
"Modula-2-style opaque types" rather than just "opaque types"
if that's what you mean.
> The main difference is that in Ada, the unknown underlying type is named
> -- what you call the stt-incomplete type. This type is of course
> invisible to the users (clients) of the private type. Off hand, it does
> not seem to me that such named-but-incomplete types should cause hard
> problems for the compiler, but it appears that you have experienced such
> problems. Perhaps they did not exist in Ada 83, but came about because
> of other extensions such as controlled types?
The implementation problems existed in Ada 83. I'm not sure I remember
all the issues, but the most obvious is that there's an implicit
assumption that you can tell the size/representation of a pointer
without knowing what it points at. There are various reasons that might
not be true. In fact, it's not true in GNAT.
Also, I think it was legal to do "X.all" on those things (in the package
spec) in Ada 83. It would always raise Constraint_Error, but the
"natural" implementation wants to know the size of X.all. I fixed that
in Ada 95 by changing the freezing rules to make it illegal, IIRC.
- Bob
next prev parent reply other threads:[~2013-06-25 0:43 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-21 8:43 Ada202X: Easy to use "UML private"-like components Martin
2013-06-21 9:23 ` Dmitry A. Kazakov
2013-06-21 9:33 ` Martin
2013-06-21 10:14 ` G.B.
2013-06-21 11:19 ` Martin
2013-06-21 14:51 ` Dmitry A. Kazakov
2013-06-22 11:16 ` Martin
2013-06-22 12:10 ` Dmitry A. Kazakov
2013-06-21 18:36 ` Robert A Duff
2013-06-22 16:41 ` Niklas Holsti
2013-06-22 19:05 ` Dennis Lee Bieber
2013-06-22 22:57 ` Niklas Holsti
2013-06-23 3:26 ` Dennis Lee Bieber
2013-06-23 7:32 ` Niklas Holsti
2013-06-23 13:12 ` Robert A Duff
2013-06-23 14:06 ` Dmitry A. Kazakov
2013-06-23 15:15 ` Robert A Duff
2013-06-23 18:52 ` Dmitry A. Kazakov
2013-06-23 23:38 ` Robert A Duff
2013-06-24 7:16 ` Dmitry A. Kazakov
2013-06-24 20:11 ` Randy Brukardt
2013-06-25 7:21 ` Dmitry A. Kazakov
2013-06-25 19:06 ` Randy Brukardt
2013-06-24 20:07 ` Randy Brukardt
2013-06-23 14:40 ` Shark8
2013-06-23 15:28 ` Robert A Duff
2013-06-23 18:14 ` Bill Findlay
2013-06-23 23:43 ` Robert A Duff
2013-06-23 23:48 ` Bill Findlay
2013-06-24 20:16 ` Randy Brukardt
2013-06-24 20:05 ` Randy Brukardt
2013-06-25 1:09 ` Robert A Duff
2013-06-25 19:37 ` Randy Brukardt
2013-06-23 12:28 ` Robert A Duff
2013-06-24 20:20 ` Randy Brukardt
2013-06-24 21:40 ` Niklas Holsti
2013-06-25 0:43 ` Robert A Duff [this message]
2013-06-25 19:23 ` Randy Brukardt
2013-06-25 19:19 ` Randy Brukardt
2013-07-09 11:24 ` Martin
2013-07-09 14:39 ` Simon Wright
2013-07-10 7:03 ` Martin
2013-07-09 21:43 ` Robert A Duff
2013-07-10 6:34 ` Martin
2013-07-10 8:24 ` Dmitry A. Kazakov
2013-07-10 13:06 ` Martin
2013-07-10 16:12 ` Simon Wright
2013-07-10 18:22 ` Martin
2013-07-10 19:41 ` Simon Wright
2013-07-11 18:28 ` Martin
2013-07-11 19:37 ` Simon Wright
2013-07-11 20:43 ` Martin
2013-07-12 6:57 ` Simon Wright
2013-07-12 8:05 ` Martin
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox