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

⟦e106021e4⟧ Ada Source

    Length: 9216 (0x2400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package Slot, seg_04a349

Derivation

└─⟦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 Constant_String;  
with Fact_Reference;
with Output_Stream;
package Slot is

    type Types is (Integer, Boolean, Float, Character, Duration,
                   String, Enumeration, Reference, Undefined);

    type Object (Kind : Types := Integer) is private;

    Null_Object : constant Object;
    False, True : constant Object;

    function Value (I : Standard.Integer)   return Object;
    function Value (B : Standard.Boolean)   return Object;
    function Value (F : Standard.Float)     return Object;
    function Value (C : Standard.Character) return Object;
    function Value (D : Standard.Duration)  return Object;
    function Value (S : Standard.String)    return Object;

    function Get (The_Object : Object) return Standard.Integer;
    function Get (The_Object : Object) return Standard.Boolean;
    function Get (The_Object : Object) return Standard.Float;
    function Get (The_Object : Object) return Standard.Character;
    function Get (The_Object : Object) return Standard.Duration;
    function Get (The_Object : Object) return Standard.String;

    procedure Set (The_Object : in out Object; To : Standard.Integer);
    procedure Set (The_Object : in out Object; To : Standard.Boolean);
    procedure Set (The_Object : in out Object; To : Standard.Float);
    procedure Set (The_Object : in out Object; To : Standard.Character);
    procedure Set (The_Object : in out Object; To : Standard.Duration);
    procedure Set (The_Object : in out Object; To : Standard.String);

    function  Undefined_Value                      return Object;
    function  Is_Undefined   (The_Object : Object) return Standard.Boolean;
    procedure Make_Undefined (The_Object : in out Object);

    function Is_A_Reference (The_Object : Object) return Standard.Boolean;
    function Reference_Value
                (The_Reference : Fact_Reference.Object) return Object;
    function Get_Reference  (From_Object : Object) return Fact_Reference.Object;

    function Have_Same_Type (Left, Right : Object) return Standard.Boolean;

    procedure Put (The_Object : Object; Where : Output_Stream.Object);

    package Operators is

        function "="  (Left, Right : Object) return Standard.Boolean
            renames Slot."=";
        function "<"  (Left, Right : Object) return Standard.Boolean;
        function "<=" (Left, Right : Object) return Standard.Boolean;
        function ">"  (Left, Right : Object) return Standard.Boolean;
        function ">=" (Left, Right : Object) return Standard.Boolean;

        function "+" (Left, Right : Object) return Object;
        function "-" (Left, Right : Object) return Object;
        function "*" (Left, Right : Object) return Object;
        function "/" (Left, Right : Object) return Object;

        function "&" (Left, Right : Object) return Object;

        function "-"   (Right : Object) return Object;
        function "abs" (Right : Object) return Object;
    end Operators;

    generic
        type Enumeration_Values is (<>);
    package Enumeration_Facilities is

        function Value (Enumeration_Value : Enumeration_Values) return Object;
        function Get   (The_Object : Object) return Enumeration_Values;

        procedure Set (The_Object : in out Object; To : Enumeration_Values);
        procedure Put (The_Object : Object; Where : Output_Stream.Object);

    end Enumeration_Facilities;

    Illegal_Operation : exception;
    Typing_Error      : exception;

private
    type Object (Kind : Types := Integer) is
        record
            case Kind is
                when Integer =>
                    The_Integer : Standard.Integer := 0;
                when Float =>
                    The_Float : Standard.Float := 0.0;
                when Boolean =>
                    The_Boolean : Standard.Boolean := Standard.False;
                when Character =>
                    The_Character : Standard.Character := Ascii.Nul;
                when Duration =>
                    The_Duration : Standard.Duration := 0.0;
                when String =>
                    The_String : Constant_String.Object :=
                       Constant_String.Null_Object;
                when Enumeration =>
                    The_Enumeration : Standard.Integer := 0;  
                when Reference =>
                    The_Reference : Fact_Reference.Object :=
                       Fact_Reference.Null_Object;
                when Undefined =>
                    null;
            end case;
        end record;

    Null_Object : constant Slot.Object := (Kind => Undefined);
    False       : constant Slot.Object := (Kind        => Boolean,  
                                           The_Boolean => Standard.False);
    True        : constant Slot.Object := (Kind        => Boolean,  
                                           The_Boolean => Standard.True);
end Slot;


E3 Meta Data

    nblk1=8
    nid=4
    hdr6=e
        [0x00] rec0=1a rec1=00 rec2=01 rec3=024
        [0x01] rec0=00 rec1=00 rec2=05 rec3=018
        [0x02] rec0=11 rec1=00 rec2=06 rec3=0a0
        [0x03] rec0=18 rec1=00 rec2=08 rec3=010
        [0x04] rec0=02 rec1=00 rec2=02 rec3=016
        [0x05] rec0=1b rec1=00 rec2=03 rec3=008
        [0x06] rec0=17 rec1=00 rec2=07 rec3=000
        [0x07] rec0=48 rec1=51 rec2=64 rec3=768
    tail 0x2174ea728866e7f89a884 0x42a00088462063c03
Free Block Chain:
  0x4: 0000  00 00 03 97 00 28 20 20 20 20 20 20 20 20 74 79  ┆     (        ty┆