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

⟦bb439a8cd⟧ Ada Source

    Length: 6144 (0x1800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Class_Block, seg_033089

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 Bounded_String;

package body Class_Block is

    Ghost : Object.Reference;

    function Send (This_Message : Object.Keyword; To : Object.Reference)
                  return Object.Reference is
        Mess : Object.Keyword := This_Message;
        Ident : Object.Unary := Block.Get_Ident (Table (Object.Get (To)).Node);
    begin
        Object.Init (This => Mess);
        Object.Init (This => Ident);
        while not Object.Is_Done (This_Message) loop
            Block.Put_Table (This_Object => Object.Get (Mess),
                             Named => Object.Get (Ident),
                             Into => Table (Object.Get (To)).Node);
            Object.Next (Mess);
            Object.Next (Ident);
        end loop;
        return Block.Interpret (N => Table (Object.Get (To)).Node);
    end Send;


    function Send (This_Message : Object.Binary; To : Object.Reference)
                  return Object.Reference is
    begin
        return Object.Void_Reference;
    end Send;

    function Send (This_Message : Object.Unary; To : Object.Reference)
                  return Object.Reference is
        type Message is (En_Texte, Valeur);

        Token : Message;

        package Bs renames Bounded_String;

    begin
        if Bs.Length (Object.Get (This_Message)) /= 0 then
            begin
                Token := Message'Value (Bs.Image (Object.Get (This_Message)));
                case Token is
                    when En_Texte =>
                        return To;
                    when Valeur =>
                        return Block.Interpret
                                  (N => Table (Object.Get (To)).Node);
                end case;
            exception
                when Constraint_Error =>
                    return Object.Void_Reference;
            end;
        end if;
    end Send;

    function Create (Node : Block.Node := Block.Empty_Node)
                    return Object.Reference is
        use Object;
    begin
        Last := Last + 1;
        Table (Last).Node := Node;
        return Object.Create (Class => Object.Block_Class, Object => Last);
    end Create;


    function How_Many return Object.Index is
    begin
        return Last;
    end How_Many;

begin
    Ghost := Create (Block.Get_Current_Node);

end Class_Block;

E3 Meta Data

    nblk1=5
    nid=2
    hdr6=8
        [0x00] rec0=1d rec1=00 rec2=01 rec3=01c
        [0x01] rec0=01 rec1=00 rec2=04 rec3=012
        [0x02] rec0=1e rec1=00 rec2=03 rec3=00a
        [0x03] rec0=11 rec1=00 rec2=05 rec3=000
        [0x04] rec0=80 rec1=00 rec2=00 rec3=100
    tail 0x2152bbb7884cd44b4b7d9 0x42a00088462060003
Free Block Chain:
  0x2: 0000  00 00 00 2c 80 10 20 20 65 6e 64 20 47 65 74 5f  ┆   ,    end Get_┆