From: Matthew Heaney <matthewjheaney@earthlink.net>
Subject: Re: Idiom for a class and an object in Ada
Date: Thu, 21 Oct 2004 01:36:47 GMT
Date: 2004-10-21T01:36:47+00:00 [thread overview]
Message-ID: <uzn2gdf86.fsf@earthlink.net> (raw)
In-Reply-To: 417683de$0$91007$39cecf19@news.twtelecom.net
"Matthew Heaney" <mheaney@on2.com> writes:
> I showed in an earlier post how to use access types, but hide the fact
> that access types are used:
>
> package P is
> type T (<>) is limited private;
> procedure Op (O : in T);
> function O1 return T;
> function O2 return T;
> private
> type Rep_Type is limited ... end record;
>
> type T is access all Rep_Type;
> for T'Storage_Size use 0;
> end P;
Actually, I forgot to mention that you don't need an access type if you
use an array to hold the objects:
package P is
type T (<>) is limited private;
procedure Op (O : in T);
function O1 return T;
function O2 return T;
private
type T is range 1 .. 2;
end P;
package body P is
type Rep_Type is limited record ... end record;
Objects : Rep_Type (T);
procedure Op (O : in T) is
OO : Rep_Type renames Objects (O);
begin
...
end;
function O1 return T is
begin
return 1;
end;
function O2 return T is
begin
return 2;
end;
end P;
In fact, you don't need the private type at all:
package P is
type T is (O1, O2);
procedure Op (O : in T);
end P;
package body P is
type Rep_Type is limited record ... end record;
Objects : Rep_Type (T);
procedure Op (O : in T) is
OO : Rep_Type renames Objects (O);
begin
...
end;
end P;
next prev parent reply other threads:[~2004-10-21 1:36 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-10-18 11:47 Idiom for a class and an object in Ada Marin David Condic
2004-10-18 12:14 ` Martin Krischik
2004-10-18 19:40 ` Matthew Heaney
2004-10-19 12:59 ` Marin David Condic
2004-10-19 14:46 ` Martin Dowie
2004-10-19 15:55 ` Matthew Heaney
2004-10-19 18:31 ` Martin Dowie
2004-10-19 15:52 ` Matthew Heaney
2004-10-18 12:26 ` Marius Amado Alves
2004-10-19 2:09 ` Jeffrey Carter
2004-10-19 3:28 ` Matthew Heaney
2004-10-19 12:53 ` Marin David Condic
2004-10-19 14:44 ` Matthew Heaney
2004-10-19 15:01 ` Dmitry A. Kazakov
2004-10-19 15:40 ` Matthew Heaney
2004-10-20 7:58 ` Dmitry A. Kazakov
2004-10-20 12:31 ` Marin David Condic
2004-10-20 13:53 ` Dmitry A. Kazakov
2004-10-20 15:23 ` Matthew Heaney
2004-10-21 12:24 ` Marin David Condic
2004-10-21 17:15 ` Matthew Heaney
2004-10-20 5:39 ` Simon Wright
2004-10-20 7:24 ` Matthew Heaney
2004-10-20 8:39 ` Dmitry A. Kazakov
2004-10-21 1:36 ` Jeffrey Carter
2004-10-21 1:46 ` Matthew Heaney
2004-10-21 7:51 ` Dmitry A. Kazakov
2004-10-21 12:45 ` Matthew Heaney
2004-10-21 14:11 ` Dmitry A. Kazakov
2004-10-22 1:04 ` Jeffrey Carter
2004-10-22 1:36 ` Matthew Heaney
2004-10-21 19:31 ` Kevin Cline
2004-10-21 22:02 ` Matthew Heaney
2004-10-22 0:10 ` Matthew Heaney
2004-10-21 8:25 ` Martin Dowie
2004-10-20 17:04 ` Matthew Heaney
2004-10-20 19:37 ` Simon Wright
2004-10-20 20:04 ` Matthew Heaney
2004-10-22 5:37 ` Simon Wright
2004-10-20 1:10 ` Jeffrey Carter
2004-10-20 7:04 ` Matthew Heaney
2004-10-20 12:42 ` Marin David Condic
2004-10-20 12:55 ` Matthew Heaney
2004-10-20 15:27 ` Matthew Heaney
2004-10-21 1:36 ` Matthew Heaney [this message]
2004-10-19 12:38 ` Marin David Condic
2004-10-18 16:59 ` Matthew Heaney
2004-10-18 18:02 ` Martin Dowie
2004-10-19 13:06 ` Marin David Condic
2004-10-19 14:51 ` Martin Dowie
2004-10-20 16:20 ` Michael Paus
2004-10-20 17:15 ` Matthew Heaney
2004-10-20 17:55 ` Michael Paus
2004-10-21 12:33 ` Marin David Condic
-- strict thread matches above, loose matches on Subject: below --
2004-10-21 13:59 Stephen Leake
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox