comp.lang.ada
 help / color / mirror / Atom feed
From: mheaney@on2.com (Matthew Heaney)
Subject: Re: Generic formal access types
Date: 5 May 2003 09:40:31 -0700
Date: 2003-05-05T16:40:31+00:00	[thread overview]
Message-ID: <1ec946d1.0305050840.4a1ffd48@posting.google.com> (raw)
In-Reply-To: wccof2lqoad.fsf@shell01.TheWorld.com

Robert A Duff <bobduff@shell01.TheWorld.com> wrote in message news:<wccof2lqoad.fsf@shell01.TheWorld.com>...
> 
> That works only if you want to declare the pointer type at the same
> place where the instantiation is.  In many cases, you don't.  For this
> reason, it's almost always better to pass the pointer type into
> generics.

That is indeed how the Charles library works wrt the Generic_Element
function: the client has to supply the access type.

To ensure complete generality for a reuseable component, passing in
the access type is the correct choice, since in many cases the client
already has an access type that goes with the designated type.

http://home.earthlink.net/~matthewjheaney/charles/


 
> When I invented the Address_To_Access_Conversions package (see chap 13),
> I made the mistake of declaring the pointer type inside the generic,
> because I thought the primary use would be peek/poke functionality, so
> you would always say ".all" right away.  And it makes the instantiation
> simpler.  But it turns out to be a pain.

I think a bigger problem is that the declared pointer type doesn't
turn off the storage pool.  If the designated type is T'Class, doesn't
this drag a lot of extra run-time baggage?

If you're converting from Address to Object_Pointer, then there's no
storage pool anyway, so it never made sense to me to give
Object_Pointer a storage pool.

 
> The "right" solution to the OP's problem is to pass in the designated
> type and the pointer type.  Yes, that requires an extra line of code at
> the instantiation.  But I don't think there's a better solution.

Yes.



  parent reply	other threads:[~2003-05-05 16:40 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-04-30 18:30 Generic formal access types 
2003-04-30 19:27 ` Simon Wright
2003-05-01  8:58   ` 
2003-04-30 21:42 ` Chad R. Meiners
2003-05-01  9:06   ` 
2003-05-01  9:58     ` Martin Krischik
2003-05-01 13:00       ` 
2003-05-02  9:14         ` Ludovic Brenta
2003-05-02 10:43           ` 
2003-05-02 10:50             ` 
2003-05-01 10:09     ` 
2003-05-02  1:14 ` tmoran
2003-05-02  9:52   ` 
2003-05-02 16:18     ` tmoran
2003-05-02 16:57       ` Robert A Duff
2003-05-02 19:39         ` Randy Brukardt
2003-05-05  8:14         ` 
2003-05-05 16:40         ` Matthew Heaney [this message]
2003-05-05 17:34           ` Robert A Duff
replies disabled

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