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

⟦05faa7b9e⟧ Ada Source

    Length: 19456 (0x4c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Afficher_Structure, seg_0499fa, seg_049e41

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 Display;
with Nos_Chaines;  
with Consult_Structure;
with Text_Io;  
with Structure_Des_Variables;
use Structure_Des_Variables;

package body Afficher_Structure is

    ---------------------------------------------------------------
    procedure Afficher_Description (Description : Nos_Chaines.String_Text) is
    begin
        Text_Io.Put ("Description : ");
        Nos_Chaines.Print_Line (Description);
    end Afficher_Description;

    ---------------------------------------------------------------
    procedure Afficher_Source (Source : P_Cellule) is
    begin
        Text_Io.Put ("Source : ");
        if Source /= null then
            Nos_Chaines.Print_Line (Source.Nom);
        else
            Text_Io.Put_Line (" ");
        end if;
    end Afficher_Source;

    ---------------------------------------------------------------
    procedure Afficher_Destination (Destination : P_Cellule) is
    begin
        Text_Io.Put ("Destination : ");
        if Destination /= null then
            Nos_Chaines.Print_Line (Destination.Nom);
        else
            Text_Io.Put_Line (" ");
        end if;
    end Afficher_Destination;

    ---------------------------------------------------------------
    procedure Afficher_Position (Variable : Structure_Des_Variables.Cellule) is
    begin
        Text_Io.Put ("Position : ");
        Nos_Chaines.Print_Line
           (Consult_Structure.Consult_Position (Variable.Nom));
    end Afficher_Position;

    ---------------------------------------------------------------
    procedure Afficher_Etat (Les_Etats : Liste_Etat.Objet) is
        Iterateur : Liste_Etat.Iterateur;
    begin
        Liste_Etat.First (Iterateur, Les_Etats);
        while (not Liste_Etat.At_End (Iterateur)) loop
            Display.Write_In_Continue (Liste_Etat.Consult (Iterateur));  
            Liste_Etat.Next (Iterateur);  
            if (not Liste_Etat.At_End (Iterateur)) then
                Display.Write_In_Continue (", ");  
            end if;
        end loop;
        Display.New_Line_On_World;
    end Afficher_Etat;

    ---------------------------------------------------------------
    procedure Afficher_Contenu (Les_Contenus : Liste_Contenu.Objet) is
        Iterateur : Liste_Contenu.Iterateur;
        Le_Objet : P_Cellule;
    begin
        Liste_Contenu.First (Iterateur, Les_Contenus);
        while (not Liste_Contenu.At_End (Iterateur)) loop
            Le_Objet := Liste_Contenu.Consult (Iterateur);
            if Le_Objet /= null then  
                if Consult_Structure.Consult_Existence (Le_Objet.Nom) then
                    Display.Write_In_Continue (Le_Objet.Nom);
                end if;
            end if;
            Liste_Contenu.Next (Iterateur);
            if (not Liste_Contenu.At_End (Iterateur)) then
                Display.Write_In_Continue (", ");
            end if;
        end loop;
        Display.New_Line_On_World;
    end Afficher_Contenu;

    ---------------------------------------------------------------
    procedure Afficher_Possession (Les_Possessions : Liste_Possession.Objet) is
        Iterateur : Liste_Possession.Iterateur;
        Le_Objet : P_Cellule;
    begin
        Liste_Possession.First (Iterateur, Les_Possessions);
        while (not Liste_Possession.At_End (Iterateur)) loop
            Le_Objet := Liste_Possession.Consult (Iterateur);
            if Le_Objet /= null then  
                if Consult_Structure.Consult_Existence (Le_Objet.Nom) then
                    Display.Write_In_Continue (Le_Objet.Nom);
                end if;  
            end if;
            Liste_Possession.Next (Iterateur);
            if (not Liste_Possession.At_End (Iterateur)) then
                Display.Write_In_Continue (", ");
            end if;
        end loop;
        Display.New_Line_On_World;
    end Afficher_Possession;

    ---------------------------------------------------------------
    procedure Afficher_Direction (Les_Directions : Liste_Direction.Objet) is
        Iterateur : Liste_Direction.Iterateur;
        La_Direction : Type_Direction;
    begin
        Text_Io.Put ("Direction : ");
        Liste_Direction.First (Iterateur, Les_Directions);
        while (not Liste_Direction.At_End (Iterateur)) loop
            La_Direction := Liste_Direction.Consult (Iterateur);
            Nos_Chaines.Print (La_Direction.Direction);
            if La_Direction.Communication /= null then
                Nos_Chaines.Print (La_Direction.Communication.Nom);
            end if;
            Liste_Direction.Next (Iterateur);
            if (not Liste_Direction.At_End (Iterateur)) then
                Text_Io.Put (", ");
            end if;
        end loop;
        Text_Io.Put_Line (" ");
    end Afficher_Direction;

    ---------------------------------------------------------------
    procedure Listing_Etat (Nom_Variable : Nos_Chaines.String_Text;
                            Sens : Structure_Des_Variables.Enum_Sens) is
        Trouve : Boolean;
        Variable_De_Recherche : Structure_Des_Variables.Cellule;
    begin
        Nos_Chaines.Copy (Variable_De_Recherche.Nom, Nom_Variable);
        Structure_Des_Variables.Find (Variable_De_Recherche, Trouve);
        if Trouve then
            case Variable_De_Recherche.Type_Variable is
                when Communication =>
                    case Sens is
                        when Sens1 =>
                            Afficher_Etat (Variable_De_Recherche.Specif.
                                           Sens1.Etat_Communication);
                        when Sens2 =>
                            Afficher_Etat (Variable_De_Recherche.Specif.
                                           Sens2.Etat_Communication);
                        when others =>
                            null;
                    end case;
                when Lieu =>
                    Afficher_Etat (Variable_De_Recherche.Specif.Etat_Lieu);
                when Objet =>
                    Afficher_Etat (Variable_De_Recherche.Specif.Etat_Objet);
                when Personnage =>
                    Afficher_Etat (Variable_De_Recherche.
                                   Specif.Etat_Personnage);
                when others =>
                    null;
            end case;
        end if;
    end Listing_Etat;

    ---------------------------------------------------------------
    procedure Listing_Possession_Contenu
                 (Nom_Variable : Nos_Chaines.String_Text) is
        Trouve : Boolean;
        Variable_De_Recherche : Structure_Des_Variables.Cellule;
    begin
        Nos_Chaines.Copy (Variable_De_Recherche.Nom, Nom_Variable);
        Structure_Des_Variables.Find (Variable_De_Recherche, Trouve);
        if Trouve then
            case Variable_De_Recherche.Type_Variable is
                when Objet =>
                    Afficher_Contenu (Variable_De_Recherche.
                                      Specif.Contenu_Objet);
                when Personnage =>
                    Afficher_Possession (Variable_De_Recherche.Specif.
                                         Possession_Personnage);
                when others =>
                    null;
            end case;
        end if;
    end Listing_Possession_Contenu;

    ---------------------------------------------------------------
    procedure Afficher_Variable (La_Variable :
                                    Structure_Des_Variables.Cellule) is
    begin
        Text_Io.Put ("NOM : ");
        Nos_Chaines.Print_Line (La_Variable.Nom);
        Text_Io.Put ("EXISTENCE : ");
        Text_Io.Put_Line (Boolean'Image ((La_Variable.Existe)));
        Text_Io.Put ("COMPLET : ");
        Text_Io.Put_Line (Boolean'Image ((La_Variable.Complet)));
        Text_Io.Put ("TYPE : ");
        Text_Io.Put_Line (Enum_Type'Image (La_Variable.Type_Variable));
        case La_Variable.Type_Variable is
            when Communication =>
                Text_Io.Put_Line ("Sens1 : ");
                Afficher_Source (La_Variable.Specif.Sens1.Source);
                Afficher_Destination (La_Variable.Specif.Sens1.Destination);
                Afficher_Description (La_Variable.Specif.Sens1.
                                      Description_Communication);
                Text_Io.Put ("Etat : ");
                Afficher_Etat (La_Variable.Specif.Sens1.Etat_Communication);
                Text_Io.Put_Line ("Sens2 : ");
                Afficher_Source (La_Variable.Specif.Sens2.Source);
                Afficher_Destination (La_Variable.Specif.Sens2.Destination);
                Afficher_Description (La_Variable.Specif.Sens2.
                                      Description_Communication);
                Text_Io.Put ("Etat : ");
                Afficher_Etat (La_Variable.Specif.Sens2.Etat_Communication);
            when Compteur =>
                Text_Io.Put ("Valeur : ");
                Text_Io.Put_Line (Integer'Image
                                     (La_Variable.Specif.Valeur_Compteur));
            when Lieu =>
                Afficher_Description (La_Variable.Specif.Description_Lieu);
                Text_Io.Put ("Etat : ");
                Afficher_Etat (La_Variable.Specif.Etat_Lieu);
                Afficher_Direction (La_Variable.Specif.Direction_Lieu);
            when Objet =>
                Afficher_Description (La_Variable.Specif.Description_Objet);
                Text_Io.Put ("Etat : ");
                Afficher_Etat (La_Variable.Specif.Etat_Objet);
                Afficher_Position (La_Variable);
                Text_Io.Put ("Contenu : ");
                Afficher_Contenu (La_Variable.Specif.Contenu_Objet);
            when Personnage =>
                Afficher_Description (La_Variable.Specif.
                                      Description_Personnage);
                Text_Io.Put ("Etat : ");
                Afficher_Etat (La_Variable.Specif.Etat_Personnage);
                Afficher_Position (La_Variable);
                Text_Io.Put ("Possession : ");
                Afficher_Possession (La_Variable.Specif.Possession_Personnage);
            when Preposition | Verbe =>
                Text_Io.Put ("Signification : ");
                Text_Io.Put_Line (Nos_Chaines.Infinite_String.Image
                                     (La_Variable.Specif.Signification));
            when Sans_Type =>
                null;
        end case;
    end Afficher_Variable;


    procedure Afficher_Variable (La_Variable : Nos_Chaines.String_Text) is
        Trouve : Boolean;
        Variable_De_Recherche : Structure_Des_Variables.Cellule;
    begin
        Nos_Chaines.Copy (Variable_De_Recherche.Nom, La_Variable);
        Structure_Des_Variables.Find (Variable_De_Recherche, Trouve);
        if Trouve then
            Afficher_Variable (Variable_De_Recherche);
        end if;
    end Afficher_Variable;


    procedure Afficher_Arbre_Nom is  
        The_Variable : Structure_Des_Variables.Cellule;
    begin
        Structure_Des_Variables.Premier;
        while (not Structure_Des_Variables.Fin) loop
            The_Variable := Structure_Des_Variables.Suivant;
            Nos_Chaines.Print_Line (The_Variable.Nom);
        end loop;
    end Afficher_Arbre_Nom;


    procedure Afficher_Arbre_Total is
        The_Variable : Structure_Des_Variables.Cellule;
    begin
        Structure_Des_Variables.Premier;
        while (not Structure_Des_Variables.Fin) loop
            The_Variable := Structure_Des_Variables.Suivant;
            Afficher_Variable (The_Variable);  
            Text_Io.Put_Line
               ("--------------------------------------------------");
        end loop;
    end Afficher_Arbre_Total;

    procedure Afficher_Verbes is
        The_Variable : Structure_Des_Variables.Cellule;
        Le_Premier_Verbe : Boolean := True;
        Nombre_De_Verbe : Integer := 0;
    begin
        Display.Write_On_World ("Les actions disponibles sont :");
        Structure_Des_Variables.Premier;
        while (not Structure_Des_Variables.Fin) loop
            The_Variable := Structure_Des_Variables.Suivant;
            if (The_Variable.Type_Variable = Structure_Des_Variables.Verbe) then
                if (not Le_Premier_Verbe) then
                    if (Nombre_De_Verbe = 6) then
                        Display.Write_In_Continue (", ");
                        Display.New_Line_On_World;--aller a la ligne
                    else
                        Display.Write_In_Continue (", ");
                    end if;
                else
                    Le_Premier_Verbe := False;
                end if;  
                Display.Write_In_Continue (The_Variable.Nom);
                Nombre_De_Verbe := Nombre_De_Verbe + 1;
            end if;
        end loop;
        Display.New_Line_On_World;
    end Afficher_Verbes;


end Afficher_Structure;

E3 Meta Data

    nblk1=12
    nid=10
    hdr6=20
        [0x00] rec0=20 rec1=00 rec2=01 rec3=03e
        [0x01] rec0=18 rec1=00 rec2=11 rec3=06a
        [0x02] rec0=00 rec1=00 rec2=0c rec3=004
        [0x03] rec0=19 rec1=00 rec2=0f rec3=01a
        [0x04] rec0=18 rec1=00 rec2=0a rec3=020
        [0x05] rec0=16 rec1=00 rec2=06 rec3=004
        [0x06] rec0=13 rec1=00 rec2=0b rec3=020
        [0x07] rec0=17 rec1=00 rec2=0d rec3=054
        [0x08] rec0=17 rec1=00 rec2=07 rec3=024
        [0x09] rec0=01 rec1=00 rec2=12 rec3=01a
        [0x0a] rec0=10 rec1=00 rec2=08 rec3=062
        [0x0b] rec0=13 rec1=00 rec2=03 rec3=02a
        [0x0c] rec0=16 rec1=00 rec2=05 rec3=004
        [0x0d] rec0=1d rec1=00 rec2=04 rec3=028
        [0x0e] rec0=15 rec1=00 rec2=0e rec3=024
        [0x0f] rec0=08 rec1=00 rec2=02 rec3=000
        [0x10] rec0=08 rec1=00 rec2=02 rec3=000
        [0x11] rec0=07 rec1=00 rec2=0e rec3=000
    tail 0x21547124a86606a195fc7 0x42a00088462060003
Free Block Chain:
  0x10: 0000  00 09 00 2f 80 12 69 63 68 65 72 5f 41 72 62 72  ┆   /  icher_Arbr┆
  0x9: 0000  00 00 02 b2 80 1f 6f 6c 65 61 6e 27 49 6d 61 67  ┆      olean'Imag┆