comp.lang.ada
 help / color / mirror / Atom feed
From: "Frank J. Lhota" <NOSPAM.FrankLho@rcn.com>
Subject: Re: Hiding a type
Date: Sun, 7 Jul 2002 09:58:48 -0400
Date: 2002-07-07T13:58:39+00:00	[thread overview]
Message-ID: <ag9hef$pp6$1@bob.news.rcn.net> (raw)
In-Reply-To: x7vd6tziy2c.fsf@pushface.org


"Simon Wright" <simon@pushface.org> wrote in message
news:x7vd6tziy2c.fsf@pushface.org...
> "Frank J. Lhota" <NOSPAM.FrankLho@rcn.com> writes:
>
> > package Test is
> >      type Public_Name is limited private;
> >      function Initialize( File_Name : String ) return Public_Name;
> >      procedure Process( Input : Public_Name );
> > private
> >      type Private_Type is record ... end record;
> >      type Public_Name is access all Private_Type;
> > end Test;
>
> I don't know if this will compile, but it's certainly not possible to
> use it; if Public_Name is _limited_ private, clients have no
> assignment operation.

You've got a good point, but what you say is true of any implementation of
Public_Name. One fix would be to make Initialize a procedure, as follows:

package Test is
     type Public_Name is limited private;
     procedure Initialize( Item : in out Public_Name; File_Name : in
String );
     procedure Process( Input : Public_Name );
private
     ...
     type Public_Name is ...;
end Test;

This change is probably necessary irrespective of the implementation of
Public_Name.

Given further clarification by Ryan, I would recommend the following:

package Test is
     type Public_Name is limited private;
     procedure Initialize( Item : in out Public_Name; File_Name : in
String );
     procedure Process( Input : Public_Name );
private
     -- May want to declare the following type as abstract.
     type Private_Root_Type is tagged record ... end record;
     type Public_Name is access all Private_Root_Type'Class;
end Test;






  reply	other threads:[~2002-07-07 13:58 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-06 17:17 Hiding a type Ryan Tarpine
2002-07-06 21:30 ` Pat Rogers
2002-07-06 18:16   ` Ryan Tarpine
2002-07-06 22:49     ` sk
2002-07-06 22:52     ` Frank J. Lhota
2002-07-06 20:38       ` Ryan Tarpine
2002-07-07 10:31         ` Frank J. Lhota
2002-07-07 11:20       ` Simon Wright
2002-07-07 13:58         ` Frank J. Lhota [this message]
2002-07-07 22:24           ` Ryan Tarpine
2002-07-07 17:15         ` Jeffrey Carter
2002-07-07 17:58           ` Simon Wright
2002-07-06 23:10     ` chris.danx
2002-07-06 20:21       ` Ryan Tarpine
2002-07-07  1:58         ` Jeffrey Carter
2002-07-08  7:20         ` Preben Randhol
2002-07-06 23:12       ` chris.danx
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox