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
prev 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