|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T V
Length: 4519 (0x11a7)
Types: TextFile
Names: »V«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
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_Liste (Un_Pointeur : Pliste) return 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;