|
|
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: 5120 (0x1400)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Check_Structure, seg_0484c0, seg_048c52, seg_048cc1, seg_048e00
└─⟦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 Error;
with Nos_Chaines;
with Nos_Listes;
with Structure_Des_Variables;
use Structure_Des_Variables;
package body Check_Structure is
package Liste_Nom is new Nos_Listes (Nos_Chaines.String_Text);
function Lieu_Is_Ok (La_Variable : Cellule) return Boolean is
La_Direction : Type_Direction;
Liste_Nom_Direction : Liste_Nom.Objet;
Iterateur_Lieu : Liste_Direction.Iterateur;
Double : Boolean;
begin
Double := False;
Liste_Direction.First (Iterateur_Lieu,
La_Variable.Specif.Direction_Lieu);
while ((not Double) and
not Liste_Direction.At_End (Iterateur_Lieu)) loop
La_Direction := Liste_Direction.Consult (Iterateur_Lieu);
Double := Liste_Nom.Found
(Liste_Nom_Direction, La_Direction.Direction);
if not Double then
Liste_Nom.Add (Liste_Nom_Direction, La_Direction.Direction);
end if;
Liste_Direction.Next (Iterateur_Lieu);
end loop;
return (not Double);
end Lieu_Is_Ok;
function Structure_Is_Ok return Boolean is
Ok : Boolean;
La_Variable : Cellule;
Nom_Variable : Nos_Chaines.String_Text;
Iterateur_Direction : Liste_Direction.Iterateur;
begin
Ok := True;
Premier;
while (not Fin) loop
La_Variable := Suivant;
if not La_Variable.Complet then
Ok := False;
Error.Semantic (La_Variable.Nom, Error.Definition_Incomplete);
else
case La_Variable.Type_Variable is
when Personnage =>
if (La_Variable.Specif.Position_Personnage = null) then
Ok := False;
Error.Semantic (La_Variable.Nom,
Error.Absence_Position);
end if;
when Objet =>
if (La_Variable.Specif.Position_Objet = null) then
Ok := False;
Error.Semantic (La_Variable.Nom,
Error.Absence_Position);
end if;
when Lieu =>
if (not Lieu_Is_Ok (La_Variable)) then
Ok := False;
Error.Semantic (La_Variable.Nom,
Error.Deux_Directions_Identiques);
end if;
when others =>
null;
end case;
end if;
end loop;
return Ok;
end Structure_Is_Ok;
end Check_Structure;
nblk1=4
nid=2
hdr6=6
[0x00] rec0=1b rec1=00 rec2=01 rec3=08a
[0x01] rec0=1a rec1=00 rec2=04 rec3=076
[0x02] rec0=18 rec1=00 rec2=03 rec3=000
[0x03] rec0=08 rec1=00 rec2=03 rec3=000
tail 0x215454c9a86587ffa5c52 0x42a00088462060003
Free Block Chain:
0x2: 0000 00 00 03 fc 80 19 20 20 20 20 20 20 20 20 20 20 ┆ ┆