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

⟦f685b4038⟧ Ada Source

    Length: 7168 (0x1c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package Slot, seg_026564, seg_026ce0

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

package Slot is

    type Element is private;
    type Kind    is (Integer, String, Character, Boolean, Void);


    function Make (The_Variable : Standard.String; With_Kind : Kind)
                  return Element;
    -- make an element with empty value

    function Make (The_Variable : Standard.String;
                   With_Value   : Standard.Integer)   return Element;
    function Make (The_Variable : Standard.String; With_Value : Standard.String)
                  return Element;
    function Make (The_Variable : Standard.String;
                   With_Value   : Standard.Character) return Element;
    function Make (The_Variable : Standard.String;
                   With_Value   : Standard.Boolean)   return Element;
    -- make an element with a specific value


    function Name_Of (The_Element : Element) return Standard.String;

    function ind_Of (The_Element : Element) return Kind;
    -- used to avoid raising the Illegal_Access_Error exception

    function Is_Empty_Value (The_Element : Element) return Standard.Boolean;
    -- used to avoid raising the Empty_Value_Error exception

    function Value_Of (The_Element : Element) return Standard.String;
    function Value_Of (The_Element : Element) return Standard.Integer;
    function Value_Of (The_Element : Element) return Standard.Character;
    function Value_Of (The_Element : Element) return Standard.Boolean;
    -- Empty_Value_Error will be raises if Is_Empty_Value (The_Element) is true.
    -- Illegal_Access_Error is raised when an illegal access on value is trying
    -- (ie. accessing for an Integer value when the element is a String).

    Illegal_Access_Error : exception;
    -- raised by accessing values when the element have not the desired value
    Empty_Value_Error : exception;
    -- raised by accessing values when the element is empty   -- (ie. Is_Empty_Value is true)


    type Fields is (On_Name, On_Kind, On_Value, On_None);

    generic
        Field : Fields := On_Value;
    function Is_Equal (Left, Right : Element) return Standard.Boolean;

    generic
        Field : Fields := On_Value;
    function Is_Less (Left, Right : Element) return Standard.Boolean;

    generic
        Field : Fields := On_Value;
    function Is_Most (Left, Right : Element) return Standard.Boolean;

    -- Fields
    --      Name  : Name_Of (Left) <op> Name_Of (Right)
    --      Kind  : Name and Kind_Of( Left) <op> Kind_Of (Right)
    --      Value : Name and Kind and Value_Of (Left) <op> Value_of (Right)


    function  Image   (The_Element : Element) return Standard.String;
    procedure Display (The_Element   : Element;
                       String_Before : Standard.String := "");

-------------------------------------------------------------------------------
private
    type Value (Is_Kind_Of : Kind := Void) is
        record  
            case Is_Kind_Of is
                when String =>
                    String : Umps_Defs.String := (others => Ascii.Nul);
                when Integer =>
                    Integer : Standard.Integer := 0;
                when Character =>
                    Character : Standard.Character := Ascii.Nul;
                when Boolean =>
                    Boolean : Standard.Boolean := False;
                when Void =>
                    Void : Standard.Character := Ascii.Nul;
            end case;
        end record;

    type Element is
        record
            The_Name  : Umps_Defs.Name   := Umps_Defs.Null_Name;
            The_Kind  : Kind             := Void;  
            Empty     : Standard.Boolean := True;  
            The_Value : Value;  
        end record;
end Slot;
-------------------------------------------------------------------------------

E3 Meta Data

    nblk1=6
    nid=5
    hdr6=a
        [0x00] rec0=1c rec1=00 rec2=01 rec3=01a
        [0x01] rec0=00 rec1=00 rec2=02 rec3=002
        [0x02] rec0=12 rec1=00 rec2=04 rec3=002
        [0x03] rec0=1b rec1=00 rec2=06 rec3=09a
        [0x04] rec0=1c rec1=00 rec2=03 rec3=000
        [0x05] rec0=09 rec1=00 rec2=04 rec3=000
    tail 0x21520436683aa678de73e 0x42a00088462063c03
Free Block Chain:
  0x5: 0000  00 00 00 1e 80 1b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ┆      ----------┆