DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦965d615d7⟧ Ada Source

    Length: 11264 (0x2c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Nos_Listes, seg_046082, seg_0465d7, seg_04696a, seg_0472d1

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



package body Nos_Listes is

    ---------------------------------------------------------------
    --|
    --| Ajoute un element a la liste s'il ne s'y trouve pas deja.
    --|
    --| Parametres d'entree :
    --|   L : liste sur laquelle doit etre fait l'ajout
    --|       (type objet)
    --|   Item : element a ajouter a la liste
    --|          (type element)
    --|
    ---------------------------------------------------------------
    procedure Add (L : in out Objet; Item : Element) is
    begin
        if not Found (L, Item) then
            L := Liste.Make (Item, L);
        end if;
    end Add;

    ---------------------------------------------------------------
    --|
    --| Renvoie la valeur de l'element courant dans la liste.
    --|
    --| Parametres d'entree :
    --|   Iter : iterateur sur la liste consultee
    --|          (type iterateur)
    --| Parametres de sortie :
    --|   La fonction renvoie l'element
    --|   (type element)
    --|
    ---------------------------------------------------------------
    function Consult (Iter : Iterateur) return Element is
    begin
        return Liste.Value (Iter);
    end Consult;

    ---------------------------------------------------------------
    --|
    --| Test si la liste est vide.
    --|
    --| Parametres d'entree :
    --|   L : liste sur laquelle porte le test
    --|       (type objet)
    --| Parametres de sortie :
    --|   La fonction renvoie TRUE ou FALSE selon que la liste est
    --|   vide ou non
    --|
    ---------------------------------------------------------------
    function Is_Empty (L : Objet) return Boolean is
    begin
        return Liste.Is_Empty (L);
    end Is_Empty;

    ---------------------------------------------------------------
    --|
    --| Test si un iterateur a bien survole tous les elements de
    --| la liste.
    --|
    --| Parametres d'entree :
    --|   Iter : iterateur sur la liste testee
    --|          (type iterateur)
    --| Parametres de sortie :
    --|   La fonction renvoie TRUE ou FALSE selon que l'iterateur
    --|   a bien survole toute la liste ou non
    --|
    ---------------------------------------------------------------
    function At_End (Iter : Iterateur) return Boolean is
    begin
        return Liste.Done (Iter);
    end At_End;

    ---------------------------------------------------------------
    --|
    --| Positionne un iterateur sur le premier element d'une liste.
    --|
    --| Parametres d'entree :
    --|   Iter : l'iterateur de la liste
    --|          (type iterateur)
    --|   L : liste a iterer
    --|       (type objet)
    --|
    ---------------------------------------------------------------
    procedure First (Iter : out Iterateur; L : Objet) is
    begin
        Liste.Init (Iter, L);
    end First;

    ---------------------------------------------------------------
    --|
    --| Positionne un iterateur sur l'element suivant d'une liste.
    --|
    --| Parametres d'entree :
    --|   Iter : l'iterateur de la liste
    --|          (type iterateur)
    --|
    ---------------------------------------------------------------
    procedure Next (Iter : in out Iterateur) is
    begin
        Liste.Next (Iter);
    end Next;

    ---------------------------------------------------------------
    --|
    --| Supprime un element de la liste si ce dernier s'y trouve.
    --| Si ce n'est pas le cas cette routine n'a aucun effet.
    --|
    --| Parametres d'entree :
    --|   L : liste sur laquelle porte la suppression
    --|       (type objet)
    --|   Item : element a supprimer de la liste
    --|       (type element)
    --|
    ---------------------------------------------------------------
    procedure Delete (L : in out Objet; Item : Element) is
        Local_List_Iterateur, L_Iterateur : Liste.Iterator;
        Local_List : Objet;  
    begin
        if Found (L, Item) then
            Liste.Init (L_Iterateur, L);
            while (not Equal (Item, Liste.Value (L_Iterateur))) loop
                Local_List := Liste.Make
                                 (Liste.Value (L_Iterateur), Local_List);
                L := Liste.Rest (L);  
                Liste.Init (L_Iterateur, L);
            end loop;
            L := Liste.Rest (L);
            Liste.Init (L_Iterateur, L);
            Liste.Init (Local_List_Iterateur, Local_List);
            while not Liste.Is_Empty (Local_List) loop
                L := Liste.Make (Liste.Value (Local_List_Iterateur), L);
                Liste.Init (Local_List_Iterateur, Local_List);
                Local_List := Liste.Rest (Local_List);
                Liste.Init (Local_List_Iterateur, Local_List);
            end loop;
        end if;
    end Delete;


    ---------------------------------------------------------------
    --|
    --| Cherche un element dans une liste.
    --|
    --| Parametres d'entree :
    --|   L : liste sur laquelle porte la recherche
    --|       (type objet)
    --|   Item : element a rechercher dans la liste
    --|          (type element)
    --| Parametres de sortie :
    --|   La fonction renvoie TRUE ou FALSE selon que l'iterateur
    --|   a atteint la fin de la liste ou non
    --|
    ---------------------------------------------------------------
    function Found (L : Objet; Item : Element) return Boolean is
        Trouve : Boolean := False;
        Iterateur : Liste.Iterator;
    begin
        Liste.Init (Iterateur, L);
        while not Liste.Done (Iterateur) loop
            if Equal (Item, Liste.Value (Iterateur)) then
                Trouve := True;
                exit;
            end if;
            Liste.Next (Iterateur);
        end loop;
        return Trouve;  
    end Found;

    ---------------------------------------------------------------
    --|
    --| Initialise une liste (l'a vide).
    --|
    --| Parametres d'entree :
    --|   L : liste a initialiser
    --|       (type objet)
    --|
    ---------------------------------------------------------------
    procedure Free (L : in out Objet) is
    begin
        Liste.Free (L);
    end Free;

    ---------------------------------------------------------------
    --|
    --| Compare deux listes entre elles.
    --|
    --| Parametres d'entree :
    --|   L1,L2 : les deux listes sur lesquelles porte la
    --|           comparaison (type objet)
    --| Parametres de sortie :
    --|   La fonction renvoie TRUE ou FALSE selon que les deux
    --|   listes sont identiques ou non.
    --|
    ---------------------------------------------------------------
    function Compare (L1, L2 : Objet) return Boolean is
        Idem : Boolean;
        Iterateur_L1 : Liste.Iterator;
    begin
        if (Liste.Length (L1) = Liste.Length (L2)) then
            Idem := True;  
            Liste.Init (Iterateur_L1, L1);
            while (Idem and (not Liste.Done (Iterateur_L1))) loop
                Idem := Found (L2, Liste.Value (Iterateur_L1));
                Liste.Next (Iterateur_L1);
            end loop;
        else
            Idem := False;
        end if;
        return Idem;
    end Compare;

end Nos_Listes;

E3 Meta Data

    nblk1=a
    nid=8
    hdr6=10
        [0x00] rec0=1f rec1=00 rec2=01 rec3=012
        [0x01] rec0=1f rec1=00 rec2=02 rec3=014
        [0x02] rec0=1c rec1=00 rec2=05 rec3=064
        [0x03] rec0=1b rec1=00 rec2=09 rec3=05a
        [0x04] rec0=18 rec1=00 rec2=06 rec3=06a
        [0x05] rec0=1d rec1=00 rec2=04 rec3=026
        [0x06] rec0=1d rec1=00 rec2=03 rec3=012
        [0x07] rec0=0f rec1=00 rec2=07 rec3=000
        [0x08] rec0=28 rec1=36 rec2=00 rec3=005
        [0x09] rec0=fd rec1=0c rec2=4c rec3=4d5
    tail 0x215429b30864d6c5e63e1 0x42a00088462060003
Free Block Chain:
  0x8: 0000  00 0a 00 49 80 0d 74 79 70 65 20 65 6c 65 6d 65  ┆   I  type eleme┆
  0xa: 0000  00 00 00 47 80 25 20 28 49 74 65 72 20 3a 20 6f  ┆   G % (Iter : o┆