comp.lang.ada
 help / color / mirror / Atom feed
From: Stephen Leake <stephen_leake@acm.org>
To: comp.lang.ada@ada-france.org
Subject: Re: Private area and child packages
Date: 29 Dec 2004 16:44:31 -0500
Date: 2004-12-29T16:44:31-05:00	[thread overview]
Message-ID: <mailman.18.1104356739.527.comp.lang.ada@ada-france.org> (raw)
In-Reply-To: <1104293158.276241.42640@f14g2000cwb.googlegroups.com>

danmcleran@hotmail.com writes:

> I don't want any other component to be able to manipulate the
> Secret_Value record component, not even a child package of
> Some_Package.
> 
> Is there any way to do this? In C++, there is something called the
> PIMPL idiom, where you hide implementation detail by holding a pointer
> to an incomplete class, like this:
> 
> //SecretClass.h
> 
> class Implementation;//Class not yet fully defined
> 
> class SecretClass
> {
> public:
> //publicly visible stuff
> private:
> Implementation* pImplementation;
> };

Use the same mechanism in Ada; declare an incomplete type and a
pointer to it:

package Some_Package is
   type Secret_Type is private;
private

   type Really_Secret_Type;
   type Access_Really_Secret_Type is access Really_Secret_Type;

   type Secret_Type is record
      Secret_Value : Access_Really_Secret_Type;
   end record;
end Some_Package;

-- 
-- Stephe




      parent reply	other threads:[~2004-12-29 21:44 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-29  4:05 Private area and child packages danmcleran
2004-12-29  4:47 ` tmoran
2004-12-29 15:10   ` danmcleran
2004-12-30 18:51     ` tmoran
2005-01-01  3:45       ` danmcleran
2004-12-29  4:49 ` Jeffrey Carter
2004-12-29 15:27   ` danmcleran
2004-12-29 16:53     ` Samuel Tardieu
2004-12-30  4:07       ` Jeffrey Carter
2004-12-30 15:31   ` danmcleran
2004-12-30 18:14     ` Jeffrey Carter
2004-12-31 17:55   ` danmcleran
     [not found]   ` <1104515735.052116.248180@c13g2000cwb.googlegroups.com>
2004-12-31 19:02     ` Jeffrey Carter
2004-12-29 19:05 ` Martin Krischik
2004-12-29 21:44 ` Stephen Leake [this message]
replies disabled

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