comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Ada202X: Easy to use "UML private"-like components
Date: Tue, 25 Jun 2013 14:23:02 -0500
Date: 2013-06-25T14:23:02-05:00	[thread overview]
Message-ID: <kqcqmo$lq8$1@loke.gir.dk> (raw)
In-Reply-To: wccli5zqat1.fsf@shell01.TheWorld.com

"Robert A Duff" <bobduff@shell01.TheWorld.com> wrote in message 
news:wccli5zqat1.fsf@shell01.TheWorld.com...
> 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.

I think there was also an issue with constraints in Ada 83 that was fixed in 
Ada 95.

Note that stt-incomplete types were the basis for the "limited with" feature 
in Ada 2007, so it's not like the language designers have neglected the 
feature. (We thought that if stt-incomplete already worked, implementers 
couldn't complain about limited with - that turned out not to be quite 
true.)

                     Randy.


  reply	other threads:[~2013-06-25 19:23 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
2013-06-25 19:23                 ` Randy Brukardt [this message]
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