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

⟦3ab888a73⟧ Ada Source

    Length: 11264 (0x2c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Structure_Array, seg_04ae09

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 Text_Io, Structure, Generic_String_Sort_Array;
package body Structure_Array is


    package S_Array is new Generic_String_Sort_Array
                              (Element => Structure.Object,
                               Max_Element_Number => Max_Element,
                               Null_Element => Structure.Null_Object,
                               Get_Key => Structure.Name,
                               Show_Element => Structure.Show);

    The_Array : S_Array.Object := S_Array.Null_Object;

    procedure Put (Old_Name : in String;
                   New_Name : in Identifier.Object;
                   Ok : out Boolean) is

        New_Structure : Structure.Object;
        Local_Ok : Boolean;

    begin
        S_Array.Get (The_Array, New_Structure, Old_Name, Local_Ok);
        if Local_Ok then
            Structure.Put_Name (New_Structure, New_Name);
            S_Array.Put (The_Array, New_Structure, Ok);  
        else
            Ok := False;
        end if;
    end Put;

    procedure Create_Number_Field (Structure_Name : in Identifier.Object;
                                   Field_Index : in Positive;
                                   Ok : out Boolean) is

        A_Structure : Structure.Object;
        Local_Ok : Boolean;

    begin
        Ok := False;
        S_Array.Get (The_Array, A_Structure,
                     Identifier.Image (Structure_Name), Local_Ok);
        if Local_Ok then
            Structure.Create_Number_Field (A_Structure, Field_Index, Ok);
            S_Array.Put (The_Array, A_Structure);  
        end if;
    end Create_Number_Field;

    procedure Create_Sentence_Field (Structure_Name : in Identifier.Object;
                                     Field_Index : in Positive;
                                     Ok : out Boolean) is

        A_Structure : Structure.Object;
        Local_Ok : Boolean;

    begin
        Ok := False;
        S_Array.Get (The_Array, A_Structure,
                     Identifier.Image (Structure_Name), Local_Ok);
        if Local_Ok then
            Structure.Create_Sentence_Field (A_Structure, Field_Index, Ok);  
            S_Array.Put (The_Array, A_Structure);  
        end if;
    end Create_Sentence_Field;

    procedure Create_Enumerate_Field (Structure_Name : in Identifier.Object;
                                      Field_Index : in Positive;
                                      Ok : out Boolean) is

        A_Structure : Structure.Object;
        Local_Ok : Boolean;

    begin
        Ok := False;
        S_Array.Get (The_Array, A_Structure,
                     Identifier.Image (Structure_Name), Local_Ok);
        if Local_Ok then
            Structure.Create_Enumerate_Field (A_Structure, Field_Index, Ok);  
            S_Array.Put (The_Array, A_Structure);  
        end if;
    end Create_Enumerate_Field;

    procedure Field_Put_Number (Structure_Name : in Identifier.Object;
                                Field_Index : in Positive;
                                Number : in Integer;
                                Ok : out Boolean) is

        A_Structure : Structure.Object;
        Local_Ok : Boolean;

    begin
        Ok := False;
        S_Array.Get (The_Array, A_Structure,
                     Identifier.Image (Structure_Name), Local_Ok);
        if Local_Ok then
            Structure.Field_Put_Number (A_Structure, Field_Index, Number, Ok);  
            S_Array.Put (The_Array, A_Structure);  
        end if;
    end Field_Put_Number;

    procedure Field_Put_Sentence (Structure_Name : in Identifier.Object;
                                  Field_Index : in Positive;
                                  Sentence : in Identifier.Object;
                                  Ok : out Boolean) is

        A_Structure : Structure.Object;
        Local_Ok : Boolean;

    begin
        Ok := False;
        S_Array.Get (The_Array, A_Structure,
                     Identifier.Image (Structure_Name), Local_Ok);
        if Local_Ok then
            Structure.Field_Put_Sentence
               (A_Structure, Field_Index, Sentence, Ok);  
            S_Array.Put (The_Array, A_Structure);  
        end if;
    end Field_Put_Sentence;

    procedure Field_Put_Enumerate (Structure_Name : in Identifier.Object;
                                   Field_Index : in Positive;
                                   Enumeration, Literal : in Positive;
                                   Ok : out Boolean) is

        A_Structure : Structure.Object;
        Local_Ok : Boolean;

    begin
        Ok := False;
        S_Array.Get (The_Array, A_Structure,
                     Identifier.Image (Structure_Name), Local_Ok);
        if Local_Ok then
            Structure.Field_Put_Enumerate
               (A_Structure, Field_Index, Enumeration, Literal, Ok);  
            S_Array.Put (The_Array, A_Structure);  
        end if;
    end Field_Put_Enumerate;

    procedure Get_Subject (Structure_Name : in String;
                           Subject : out Complement.Object;
                           Ok : out Boolean) is

        A_Structure : Structure.Object;

    begin
        S_Array.Get (The_Array, A_Structure, Structure_Name, Ok);
        Subject := Structure.Subject (A_Structure);
    end Get_Subject;

    procedure Show is

    begin
        Text_Io.Put_Line ("Structure Array :");
        S_Array.Show (The_Array);
    end Show;

    function Subject (Structure_Name : in String) return Complement.Object is

        A_Structure : Structure.Object;
        Local_Ok : Boolean;

    begin
        S_Array.Get (The_Array, A_Structure, Structure_Name, Local_Ok);
        if Local_Ok then
            return Structure.Subject (A_Structure);
        else
            return Complement.Null_Object;
        end if;

    end Subject;
    function Belong (Structure_Name : in String) return Boolean is

    begin
        return S_Array.Belong (The_Array, Structure_Name);
    end Belong;

begin
    S_Array.Put (The_Array, Structure.Animate_Object);
    S_Array.Put (The_Array, Structure.Place_Object);
    S_Array.Put (The_Array, Structure.Entity_Object);
end Structure_Array;

E3 Meta Data

    nblk1=a
    nid=6
    hdr6=10
        [0x00] rec0=1c rec1=00 rec2=01 rec3=016
        [0x01] rec0=1d rec1=00 rec2=04 rec3=018
        [0x02] rec0=1a rec1=00 rec2=09 rec3=02c
        [0x03] rec0=1a rec1=00 rec2=03 rec3=012
        [0x04] rec0=19 rec1=00 rec2=05 rec3=08c
        [0x05] rec0=05 rec1=00 rec2=02 rec3=06c
        [0x06] rec0=23 rec1=00 rec2=08 rec3=058
        [0x07] rec0=08 rec1=00 rec2=07 rec3=000
        [0x08] rec0=13 rec1=00 rec2=07 rec3=001
        [0x09] rec0=0d rec1=0c rec2=76 rec3=4f7
    tail 0x2174f861086777ed4be9a 0x42a00088462060003
Free Block Chain:
  0x6: 0000  00 0a 00 0c 80 09 20 20 70 72 6f 63 65 64 75 09  ┆        procedu ┆
  0xa: 0000  00 00 00 04 80 01 20 01 02 02 20 20 02 02 02 02  ┆                ┆