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

⟦583ad08a9⟧ Ada Source

    Length: 7168 (0x1c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Data_Entree, seg_04af32

Derivation

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

E3 Source Code



with Transport_Stream;
package body Data_Entree is


    Iterator : S_Client_Memory.Iterator;

    function "=" (X, Y : Transport_Stream.Stream_Id) return Boolean
        renames Transport_Stream."=";



    procedure Init_Iterateur (From_List : Liste_Memory) is
    begin
        S_Client_Memory.Init (Iter => Iterator, L => From_List.L_Client_Memory);
    end Init_Iterateur;


    function Create (Stream : Transport_Stream.Stream_Id;
                     Number_Request : Natural) return Object is
        The_Object : Object;
    begin
        The_Object.Number_Request := Number_Request;
        The_Object.Stream := Stream;
        return The_Object;
    end Create;


    procedure Initialize (L : in out Liste_Memory) is
    begin
        S_Client_Memory.Free (L => L.L_Client_Memory);
    end Initialize;


    procedure Add (Element : Object; L : in out Liste_Memory) is
    begin
        L.L_Client_Memory := S_Client_Memory.Make
                                (X => Element, L => L.L_Client_Memory);
    end Add;

    function Equal (Left : Object; Right : Object) return Boolean is
    begin
        if Left.Number_Request = Right.Number_Request then
            if Left.Stream = Right.Stream then
                return True;
            else
                return False;
            end if;
        end if;
    end Equal;


    procedure Delete (Element : Object; L : in out Liste_Memory) is
        Current : Liste_Memory := L;
        Previous : Liste_Memory;  
        Iterator_1, Iterator_2 : S_Client_Memory.Iterator;
        Found : Boolean := False;
        Response : Object;
    begin
        S_Client_Memory.Free (L => Previous.L_Client_Memory);

        S_Client_Memory.Init (Iter => Iterator_1, L => Current.L_Client_Memory);
        S_Client_Memory.Init (Iter => Iterator_2,
                              L => Previous.L_Client_Memory);

        while not S_Client_Memory.Done (Iter => Iterator_1) loop
            Response := S_Client_Memory.Value (Iter => Iterator_1);
            if Equal (Element, Response) then
                S_Client_Memory.Next (Iter => Iterator_1);
            else
                Previous.L_Client_Memory :=
                   S_Client_Memory.Make (X => Response,
                                         L => Previous.L_Client_Memory);
                S_Client_Memory.Next (Iter => Iterator_1);
            end if;
            S_Client_Memory.Next (Iter => Iterator_2);
        end loop;
        L := Previous;
    end Delete;


    function Search (Number : Natural; L : Liste_Memory) return Object is  
        Found : Boolean := False;
        Response : Object;
    begin
        S_Client_Memory.Init (Iter => Iterator, L => L.L_Client_Memory);  
        while not Found and not S_Client_Memory.Done (Iter => Iterator) loop
            Response := S_Client_Memory.Value (Iter => Iterator);
            if Identifie (The => Response) = Number then
                Found := True;
            else
                S_Client_Memory.Next (Iter => Iterator);
            end if;
        end loop;  
        return Response;
    end Search;


    function Identifie (The : Object) return Natural is
    begin
        return The.Number_Request;
    end Identifie;


    function Streamer (The : Object) return Transport_Stream.Stream_Id is
    begin
        return The.Stream;
    end Streamer;
end Data_Entree;

E3 Meta Data

    nblk1=6
    nid=3
    hdr6=8
        [0x00] rec0=25 rec1=00 rec2=01 rec3=062
        [0x01] rec0=1d rec1=00 rec2=06 rec3=044
        [0x02] rec0=17 rec1=00 rec2=02 rec3=026
        [0x03] rec0=15 rec1=00 rec2=04 rec3=000
        [0x04] rec0=1c rec1=00 rec2=04 rec3=010
        [0x05] rec0=0b rec1=00 rec2=03 rec3=000
    tail 0x215480c52867a3188c27a 0x42a00088462060003
Free Block Chain:
  0x3: 0000  00 05 01 1d 80 2f 74 69 6f 6e 20 49 64 65 6e 74  ┆     /tion Ident┆
  0x5: 0000  00 00 00 7f 80 12 6e 74 2c 20 52 65 73 70 6f 6e  ┆      nt, Respon┆