From: Stephen Leake <stephen.a.leake.1@gsfc.nasa.gov>
Subject: Re: Container reqs
Date: 16 Oct 2001 15:04:26 -0400
Date: 2001-10-16T19:06:16+00:00 [thread overview]
Message-ID: <uy9mbs8xx.fsf@gsfc.nasa.gov> (raw)
In-Reply-To: 9qhcj0$anv$1@news.huji.ac.il
"Ehud Lamm" <mslamm@mscc.huji.ac.il> writes:
> >
> > * the container types should be limited (one can always provides
> > a clone function if needed).
>
> Right.
>
> >
> > * the contained types should not be limited (one can always provides
> > a standard wrapper for limited types)
> >
>
> I also like this design. But others seem to disagree (maps of maps of maps
> of ...), and I understand their pov. We should try to find the best
> solution/compromise on this important issue.
It is possible to write generic packages than can accept item types
that are either limited or non-limited. See
http://users.erols.com/leakstan/Stephe/Ada/Sal_Packages/index.htm,
package sal-gen-lists-double.ads for example. Here's the critical
part:
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.
--
-- Stephe
next prev parent reply other threads:[~2001-10-16 19:04 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
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 [this message]
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