comp.lang.ada
 help / color / mirror / Atom feed
From: Marius Amado Alves <amado.alves@netcabo.pt>
To: comp.lang.ada@ada-france.org
Subject: Re: MI ammunition : linked lists
Date: Mon, 10 Nov 2003 17:52:33 +0000
Date: 2003-11-10T17:52:33+00:00	[thread overview]
Message-ID: <mailman.317.1068486781.25614.comp.lang.ada@ada-france.org> (raw)
In-Reply-To: <slrnbqv9g6.ns.lutz@taranis.iks-jena.de>

On Mon, 2003-11-10 at 14:51, Lutz Donnerhacke wrote:
> * amado.alves wrote:
> > A very common programming task where multiple inheritance (MI) would be
> > handy: implementation of doubly linked lists.
> 
> Single instantiated doubly linked lists.
> 
> Usually I need nodes which are member in multiple lists or trees. That's why
> I prefer a mixin design which allows me to specify the required list the
> node is member of directly.
> 
> Please clarify how you approach deal with multiple membership.

I think you mean you need your "data" (payload, cargo, element...) to
participate in different structures. Not strictly the "node".

I was discussing only the structural relations of nodes (next, prev).

There are a number of ways to attach data to a node. If the data must be
shared between different structures a straightforward way is to have the
node type have a component that points to the (logical) data.
 _______      _______
|       |    |       |     _______
| Next ----->| Next------>|       | 
|       |<-----Prev  |<-----Prev  | (List 1)
| Datum |    |       |    |       |
|___|___|    | Datum |    | Datum |
    |        |___|___|    |___|___|
    |            |            |
  _\|/_        _\|/_        _\|/_
 |     |      |     |      |     |  (Data)
 |_____|      |_____|      |_____|
   /|\          /|\          /|\
 ___|___      ___|___         |
|   |   |    |   |   |     ___|___
| Datum |    | Datum |    |   |   |
|       |    |       |    | Datum | (List 2)
| Next ----->| Next------>|       | 
|_______|<-----Prev  |<-----Prev  |
             |_______|    |_______|

Note I have already conceded that polymorphism for lists in Ada is
troublesome because your need to change the type of certain nodes upon
certain update operations to the list (and in Ada you cannot change the
type of an object). I do not think polymorphism poses a problem with
respect to sharing data.




  reply	other threads:[~2003-11-10 17:52 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-11-06 16:32 MI ammunition : linked lists amado.alves
2003-11-06 16:46 ` Stephen Leake
2003-11-06 17:15 ` Frank J. Lhota
2003-11-08 10:27   ` Dmitry A. Kazakov
2003-11-06 17:16 ` Jean-Pierre Rosen
2003-11-06 18:15   ` Wes Groleau
2003-11-06 21:03   ` Simon Wright
2003-11-07 10:39     ` Dmitry A. Kazakov
2003-11-07 10:29 ` Dmitry A. Kazakov
2003-11-10 14:51 ` Lutz Donnerhacke
2003-11-10 17:52   ` Marius Amado Alves [this message]
2003-11-11  9:32     ` Lutz Donnerhacke
2003-11-11 12:24       ` Marius Amado Alves
2003-11-11 12:58         ` Lutz Donnerhacke
2003-11-11 16:09           ` Robert I. Eachus
2003-11-11 17:11             ` Marius Amado Alves
2003-11-12  9:21               ` Lutz Donnerhacke
  -- strict thread matches above, loose matches on Subject: below --
2003-11-06 17:26 amado.alves
2003-11-06 17:33 amado.alves
2003-11-06 19:01 amado.alves
2003-11-11 18:38 ` Georg Bauhaus
2003-11-11 21:27   ` Marius Amado Alves
2003-11-12  0:23     ` Georg Bauhaus
2003-11-12 11:29 amado.alves
replies disabled

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