|
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 - 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┆