comp.lang.ada
 help / color / mirror / Atom feed
From: lutz@iks-jena.de (Lutz Donnerhacke)
Subject: Mixin with preelaborated element
Date: 2000/05/31
Date: 2000-05-31T00:00:00+00:00	[thread overview]
Message-ID: <slrn8j9hrm.mk.lutz@taranis.iks-jena.de> (raw)

I run into a problem with my list_mixin.
  ftp://ftp.iks-jena.de/pub/mitarb/lutz/ada/types/list_mixin.ad?

generic
   type Base (<>) is abstract tagged limited private;
   type S    (<>) is abstract new Base with private;
package List_Mixin is
   type T is abstract new S with private;
   type T_Class is access all T'Class;
   type List is limited private;
   -- several lines of code deleted
private
   type T is abstract new S with
      record
         Next : T_Class := null;
         Used : Boolean := False;  -- to detect multiple insertions
      end record;
   
   type List is limited
      record
         Start : T_Class := null;
      end record;
   -- several lines of code deleted
end List_Mixin;

The current implementation use null at the tail marker. This requires the
flag Used and causes a lot of ineffient code.

So I'd like to introduce a single fixed end node used by all instantiations.
It should contain only the Next element.

How can I achieve it?

Using assembly I added the link in front of the structure and ignored the
varying context following it. Good examples can be found in D.E.Knuth TAoCP.




             reply	other threads:[~2000-05-31  0:00 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-05-31  0:00 Lutz Donnerhacke [this message]
2000-05-31  0:00 ` Mixin with preelaborated element Antonio Dur�n Dom�nguez
2000-06-01  0:00   ` Lutz Donnerhacke
replies disabled

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