From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Package's private parts and protected types
Date: Tue, 09 Feb 2010 18:29:56 -0500
Date: 2010-02-09T18:29:56-05:00 [thread overview]
Message-ID: <wccaavixa17.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: 4e959c35-34d1-49fb-b1eb-5b298e42610f@z19g2000yqk.googlegroups.com
"Hibou57 (Yannick Duch�ne)" <yannick_duchene@yahoo.fr> writes:
> Synchronized-and-the-like interface types are limited, so the built-in-
> place is indeed really built-in-place (no kind of conversion allowed
> at any stage). The initializer function have to return a class wide
> and return it using an extended return statement which is required to
> return the same exact type/subtype as the one function returns.
>
> This way of doing thing is not compatible with the implementation-
> hiding requirement, as it would require the implementation type to be
> exposed in the public part, so that I could define a public function
> returning this exact type.
I don't understand the problem. The following should work.
Doesn't it do what you want? Type T exports Public,
but hides Hidden. No heap allocation.
package P is
type T is synchronized interface;
function Create return T'Class;
procedure Public (X : in out T) is abstract;
private
protected type T2 is new T with
overriding entry Public;
entry Hidden;
end T2;
end P;
package body P is
function Create return T'Class is
begin
return Result : T2 do
...
end return;
end Create;
protected body T2 is
entry Public when ... is
begin
...
end Public;
entry Hidden when ... is
begin
...
end Hidden;
end T2;
end P;
with P; use P;
procedure Main is
X : T'Class := Create;
begin
Public (X);
end Main;
- Bob
next prev parent reply other threads:[~2010-02-09 23:29 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-08 4:30 Package's private parts and protected types Hibou57 (Yannick Duchêne)
2010-02-08 8:30 ` Martin
2010-02-08 9:11 ` Hibou57 (Yannick Duchêne)
2010-02-08 10:10 ` Alex R. Mosteo
2010-02-08 10:46 ` Hibou57 (Yannick Duchêne)
2010-02-09 14:55 ` Alex R. Mosteo
2010-02-08 10:20 ` Dmitry A. Kazakov
2010-02-08 10:54 ` Hibou57 (Yannick Duchêne)
2010-02-08 10:58 ` Hibou57 (Yannick Duchêne)
2010-02-08 11:01 ` Dmitry A. Kazakov
2010-02-08 13:19 ` Georg Bauhaus
2010-02-08 15:17 ` Robert A Duff
2010-02-08 16:15 ` (see below)
2010-02-08 20:44 ` Robert A Duff
2010-02-08 22:00 ` Hibou57 (Yannick Duchêne)
2010-02-09 5:48 ` AdaMagica
2010-02-09 14:56 ` Robert A Duff
2010-02-10 2:29 ` Randy Brukardt
2010-02-11 23:46 ` Robert A Duff
2010-02-12 1:29 ` Randy Brukardt
2010-02-11 23:53 ` Robert A Duff
2010-02-12 1:10 ` Randy Brukardt
2010-02-10 16:05 ` Adam Beneschan
2010-02-10 20:17 ` sjw
2010-02-12 0:05 ` Robert A Duff
2010-02-12 11:07 ` Stephen Leake
2010-02-12 15:01 ` Robert A Duff
2010-02-13 8:00 ` Stephen Leake
2010-02-09 9:04 ` stefan-lucks
2010-02-08 17:11 ` Jeffrey R. Carter
2010-02-08 14:56 ` Robert A Duff
2010-02-08 15:36 ` Dmitry A. Kazakov
2010-02-08 16:06 ` Robert A Duff
2010-02-08 17:46 ` Jean-Pierre Rosen
2010-02-08 20:39 ` Robert A Duff
2010-02-08 21:54 ` Hibou57 (Yannick Duchêne)
2010-02-08 21:50 ` Hibou57 (Yannick Duchêne)
2010-02-08 22:04 ` Hibou57 (Yannick Duchêne)
2010-02-09 10:58 ` Hibou57 (Yannick Duchêne)
2010-02-09 14:47 ` Robert A Duff
2010-02-09 19:34 ` Hibou57 (Yannick Duchêne)
2010-02-09 20:19 ` Hibou57 (Yannick Duchêne)
2010-02-09 23:29 ` Robert A Duff [this message]
2010-02-10 2:39 ` Randy Brukardt
2010-02-10 5:12 ` Hibou57 (Yannick Duchêne)
2010-02-10 7:17 ` Hibou57 (Yannick Duchêne)
2010-02-10 16:09 ` Robert A Duff
2010-02-10 22:21 ` Hibou57 (Yannick Duchêne)
2010-02-11 0:48 ` Robert A Duff
2010-02-09 0:48 ` Randy Brukardt
2010-02-09 12:43 ` Hibou57 (Yannick Duchêne)
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox