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

⟦bcd929d91⟧ Ada Source

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

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 Text_Io, Enumeration, Generic_String_Sort_Array;
package body Enumeration_Array is

    package Enum_Array is new Generic_String_Sort_Array
                                 (Element => Enumeration.Object,
                                  Max_Element_Number => 30,
                                  Null_Element => Enumeration.Null_Object,
                                  Get_Key => Enumeration.Name,
                                  Show_Element => Enumeration.Show);

    The_Array : Enum_Array.Object := Enum_Array.Null_Object;
    An_Enumeration : Enumeration.Object;

    procedure Put_Literal
                 (Enumeration_Name, Literal_Name : in Identifier.Object;
                  Ok : out Boolean) is

        An_Enumeration : Enumeration.Object;
        Local_Ok : Boolean;

    begin
        Enum_Array.Get (The_Array, An_Enumeration,
                        Identifier.Image (Enumeration_Name), Local_Ok);
        if not Local_Ok then  
            Enumeration.Put_Name (An_Enumeration, Enumeration_Name);
        end if;
        Enumeration.Put_Literal (An_Enumeration, Literal_Name, Local_Ok);
        if Local_Ok then
            Enum_Array.Put (The_Array, An_Enumeration);  
        end if;  
        Ok := Local_Ok;
    end Put_Literal;

    procedure Show is

    begin
        Text_Io.Put_Line ("Enumeration Array :");
        Enum_Array.Show (The_Array);
    end Show;

    function Literal_Image
                (Enumeration_Index, Literal_Index : in Natural) return String is

        An_Enumeration : Enumeration.Object;
        Exist : Boolean;

    begin
        Enum_Array.Get (The_Array, An_Enumeration, Enumeration_Index, Exist);
        if Exist then
            return Enumeration.Literal_Image (An_Enumeration, Literal_Index);
        else
            return "";
        end if;  
    end Literal_Image;

    function Enum (Enumeration_Name : in String) return Natural is

    begin
        return Enum_Array.Index (The_Array, Enumeration_Name);
    end Enum;

    function Literal (Enumeration_Index : in Natural; Literal_Name : in String)
                     return Natural is

        An_Enumeration : Enumeration.Object;
        Exist : Boolean;

    begin
        Enum_Array.Get (The_Array, An_Enumeration, Enumeration_Index, Exist);
        if Exist then
            return Enumeration.Literal (An_Enumeration, Literal_Name);
        else
            return 0;
        end if;
    end Literal;

    function Enumeration_Belong (Enumeration_Name : in String) return Boolean is

    begin
        return Enum_Array.Belong (The_Array, Enumeration_Name);
    end Enumeration_Belong;

    function Literal_Belong
                (Enumeration_Index : in Natural; Literal_Name : in String)
                return Boolean is

        An_Enumeration : Enumeration.Object;
        Exist : Boolean;

    begin
        Enum_Array.Get (The_Array, An_Enumeration, Enumeration_Index, Exist);
        if Exist then
            return Enumeration.Belong (An_Enumeration, Literal_Name);
        else
            return False;
        end if;
    end Literal_Belong;

begin

    Enumeration.Put_Name (An_Enumeration, Identifier.From_String ("special"));
    Enum_Array.Put (The_Array, An_Enumeration);
    Enumeration.Put_Name (An_Enumeration, Identifier.From_String ("normal"));
    Enum_Array.Put (The_Array, An_Enumeration);

end Enumeration_Array;

E3 Meta Data

    nblk1=6
    nid=2
    hdr6=a
        [0x00] rec0=1a rec1=00 rec2=01 rec3=010
        [0x01] rec0=00 rec1=00 rec2=05 rec3=056
        [0x02] rec0=22 rec1=00 rec2=04 rec3=046
        [0x03] rec0=20 rec1=00 rec2=06 rec3=082
        [0x04] rec0=10 rec1=00 rec2=03 rec3=000
        [0x05] rec0=43 rec1=13 rec2=2b rec3=700
    tail 0x21544ed3c8657738b1a6e 0x42a00088462060003
Free Block Chain:
  0x2: 0000  00 00 01 d0 80 2b 74 69 6f 6e 2e 42 65 6c 6f 6e  ┆     +tion.Belon┆