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

⟦b53ff9821⟧ Ada Source

    Length: 7168 (0x1c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Exclusive_Generic_List, seg_042f41, seg_043bc5, seg_0449b9, seg_044bbb

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



with Text_Io;
use Text_Io;  
package body Exclusive_Generic_List is

    procedure Put (List : in out Object; Item : in Element; Ok : out Boolean) is

        An_Iterator : Iterator;
        The_Same : Boolean := False;

    begin
        Init (An_Iterator, List);
        while not Done (An_Iterator) and not The_Same loop
            The_Same := Get_Key (Value (An_Iterator)) = Get_Key (Item);
            Next (An_Iterator);
        end loop;
        if not The_Same then  
            List.Object := Exclusive_List.Make (X => Item, L => List.Object);
        end if;
        Ok := not The_Same;
    end Put;

    procedure Put (List : in out Object; Item : in Element) is

        An_Iterator : Iterator;
        Temporary_List : Object;
        The_Same : Boolean := False;

    begin
        if not Belong (List, Get_Key (Item)) then
            List.Object := Exclusive_List.Make (X => Item, L => List.Object);
        else
            Init (An_Iterator, List);
            while not Done (An_Iterator) loop
                Temporary_List.Object := Exclusive_List.Make
                                            (X => Value (An_Iterator),
                                             L => Temporary_List.Object);
                if Get_Key (Value (An_Iterator)) = Get_Key (Item) then
                    Exclusive_List.Set_First (Temporary_List.Object, Item);
                end if;
                Next (An_Iterator);
            end loop;
            Free (List);
            Copy (Temporary_List, List);
            Free (Temporary_List);
        end if;
    end Put;

    procedure Get (List : in Object;
                   Item : out Element;
                   Key : in String;
                   Ok : out Boolean) is

        An_Iterator : Iterator;
        The_Same : Boolean := False;

    begin
        Init (An_Iterator, List);
        while not Done (An_Iterator) and not The_Same loop
            Item := Value (An_Iterator);
            The_Same := Get_Key (Value (An_Iterator)) = Key;
            Next (An_Iterator);
        end loop;
        if The_Same then
            Ok := True;
        else
            Ok := False;
            Item := Null_Element;
        end if;
    end Get;

    procedure Copy (Input_List : in Object; Output_List : in out Object) is

        An_Iterator : Iterator;

    begin  
        Init (An_Iterator, Input_List);
        while not Done (An_Iterator) loop
            Output_List.Object := Exclusive_List.Make
                                     (Value (An_Iterator), Output_List.Object);
            Next (An_Iterator);
        end loop;
    end Copy;

    procedure Free (List : in out Object) is

    begin
        Exclusive_List.Free (List.Object);
    end Free;

    procedure Show (List : in Object) is

        An_Iterator : Iterator;

    begin
        Init (An_Iterator, List);
        while not Done (An_Iterator) loop
            Show_Element (Item => Value (An_Iterator));
            Next (An_Iterator);
        end loop;
        New_Line;
    end Show;

    function Is_Empty (List : in Object) return Boolean is

    begin
        return Exclusive_List.Is_Empty (List.Object);
    end Is_Empty;

    function Belong (List : in Object; Key : in String) return Boolean is

        Item : Element;  
        Ok : Boolean;

    begin  
        Get (List, Item, Key, Ok);
        return Ok;
    end Belong;

    function Length (List : in Object) return Natural is
    begin
        return Exclusive_List.Length (List.Object);
    end Length;

    procedure Init (An_Iterator : out Iterator; List : in Object) is

    begin
        Exclusive_List.Init (Iter => An_Iterator.Object, L => List.Object);
    end Init;


    procedure Next (An_Iterator : in out Iterator) is

    begin
        Exclusive_List.Next (Iter => An_Iterator.Object);
    end Next;

    function Value (An_Iterator : in Iterator) return Element is

    begin
        return Exclusive_List.Value (Iter => An_Iterator.Object);
    end Value;

    function Done (An_Iterator : in Iterator) return Boolean is

    begin
        return Exclusive_List.Done (Iter => An_Iterator.Object);
    end Done;

end Exclusive_Generic_List;

E3 Meta Data

    nblk1=6
    nid=0
    hdr6=c
        [0x00] rec0=21 rec1=00 rec2=01 rec3=02a
        [0x01] rec0=12 rec1=00 rec2=05 rec3=040
        [0x02] rec0=22 rec1=00 rec2=04 rec3=032
        [0x03] rec0=06 rec1=00 rec2=02 rec3=03a
        [0x04] rec0=29 rec1=00 rec2=06 rec3=00c
        [0x05] rec0=13 rec1=00 rec2=03 rec3=001
    tail 0x21743c0548634452c2a15 0x42a00088462060003