comp.lang.ada
 help / color / mirror / Atom feed
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



  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