|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 22528 (0x5800)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Modify_Structure, seg_045deb, seg_04847d, seg_0484c8, seg_0486d7
└─⟦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⟧
with Structure_Des_Variables;
use Structure_Des_Variables;
package body Modify_Structure is
type Pointeur_De_Chaine is access Nos_Chaines.String_Text;
---------------------------------------------------------------
--|
--| Ajoute un etat a la liste d'etats d'une variable (s'il ne
--| s'y trouve pas deja)
--|
--| Parametres d'entree :
--| Nom_variable : nom de la variable sur laquelle porte la
--| modification (type Nos_Chaines.String_Text)
--| Ajout : etat a ajouter a la liste
--| (type Nos_Chaines.String_Text)
--| Sens : pour une communication, precise le sens concerne
--| par la modification (type Enum_Sens)
--|
---------------------------------------------------------------
procedure Ajouter_Etat (Nom_Variable : Nos_Chaines.String_Text;
Ajout : Nos_Chaines.String_Text;
Sens : Structure_Des_Variables.Enum_Sens) is
Trouve : Boolean;
Variable_A_Modifier : Structure_Des_Variables.Cellule;
Nouvel_Etat : Pointeur_De_Chaine;
begin
Nos_Chaines.Copy (Variable_A_Modifier.Nom, Nom_Variable);
Structure_Des_Variables.Find (Variable_A_Modifier, Trouve);
if Trouve then
Nouvel_Etat := new Nos_Chaines.String_Text;
Nos_Chaines.Copy (Nouvel_Etat.all, Ajout);
case Variable_A_Modifier.Type_Variable is
when Communication =>
case Sens is
when Sens1 =>
Liste_Etat.Add (Variable_A_Modifier.Specif.
Sens1.Etat_Communication,
Nouvel_Etat.all);
when Sens2 =>
Liste_Etat.Add (Variable_A_Modifier.Specif.
Sens2.Etat_Communication,
Nouvel_Etat.all);
when Les_Deux_Sens =>
Liste_Etat.Add (Variable_A_Modifier.Specif.
Sens1.Etat_Communication,
Nouvel_Etat.all);
Liste_Etat.Add (Variable_A_Modifier.Specif.
Sens2.Etat_Communication,
Nouvel_Etat.all);
when others =>
null;
end case;
when Lieu =>
Liste_Etat.Add (Variable_A_Modifier.Specif.Etat_Lieu,
Nouvel_Etat.all);
when Objet =>
Liste_Etat.Add (Variable_A_Modifier.Specif.Etat_Objet,
Nouvel_Etat.all);
when Personnage =>
Liste_Etat.Add (Variable_A_Modifier.Specif.Etat_Personnage,
Nouvel_Etat.all);
when others =>
null;
end case;
Structure_Des_Variables.Replace (Variable_A_Modifier);
end if;
end Ajouter_Etat;
---------------------------------------------------------------
--|
--| Supprime un etat a la liste d'etats d'une variable (s'il
--| s'y trouve effectivement)
--|
--| Parametres d'entree :
--| Nom_variable : nom de la variable sur laquelle porte la
--| modification (type Nos_Chaines.String_Text)
--| A_Supprimer : etat a supprimer a la liste
--| (type Nos_Chaines.String_Text)
--| Sens : pour une communication, precise le sens concerne
--| par la modification (type Enum_Sens)
--|
---------------------------------------------------------------
procedure Supprimer_Etat (Nom_Variable : Nos_Chaines.String_Text;
A_Supprimer : Nos_Chaines.String_Text;
Sens : Structure_Des_Variables.Enum_Sens) is
Trouve : Boolean;
Variable_A_Modifier : Structure_Des_Variables.Cellule;
begin
Nos_Chaines.Copy (Variable_A_Modifier.Nom, Nom_Variable);
Structure_Des_Variables.Find (Variable_A_Modifier, Trouve);
if Trouve then
case Variable_A_Modifier.Type_Variable is
when Communication =>
case Sens is
when Sens1 =>
Liste_Etat.Delete
(Variable_A_Modifier.Specif.
Sens1.Etat_Communication, A_Supprimer);
when Sens2 =>
Liste_Etat.Delete
(Variable_A_Modifier.Specif.
Sens2.Etat_Communication, A_Supprimer);
when Les_Deux_Sens =>
Liste_Etat.Delete
(Variable_A_Modifier.Specif.
Sens1.Etat_Communication, A_Supprimer);
Liste_Etat.Delete
(Variable_A_Modifier.Specif.
Sens2.Etat_Communication, A_Supprimer);
when others =>
null;
end case;
when Lieu =>
Liste_Etat.Delete
(Variable_A_Modifier.Specif.Etat_Lieu, A_Supprimer);
when Objet =>
Liste_Etat.Delete
(Variable_A_Modifier.Specif.Etat_Objet, A_Supprimer);
when Personnage =>
Liste_Etat.Delete
(Variable_A_Modifier.Specif.Etat_Personnage,
A_Supprimer);
when others =>
null;
end case;
Structure_Des_Variables.Replace (Variable_A_Modifier);
end if;
end Supprimer_Etat;
---------------------------------------------------------------
--|
--| Ajoute un contenu ou une possession a la liste de contenus
--| ou de possessions d'une variable (si cet element ne s'y
--| trouve pas deja)
--|
--| Parametres d'entree :
--| Nom_variable : nom de la variable sur laquelle porte la
--| modification (type Nos_Chaines.String_Text)
--| Ajout : element a ajouter a la liste concernee
--| (type Nos_Chaines.String_Text)
--|
---------------------------------------------------------------
procedure Ajouter_Contenu_Possession
(Nom_Variable : Nos_Chaines.String_Text;
Ajout : Nos_Chaines.String_Text) is
Contenu_Possession : Structure_Des_Variables.Cellule;
Ptr_Contenu_Possession : Structure_Des_Variables.P_Cellule;
Trouve : Boolean;
Variable_A_Modifier : Structure_Des_Variables.Cellule;
begin
Nos_Chaines.Copy (Variable_A_Modifier.Nom, Nom_Variable);
Structure_Des_Variables.Find (Variable_A_Modifier, Trouve);
if Trouve then
Nos_Chaines.Copy (Contenu_Possession.Nom, Ajout);
Structure_Des_Variables.Find (Contenu_Possession, Trouve);
if Trouve then
Ptr_Contenu_Possession := new Cellule;
Ptr_Contenu_Possession.all := Contenu_Possession;
case Variable_A_Modifier.Type_Variable is
when Objet =>
Liste_Contenu.Add (Variable_A_Modifier.
Specif.Contenu_Objet,
Ptr_Contenu_Possession);
when Personnage =>
Liste_Possession.Add (Variable_A_Modifier.Specif.
Possession_Personnage,
Ptr_Contenu_Possession);
when others =>
null;
end case;
Structure_Des_Variables.Replace (Variable_A_Modifier);
end if;
end if;
end Ajouter_Contenu_Possession;
---------------------------------------------------------------
--|
--| Supprime un contenu ou une possession a la liste de contenus
--| ou de possessions d'une variable (si cet element s'y trouve
--| effectivement)
--|
--| Parametres d'entree :
--| Nom_variable : nom de la variable sur laquelle porte la
--| modification (type Nos_Chaines.String_Text)
--| Ajout : element a supprimer a la liste concernee
--| (type Nos_Chaines.String_Text)
--|
---------------------------------------------------------------
procedure Supprimer_Contenu_Possession
(Nom_Variable : Nos_Chaines.String_Text;
A_Supprimer : Nos_Chaines.String_Text) is
Contenu_Possession : Structure_Des_Variables.Cellule;
Ptr_Contenu_Possession : Structure_Des_Variables.P_Cellule;
Trouve : Boolean;
Variable_A_Modifier : Structure_Des_Variables.Cellule;
begin
Nos_Chaines.Copy (Variable_A_Modifier.Nom, Nom_Variable);
Structure_Des_Variables.Find (Variable_A_Modifier, Trouve);
if Trouve then
Nos_Chaines.Copy (Contenu_Possession.Nom, A_Supprimer);
Structure_Des_Variables.Find (Contenu_Possession, Trouve);
if Trouve then
Ptr_Contenu_Possession := new Cellule;
Ptr_Contenu_Possession.all := Contenu_Possession;
case Variable_A_Modifier.Type_Variable is
when Objet =>
Liste_Contenu.Delete (Variable_A_Modifier.
Specif.Contenu_Objet,
Ptr_Contenu_Possession);
when Personnage =>
Liste_Possession.Delete
(Variable_A_Modifier.Specif.Possession_Personnage,
Ptr_Contenu_Possession);
when others =>
null;
end case;
Structure_Des_Variables.Replace (Variable_A_Modifier);
end if;
end if;
end Supprimer_Contenu_Possession;
---------------------------------------------------------------
--|
--| Modifie le champ position d'une variable
--|
--| Parametres d'entree :
--| Nom_variable : nom de la variable sur laquelle porte la
--| modification (type Nos_Chaines.String_Text)
--| Nouvelle_Position : nom de la nouvelle position
--| (type Nos_Chaines.String_Text)
--|
---------------------------------------------------------------
procedure Modifier_Position (Nom_Variable : Nos_Chaines.String_Text;
Nouvelle_Position : Nos_Chaines.String_Text) is
La_Position : Structure_Des_Variables.Cellule;
Ptr_Position : Structure_Des_Variables.P_Cellule;
Trouve : Boolean;
Variable_A_Modifier : Structure_Des_Variables.Cellule;
begin
Nos_Chaines.Copy (Variable_A_Modifier.Nom, Nom_Variable);
Structure_Des_Variables.Find (Variable_A_Modifier, Trouve);
if Trouve then
Nos_Chaines.Copy (La_Position.Nom, Nouvelle_Position);
Structure_Des_Variables.Find (La_Position, Trouve);
if Trouve then
Ptr_Position := new Cellule;
Ptr_Position.all := La_Position;
case Variable_A_Modifier.Type_Variable is
when Objet =>
Variable_A_Modifier.Specif.Position_Objet :=
Ptr_Position;
when Personnage =>
Variable_A_Modifier.Specif.Position_Personnage :=
Ptr_Position;
when others =>
null;
end case;
Structure_Des_Variables.Replace (Variable_A_Modifier);
end if;
end if;
end Modifier_Position;
-- IL Y A LA 1 ERREUR IRREDUCTIBLE DS LE CAS OU 1 OBJ 'A', REF DE LIEU
-- D'1 OBJET 'B' PREND CET OBJET 'B' PR Nelle POSITION
-- ********************************************************************
-- ********************************************************************
---------------------------------------------------------------
--|
--| Modifie le champ description d'une variable
--|
--| Parametres d'entree :
--| Nom_variable : nom de la variable sur laquelle porte la
--| modification (type Nos_Chaines.String_Text)
--| Description : nouvelle description
--| (type Nos_Chaines.String_Text)
--| Sens : pour une communication, precise le sens concerne
--| par la modification (type Enum_Sens)
--|
---------------------------------------------------------------
procedure Modifier_Description
(Nom_Variable : Nos_Chaines.String_Text;
Nouvelle_Description : Nos_Chaines.String_Text;
Sens : Structure_Des_Variables.Enum_Sens) is
Trouve : Boolean;
Variable_A_Modifier : Structure_Des_Variables.Cellule;
begin
Nos_Chaines.Copy (Variable_A_Modifier.Nom, Nom_Variable);
Structure_Des_Variables.Find (Variable_A_Modifier, Trouve);
if Trouve then
case Variable_A_Modifier.Type_Variable is
when Communication =>
case Sens is
when Sens1 =>
Nos_Chaines.Copy (Variable_A_Modifier.Specif.
Sens1.Description_Communication,
Nouvelle_Description);
when Sens2 =>
Nos_Chaines.Copy (Variable_A_Modifier.Specif.
Sens2.Description_Communication,
Nouvelle_Description);
when Les_Deux_Sens =>
Nos_Chaines.Copy (Variable_A_Modifier.Specif.
Sens1.Description_Communication,
Nouvelle_Description);
Nos_Chaines.Copy (Variable_A_Modifier.Specif.
Sens2.Description_Communication,
Nouvelle_Description);
when others =>
null;
end case;
when Lieu =>
Nos_Chaines.Copy (Variable_A_Modifier.
Specif.Description_Lieu,
Nouvelle_Description);
when Objet =>
Nos_Chaines.Copy (Variable_A_Modifier.
Specif.Description_Objet,
Nouvelle_Description);
when Personnage =>
Nos_Chaines.Copy (Variable_A_Modifier.Specif.
Description_Personnage,
Nouvelle_Description);
when others =>
null;
end case;
Structure_Des_Variables.Replace (Variable_A_Modifier);
end if;
end Modifier_Description;
---------------------------------------------------------------
--|
--| Modifie le champ valeur d'une variable
--|
--| Parametres d'entree :
--| Nom_variable : nom de la variable sur laquelle porte la
--| modification (type Nos_Chaines.String_Text)
--| Valeur : nouvelle valeur
--| (type integer)
--|
---------------------------------------------------------------
procedure Modifier_Valeur (Nom_Variable : Nos_Chaines.String_Text;
Nouvelle_Valeur : Integer) is
Trouve : Boolean;
Variable_A_Modifier : Structure_Des_Variables.Cellule;
begin
Nos_Chaines.Copy (Variable_A_Modifier.Nom, Nom_Variable);
Structure_Des_Variables.Find (Variable_A_Modifier, Trouve);
if Trouve then
if (Variable_A_Modifier.Type_Variable = Compteur) then
Variable_A_Modifier.Specif.Valeur_Compteur := Nouvelle_Valeur;
end if;
Structure_Des_Variables.Replace (Variable_A_Modifier);
end if;
end Modifier_Valeur;
---------------------------------------------------------------
--|
--| Modifie le champ existe d'une variable.
--|
--| Parametres d'entree :
--| Nom_variable : nom de la variable sur laquelle porte la
--| modification (type Nos_Chaines.String_Text)
--| Existence : nouvel etat d'existence
--| (type boolean)
--|
---------------------------------------------------------------
procedure Modifier_Existence (Nom_Variable : Nos_Chaines.String_Text;
Existence : Boolean) is
Trouve : Boolean;
Variable_A_Modifier : Structure_Des_Variables.Cellule;
begin
Nos_Chaines.Copy (Variable_A_Modifier.Nom, Nom_Variable);
Structure_Des_Variables.Find (Variable_A_Modifier, Trouve);
if Trouve then
Variable_A_Modifier.Existe := Existence;
Structure_Des_Variables.Replace (Variable_A_Modifier);
end if;
end Modifier_Existence;
end Modify_Structure;
nblk1=15
nid=f
hdr6=26
[0x00] rec0=1a rec1=00 rec2=01 rec3=05a
[0x01] rec0=13 rec1=00 rec2=0b rec3=07e
[0x02] rec0=13 rec1=00 rec2=08 rec3=004
[0x03] rec0=17 rec1=00 rec2=10 rec3=006
[0x04] rec0=13 rec1=00 rec2=04 rec3=036
[0x05] rec0=13 rec1=00 rec2=15 rec3=086
[0x06] rec0=19 rec1=00 rec2=13 rec3=00a
[0x07] rec0=12 rec1=00 rec2=14 rec3=03c
[0x08] rec0=16 rec1=00 rec2=09 rec3=05a
[0x09] rec0=14 rec1=00 rec2=0a rec3=00c
[0x0a] rec0=16 rec1=00 rec2=0d rec3=06e
[0x0b] rec0=13 rec1=00 rec2=0e rec3=054
[0x0c] rec0=16 rec1=00 rec2=12 rec3=02c
[0x0d] rec0=14 rec1=00 rec2=0c rec3=02c
[0x0e] rec0=10 rec1=00 rec2=11 rec3=092
[0x0f] rec0=14 rec1=00 rec2=07 rec3=02a
[0x10] rec0=18 rec1=00 rec2=06 rec3=03c
[0x11] rec0=18 rec1=00 rec2=02 rec3=048
[0x12] rec0=09 rec1=00 rec2=03 rec3=000
[0x13] rec0=00 rec1=00 rec2=00 rec3=000
[0x14] rec0=00 rec1=00 rec2=00 rec3=000
tail 0x2154269a8864c83eaf5d9 0x42a00088462060003
Free Block Chain:
0xf: 0000 00 05 00 bc 80 09 72 6f 75 76 65 29 3b 20 20 09 ┆ rouve); ┆
0x5: 0000 00 00 00 bb 80 1b 20 20 20 20 20 4e 6f 75 76 65 ┆ Nouve┆