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

⟦0c55345dc⟧ Ada Source

    Length: 17408 (0x4400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Complement, seg_0499b7, seg_049a40, seg_049a6d

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 Field, Link, Identifier, Index, List_Generic,
     Complement_Identifier_Array, Exclusive_Generic_List;
package Complement is

    type Complement_Kind is (Animate, Place, Entity, Word, Verb, Unknown);

    type Object (Kind : Complement_Kind := Unknown) is private;

    procedure Copy (Input_Item : in Object; Output_Item : in out Object);
    procedure Put_Name (Item : in out Object;
                        Name : in Identifier.Object;
                        Ok : out Boolean);
    procedure Put_Word (Item : in out Object; A_Word : in Identifier.Object);
    procedure Put_Verb (Item : in out Object;
                        A_Synonym, A_Verb : in Identifier.Object);
    procedure Create_Number_Field (Item : in out Object;
                                   Field_Index : in Positive;
                                   Ok : out Boolean);
    procedure Create_Sentence_Field (Item : in out Object;
                                     Field_Index : in Positive;
                                     Ok : out Boolean);
    procedure Create_Enumerate_Field (Item : in out Object;
                                      Field_Index : in Positive;
                                      Ok : out Boolean);
    procedure Field_Put_Number (Item : in out Object;
                                Field_Index : in Positive;
                                Number : in Integer;
                                Ok : out Boolean);
    procedure Field_Put_Sentence (Item : in out Object;
                                  Field_Index : in Positive;
                                  Sentence : in Identifier.Object;
                                  Ok : out Boolean);
    procedure Field_Put_Enumerate (Item : in out Object;
                                   Field_Index : in Positive;
                                   Enumeration, Literal : in Positive;
                                   Ok : out Boolean);

    procedure Put_Movement (Item : in out Object; Place : in Positive);
    procedure Move (Item : in out Object);
    procedure Put_Exit (Item : in out Object;
                        Name, Start_Place, Start_Direction,
                        Next_Place, Next_Direction : in Positive;
                        Ok : out Boolean);

    function Exit_Exist
                (Item : in Object; Direction : in Positive) return Boolean;
    function Exits_Exist (Item : in Object) return Boolean;
    function Exit_Name
                (Item : in Object; Direction : in Positive) return Natural;
    function Next_Place
                (Item : in Object; Direction : in Positive) return Natural;
    function Next_Direction
                (Item : in Object; Direction : in Positive) return Natural;

    procedure Put_Place
                 (Item : in out Object; Place : in Natural; Ok : out Boolean);
    procedure Show (Item : in Object);

    procedure List_Exits_Init (Item : in out Object);
    procedure List_Exits_Next (Item : in out Object);
    function List_Exits_Direction (Item : in Object) return Natural;
    function List_Exits_Done (Item : in Object) return Boolean;

    procedure Put_Group (Item : in out Object;
                         A_Group : in Identifier.Object;
                         Ok : out Boolean);
    function Group (Item : in Object) return String;

    function Field_Is_A_Number
                (Item : in Object; Field_Index : in Positive) return Boolean;
    function Field_Is_A_Sentence
                (Item : in Object; Field_Index : in Positive) return Boolean;
    function Field_Is_An_Enumerate
                (Item : in Object; Field_Index : in Positive) return Boolean;
    function Field_Belong
                (Item : in Object; Field_Index : in Positive) return Boolean;

    function Is_A_Subject (Item : in Object) return Boolean;
    function Is_An_Animate (Item : in Object) return Boolean;
    function Is_A_Place (Item : in Object) return Boolean;
    function Is_An_Entity (Item : in Object) return Boolean;
    function Is_A_Word (Item : in Object) return Boolean;
    function Is_A_Verb (Item : in Object) return Boolean;

    function Name (Item : in Object) return String;
    function Place (Item : in Object) return Natural;

    function Field_Number
                (Item : in Object; Field_Index : in Positive) return Integer;
    function Field_Sentence
                (Item : in Object; Field_Index : in Positive) return String;
    function Field_Enumeration
                (Item : in Object; Field_Index : in Positive) return Natural;
    function Field_Literal
                (Item : in Object; Field_Index : in Positive) return Natural;

    Null_Object : constant Object;
    Animate_Object : constant Object;
    Place_Object : constant Object;
    Entity_Object : constant Object;

private
    package Field_List is new Exclusive_Generic_List
                                 (Element => Field.Object,
                                  Null_Element => Field.Null_Object,
                                  Show_Element => Field.Show,
                                  Get_Key => Field.Name);

    package Place_List is new List_Generic (Element => Index.Object);

    package Link_List is new Exclusive_Generic_List
                                (Element => Link.Object,
                                 Null_Element => Link.Null_Object,
                                 Show_Element => Link.Show,
                                 Get_Key => Link.Key);

    Null_Trip_Iterator : Place_List.Iterator;  
    Null_Exits_Iterator : Link_List.Iterator;


    type Object (Kind : Complement_Kind := Unknown) is
        record
            case Kind is
                when Animate =>
                    Animate_Name : Identifier.Object := Identifier.Null_Object;
                    Animate_Group : Identifier.Object := Identifier.Null_Object;
                    Animate_Fields : Field_List.Object :=
                       Field_List.Null_Object;
                    Animate_Place : Natural := 0;
                    Trip : Place_List.List := Place_List.Nil;
                    Trip_Iterator : Place_List.Iterator := Null_Trip_Iterator;
                when Place =>
                    Place_Name : Identifier.Object := Identifier.Null_Object;
                    Place_Group : Identifier.Object := Identifier.Null_Object;
                    Place_Fields : Field_List.Object := Field_List.Null_Object;
                    Exits : Link_List.Object := Link_List.Null_Object;
                    Exits_Iterator : Link_List.Iterator := Null_Exits_Iterator;
                when Entity =>
                    Entity_Name : Identifier.Object := Identifier.Null_Object;
                    Entity_Group : Identifier.Object := Identifier.Null_Object;
                    Entity_Fields : Field_List.Object := Field_List.Null_Object;
                    Entity_Place : Natural := 0;
                when Word =>
                    Word_Value : Identifier.Object := Identifier.Null_Object;
                    Word_Group : Identifier.Object := Identifier.Null_Object;
                when Verb =>
                    Verb_Value : Identifier.Object := Identifier.Null_Object;
                    Verb_Group : Identifier.Object := Identifier.Null_Object;
                when Unknown =>
                    null;
            end case;
        end record;

    Null_Object : constant Object := (Kind => Unknown);

    Animate_Object : constant Object :=
       (Kind => Animate,
        Animate_Group => Identifier.Null_Object,
        Animate_Name => Identifier.Null_Object,
        Animate_Fields => Field_List.Null_Object,
        Animate_Place => 0,
        Trip => Place_List.Nil,
        Trip_Iterator => Null_Trip_Iterator);

    Place_Object : constant Object := (Kind => Place,  
                                       Place_Group => Identifier.Null_Object,
                                       Place_Name => Identifier.Null_Object,
                                       Place_Fields => Field_List.Null_Object,
                                       Exits => Link_List.Null_Object,
                                       Exits_Iterator => Null_Exits_Iterator);

    Entity_Object : constant Object := (Kind => Entity,
                                        Entity_Name => Identifier.Null_Object,
                                        Entity_Group => Identifier.Null_Object,
                                        Entity_Fields => Field_List.Null_Object,
                                        Entity_Place => 0);

end Complement;

E3 Meta Data

    nblk1=10
    nid=f
    hdr6=12
        [0x00] rec0=15 rec1=00 rec2=01 rec3=01a
        [0x01] rec0=10 rec1=00 rec2=10 rec3=068
        [0x02] rec0=17 rec1=00 rec2=06 rec3=03c
        [0x03] rec0=14 rec1=00 rec2=02 rec3=07a
        [0x04] rec0=18 rec1=00 rec2=05 rec3=060
        [0x05] rec0=17 rec1=00 rec2=0d rec3=066
        [0x06] rec0=0f rec1=00 rec2=0b rec3=06a
        [0x07] rec0=18 rec1=00 rec2=0c rec3=05a
        [0x08] rec0=0e rec1=00 rec2=03 rec3=000
        [0x09] rec0=13 rec1=00 rec2=0d rec3=04c
        [0x0a] rec0=18 rec1=00 rec2=03 rec3=02e
        [0x0b] rec0=14 rec1=00 rec2=0c rec3=090
        [0x0c] rec0=1f rec1=00 rec2=0b rec3=014
        [0x0d] rec0=13 rec1=00 rec2=0f rec3=000
        [0x0e] rec0=00 rec1=00 rec2=00 rec3=019
        [0x0f] rec0=00 rec1=00 rec2=00 rec3=000
    tail 0x2174dfc46865f803febc3 0x42a00088462060003
Free Block Chain:
  0xf: 0000  00 0a 00 98 00 2c 2d 2d 20 65 6e 74 69 74 79 5f  ┆     ,-- entity_┆
  0xa: 0000  00 08 03 fc 80 1d 6c 65 6d 65 6e 74 20 3d 3e 20  ┆      lement => ┆
  0x8: 0000  00 0e 03 fc 80 10 20 72 65 74 75 72 6e 20 42 6f  ┆       return Bo┆
  0xe: 0000  00 04 00 49 00 17 20 20 20 20 70 72 6f 63 65 64  ┆   I      proced┆
  0x4: 0000  00 07 00 13 80 10 61 6d 65 3a 20 69 6e 20 73 74  ┆      ame: in st┆
  0x7: 0000  00 09 03 fc 80 37 63 65 5f 47 72 6f 75 70 20 3a  ┆     7ce_Group :┆
  0x9: 0000  00 00 00 63 80 2a 20 20 45 6e 74 69 74 79 5f 46  ┆   c *  Entity_F┆