From: Thomas Wolf <t_wolf@angelfire.com>
Subject: Generic default parameters
Date: Fri, 10 May 2002 16:22:50 +0200
Date: 2002-05-10T16:22:50+02:00 [thread overview]
Message-ID: <MPG.1745f522613b2fb598968d@news.ip-plus.net> (raw)
It seems I'm not alone with these ideas... so let's summarize
and see if we can get a halfway decent proposal for the ARG
out of the discussions:
Ada 95 lacks features for:
1. specifying a default type for generic formal type parameters
The idea would be to allow something like
generic
type Something is range <> := Natural;
and if an instantiation does *not* supply an actual for
'Something', 'Natural' will be taken.
2. specifying a default for generic formal package parameters:
generic
with package X is new Y (<>) := Z;
where Z of course would have to be an instantiation of Y.
Or maybe even
generic
with package X is new Y (<>) := Y (Param1 => Default1,
Param2 => Default2,
...);
i.e., allow the default to be an anonymous instance?
(I guess, the first variant is sufficient, and the second
would only unnecessarily complicate matters.)
3. specify a default for a generic formal "in out" object:
with System.Storage_Pools;
generic
type Something is private;
Pool : in out System.Storage_Pools.Root_Storage_Pool'Class :=
Some_Default_Pool_Instance;
package X is
type Some_Access is access all Something;
for Some_Access'Storage_Pool use Pool;
...
4. providing defaults in a generic renaming:
generic
type Something is private;
package A is ...
generic package B renames A (Something => Integer);
or even
generic
type Something is range <> := Natural;
package C is ...
generic package D renames C (Something => Integer);
5. Linked to (3) above: some way to specify a storage pool that
is equal to whatever pool the compiler would use if no
"for Some_Access'Storage_Pool use ..." clause was present, i.e.
a generic way to refer to the standard storage pool of a type
without referring to the type. Something like
generic
type Something is private;
Pool : in out System.Storage_Pools.Root_Storage_Pool'Class := <>;
package X is
type Some_Access is access all Something;
for Some_Access'Storage_Pool use Pool;
...
and if an instantiation provides an actual for 'Pool', that will
be taken as the storage pool of type 'Some_Access', but if an
instantiation doesn't provide an actual, 'Some_Access' will use
a standard storage pool.
Not sure if point (5) makes sense, especially since it would be
useful only for storage pools, but make no sense at all for other
types...
Personally, I have encountered several occasions where I would have
liked to have some (or all) of these features. They'd help a lot in
writing general generics (:-) that still are simple to instantiate.
Comments, anyone? Would these things be worth to consider for inclusion
in the next Ada revision?
--
-----------------------------------------------------------------
Thomas Wolf e-mail: t_wolf@angelfire.com
next reply other threads:[~2002-05-10 14:22 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-05-10 14:22 Thomas Wolf [this message]
2002-05-10 16:38 ` Generic default parameters Preben Randhol
2002-05-10 16:50 ` Marin David Condic
2002-05-11 9:29 ` Simon Wright
2002-05-13 15:03 ` Hyman Rosen
2002-05-11 12:28 ` Preben Randhol
2002-05-13 14:03 ` Marin David Condic
2002-05-13 14:49 ` Hyman Rosen
2002-05-10 19:04 ` Hyman Rosen
2002-05-11 12:23 ` Preben Randhol
2002-05-11 13:49 ` Larry Kilgallen
2002-05-13 14:06 ` Marin David Condic
2002-05-10 19:27 ` Randy Brukardt
2002-05-11 12:32 ` Preben Randhol
2002-05-10 22:14 ` Stephen Leake
2002-05-13 7:49 ` Thomas Wolf
2002-05-13 8:49 ` Dmitry A. Kazakov
2002-05-13 14:00 ` Stephen Leake
2002-05-13 15:21 ` Dmitry A. Kazakov
2002-05-13 16:42 ` Stephen Leake
2002-05-14 10:24 ` Dmitry A. Kazakov
2002-05-14 14:02 ` Stephen Leake
2002-05-15 10:08 ` Dmitry A. Kazakov
-- strict thread matches above, loose matches on Subject: below --
2002-05-14 4:57 Grein, Christoph
2002-05-14 10:23 ` Dmitry A. Kazakov
2002-05-14 11:03 Grein, Christoph
2002-05-14 12:01 ` Dmitry A. Kazakov
2002-05-14 14:05 ` Stephen Leake
2002-05-15 8:44 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox