From: Stephen Leake <stephen.a.leake.1@gsfc.nasa.gov>
Subject: Re: Container reqs
Date: 22 Oct 2001 21:13:57 -0400
Date: 2001-10-23T01:15:56+00:00 [thread overview]
Message-ID: <ug08bgnu2.fsf@gsfc.nasa.gov> (raw)
In-Reply-To: 3BD0E523.E23FB134@acm.org
Jeffrey Carter <jrcarter@acm.org> writes:
> Stephen Leake wrote:
> >
> > Jeffrey Carter <jeffrey.carter@boeing.com> writes:
> >
> > > Ehud Lamm wrote:
> > > > <snip>
> > > > What I dodn't like is the need for several, possibly nested, instantiations
> > > > simply to get a simple queue or hash table.
> > >
> > > I wholeheartedly agree. Wright's posting here a few days ago of the
> > > sequence of instantiations needed to obtain a simple structure with the
> > > Booch components clearly indicates that they fail this requirement.
> >
> > This is easy to say. But can you provide an alternative, that still
> > allows the container to handle all reasonable Ada types?
>
> I refer you to the PragmAda Reusable Components as an example of a
> component library that provides single instantiations for simple
> structures that handle all reasonable Ada types.
>
> http://home.earthlink.net/~jrcarter010/pragmarc.htm
Well, I've looked at it (briefly). Here's the relevant part of the
unbounded list package:
generic -- PragmARC.List_Unbounded
type Element is limited private; -- Do not instantiate with a scalar
with procedure Assign (To : in out Element; From : in Element) is <>;
package PragmARC.List_Unbounded is
And the equivalent from my library:
generic
type Item_Type (<>) is limited private;
type Item_Node_Type is private;
with function To_Item_Node (Item : in Item_Type) return Item_Node_Type;
with procedure Free_Item (Item : in out Item_Node_Type);
-- If Item_Type is definite non-limited, Item_Node_Type should just be
-- Item_Type. Then To_Item_Node should just return Item, and Free_Item
-- should be null (and both should be inlined). See
-- SAL.Aux.Definite_Private_Items.
--
-- If Item_Type is indefinite, Item_Node_Type should be 'access
-- Item_Type'. Then To_Item_Node should allocate Item and return a
-- pointer to it, and Free_Item should be Unchecked_Deallocation. See
-- SAL.Aux.Indefinite_Private_Items.
--
-- To create a list of limited objects (say of type Limited_Type),
-- Item_Type can be a non-limited type holding the parameters needed to
-- create an object (non-limited to allow the user to create aggregates
-- of creation parameters), and Item_Node_Type can be 'access
-- Limited_Type'. Then To_Item_Node must allocate an object of type
-- Limited_Type and initialize it using the parameters in Item_Type. See
-- SAL.Aux.Indefinite_Limited_Items.
--
-- Other usages may be possible.
--
with function Copy (Source : in Item_Node_Type) return Item_Node_Type is <>;
-- Deep copy of Source, for use in allocators in Copy (List).
Node_Storage_Pool : in out System.Storage_Pools.Root_Storage_Pool'Class;
-- Root_Storage_Pool is limited, which does not allow defaults. Default
-- for a global list type should be <some_global_access_type>'Storage_Pool.
-- Default for a local list type, which should be reclaimed when the
-- list type goes out of scope, is implementation defined (sigh).
package SAL.Gen.Lists.Double is
PragmARC does _not_ support indefinite types, which are a large part
of Ada (strings, unconstrained variant records, tagged types with
unconstrained discriminants). In addition, the comment says "no
scalars"; I'm not clear why.
So I don't think PragmARC meets the criteria of "simple instantiation
for all reasonable Ada types".
Perhaps we disagree on the meaning of "reasonable" here.
--
-- Stephe
next prev parent reply other threads:[~2001-10-23 1:13 UTC|newest]
Thread overview: 114+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-14 20:46 Container reqs Ehud Lamm
2001-10-14 22:00 ` Larry Kilgallen
2001-10-15 20:04 ` Ehud Lamm
2001-10-16 15:19 ` Ted Dennison
2001-10-16 19:17 ` Darren New
2001-10-14 22:52 ` James Rogers
2001-10-15 1:22 ` Darren New
2001-10-15 20:06 ` Ehud Lamm
2001-10-16 18:29 ` Stephen Leake
2001-10-17 5:55 ` Simon Wright
2001-10-15 20:15 ` Ehud Lamm
2001-10-15 6:49 ` Jeffrey Carter
2001-10-16 15:25 ` Ted Dennison
2001-10-17 12:40 ` John English
2001-10-17 13:16 ` Ted Dennison
2001-10-18 15:26 ` John English
2001-10-18 16:02 ` Ted Dennison
2001-10-17 14:17 ` Ehud Lamm
2001-10-23 8:17 ` John English
2001-10-23 14:23 ` Ehud Lamm
2001-10-23 20:07 ` Stephen Leake
2001-10-23 20:46 ` Ehud Lamm
2001-10-23 20:50 ` Ted Dennison
2001-10-23 21:18 ` Marin David Condic
2001-10-24 8:30 ` Ehud Lamm
2001-10-24 14:08 ` Marin David Condic
2001-10-25 20:10 ` Ehud Lamm
2001-10-25 21:18 ` Marin David Condic
2001-10-25 21:25 ` Marin David Condic
2001-10-23 21:27 ` Larry Hazel
2001-10-23 22:03 ` Ehud Lamm
2001-10-15 14:27 ` Ted Dennison
2001-10-15 17:47 ` Darren New
2001-10-15 20:08 ` Ehud Lamm
2001-10-17 6:08 ` Simon Wright
2001-10-18 20:52 ` Ehud Lamm
2001-10-18 22:29 ` Jeffrey Carter
2001-10-19 12:10 ` Georg Bauhaus
2001-10-19 15:36 ` Stephen Leake
2001-10-19 14:53 ` Ehud Lamm
2001-10-20 11:10 ` Simon Wright
2001-10-21 18:17 ` Stephen Leake
2001-10-22 17:02 ` Ehud Lamm
2001-10-22 17:34 ` David Botton
2001-10-22 18:02 ` Ehud Lamm
2001-10-20 2:44 ` Jeffrey Carter
2001-10-21 18:24 ` Stephen Leake
2001-10-23 1:13 ` Stephen Leake [this message]
2001-10-23 2:09 ` Jeffrey Carter
2001-10-23 13:29 ` Ted Dennison
2001-10-24 2:26 ` Jeffrey Carter
2001-10-24 13:54 ` Ted Dennison
2001-10-24 14:02 ` Lutz Donnerhacke
2001-10-24 14:24 ` Marin David Condic
2001-10-24 19:01 ` Stephen Leake
2001-10-25 1:40 ` Jeffrey Carter
2001-10-15 14:39 ` Lutz Donnerhacke
2001-10-15 15:36 ` Marin David Condic
2001-10-16 18:47 ` Stephen Leake
2001-10-16 19:18 ` Marin David Condic
2001-10-15 20:13 ` Ehud Lamm
2001-10-16 8:14 ` Lutz Donnerhacke
2001-10-16 8:50 ` Ehud Lamm
2001-10-16 10:12 ` Lutz Donnerhacke
2001-10-16 9:45 ` Jean-Marc Bourguet
2001-10-16 13:20 ` Ehud Lamm
2001-10-16 15:34 ` Ted Dennison
2001-10-16 18:49 ` Stephen Leake
2001-10-17 6:02 ` Simon Wright
2001-10-16 17:21 ` Jeffrey Carter
2001-10-16 18:57 ` Ted Dennison
2001-10-16 18:59 ` Stephen Leake
2001-10-16 19:38 ` Marin David Condic
2001-10-16 20:01 ` Larry Kilgallen
2001-10-16 20:19 ` Marin David Condic
2001-10-30 6:53 ` Barry Kelly
2001-10-30 14:53 ` Marin David Condic
2001-10-30 16:14 ` Jean-Marc Bourguet
2001-10-30 16:55 ` Marin David Condic
2001-10-31 6:37 ` Simon Wright
2001-10-30 17:45 ` Stephen Leake
2001-10-16 22:12 ` Robert*
2001-10-17 7:09 ` Jean-Marc Bourguet
2001-10-17 13:36 ` Ted Dennison
2001-10-17 14:12 ` Jean-Marc Bourguet
2001-10-17 15:15 ` Ted Dennison
2001-10-17 16:32 ` Jean-Marc Bourguet
2001-10-17 16:49 ` Ted Dennison
2001-10-17 16:55 ` Ehud Lamm
2001-10-18 7:39 ` Lutz Donnerhacke
2001-10-18 9:03 ` Jean-Marc Bourguet
2001-10-18 17:25 ` Jeffrey Carter
2001-10-18 20:09 ` Lutz Donnerhacke
2001-10-18 22:35 ` Jeffrey Carter
2001-10-19 8:44 ` Lutz Donnerhacke
2001-10-20 11:14 ` Simon Wright
2001-10-21 16:37 ` Paul Duquennoy
2001-10-17 17:18 ` Jeffrey Carter
2001-10-18 8:59 ` Jean-Marc Bourguet
2001-10-18 19:42 ` Simon Wright
2001-10-18 20:55 ` Ehud Lamm
2001-10-22 6:46 ` Kenneth Almquist
2001-10-22 8:04 ` mike
2001-10-22 8:42 ` Lutz Donnerhacke
2001-10-22 16:30 ` Jeffrey Carter
2001-10-22 17:14 ` Ehud Lamm
2001-10-16 11:37 ` Jean-Marc Bourguet
2001-10-16 13:23 ` Ehud Lamm
2001-10-16 13:39 ` Jean-Marc Bourguet
2001-10-16 15:36 ` Vincent Marciante
2001-10-16 16:15 ` Pat Rogers
2001-10-16 19:04 ` Stephen Leake
2001-10-16 15:53 ` Ted Dennison
2001-10-16 15:58 ` Jean-Marc Bourguet
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox