DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

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 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T V

⟦e9e1c6230⟧ TextFile

    Length: 4457 (0x1169)
    Types: TextFile
    Names: »V«

Derivation

└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
    └─ ⟦129cab021⟧ »DATA« 
        └─⟦this⟧ 

TextFile

generic
    type Symbole is private;  
    with function Equal (Left, Right : Symbole) return Boolean is <>;
package Bloc is           -- beau paquetage generique fabrique artisanalement !

    type Liste (Type_Cont : Boolean) is private;
    type Pliste is private;


    function Nouveau_Pere return Boolean;
    function Nouveau_Bloc_Frere_Cadet return Boolean;
    function Nouveau_Bloc_Frere_Aine return Boolean;
    function Nouveau_Bloc_Fils return Boolean;
    function Va_Bloc_Fils return Boolean;
    function Va_Bloc_Pere return Boolean;
    function Va_Bloc_Frere_Aine return Boolean;
    function Va_Bloc_Frere_Cadet return Boolean;
    function Dernier_Bloc return Boolean;


    procedure Insere_Offset (Un_Temps : Integer);
    function Donne_Offset return Integer;
    function Donne_Profondeur return Integer;
    function Scene_Existe (Un_Nom : Symbole) return Boolean;
    function Insere_Scene (Un_Nom : Symbole) return Boolean;
    function Va_Scene (Un_Nom : Symbole) return Boolean;
    procedure Insere_Type_Bloc (Un_Nom : Symbole);
    function Donne_Type_Bloc return Symbole;
    function Donne_Nouvelle_Liste (Type_Liste : Boolean) return Pliste;
    function Liste_Vide return Pliste;


    procedure Memorise_Bloc_Courant (I : Integer);
    procedure Retourne_Bloc_Memorise (I : Integer);


    procedure Insere_Liste_Symbole (Un_Element : Symbole; Une_Valeur : Integer);
    procedure Insere_Liste_Symbole (Un_Element : Symbole; Une_Liste : Liste);
    procedure Insere_Liste_Action (Une_Action : Symbole;
                                   Un_Acteur : Symbole;
                                   De : Integer;
                                   Vers : Integer;
                                   En : Integer);
    function Qui_Es_Tu (Un_Element : Symbole) return Liste;
    procedure Liste_Action_Donne (Une_Action : out Symbole;
                                  Un_Acteur : out Symbole;
                                  De : out Integer;
                                  Vers : out Integer;
                                  En : out Integer);
    function Liste_Action_Suivante return Boolean;
    function Liste_Action_Init return Boolean;

    procedure Prend_Liste (Une_Liste : in Liste);
    function Donne_Type_Liste return Boolean;
    function Donne_Taille_Liste return Integer;
    function Suivant return Boolean;
    function Donne_Element return Symbole;
    function Donne_Element return Integer;
    procedure Concate (Un_Element : Symbole; Une_Liste : in out Pliste);
    procedure Concate (Une_Valeur : Integer; Une_Liste : in out Pliste);

    procedure Construit_Liste_Offset;
    function Suivant_Liste_Offset_Est_Bloc_Courant return Boolean;
    function Init_Liste_Offset (Un_Nom : Symbole) return Boolean;

private

    type Pliste is access Liste;  
    type Liste (Type_Cont : Boolean) is
        record
            Suivant : Pliste := null;
            Precedent : Pliste := null;
            case Type_Cont is
                when True =>
                    Contenu : Symbole;
                when False =>
                    Valeur : Integer;
            end case;
        end record;

    type Grande_Liste (Action : Boolean);
    type Pgrande_Liste is access Grande_Liste;
    type Grande_Liste (Action : Boolean) is
        record
            Suivant : Pgrande_Liste := null;
            Precedent : Pgrande_Liste := null;
            case Action is
                when False =>
                    Index : Pliste := null;
                    Contenu : Symbole;  
                when True =>
                    Une_Action : Symbole;
                    Un_Acteur : Symbole;
                    De, Vers, En : Integer := -10;
            end case;
        end record;


    type Le_Bloc;
    type Pbloc is access Le_Bloc;

    --les types suivant sont dans cette partie car on les instancie, de maniere indirecte, par symbole.

    type Le_Bloc is
        record
            Liste_Symbole : Pgrande_Liste := null;
            Liste_Action : Pgrande_Liste := null;
            Offset : Integer := 0;
            Rep : Integer := -1;  
            Type_Bloc : Symbole;
            Dernier_Bloc : Boolean;
            Le_Pere : Pbloc := null;
            Le_Fils : Pbloc := null;
            Le_Frere_Aine : Pbloc := null;
            Le_Frere_Cadet : Pbloc := null;
            Un_Compteur : Integer range 1 .. 32 := 1;
            Profondeur : Integer := 0;
        end record;
end Bloc;