|
|
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: B T
Length: 18701 (0x490d)
Types: TextFile
Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
with Abstract_Tree;
with Element;
with Search_Tree;
with Station_Identifier;
with Table;
package body Symbol_Table is
procedure Insert (The_Name : in String; Ok : out Boolean) is
One_Element : Element.Object;
begin
if not Tree.Exist_Element
(The_Trees (Current_Table).The_Tree, The_Name) then
Tree.Insert_Element (The_Trees (Current_Table).The_Tree,
One_Element, The_Name);
Ok := True;
else
Ok := False;
end if;
end Insert;
procedure Set_Val (The_Name : in String;
The_Value : Element.Value;
Ok : out Boolean) is
Succes : Boolean := False;
One_Element : Element.Object;
Local_Current_Table : Table.Object := Current_Table;
Found : Boolean;
begin
while Local_Current_Table /= Table.Vide loop
Found := Tree.Exist_Element
(The_Trees (Local_Current_Table).The_Tree, The_Name);
if Found then
Tree.Consulter_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
if Succes then
One_Element.The_Value := The_Value;
Tree.Modifier_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
end if;
exit;
else
Local_Current_Table :=
The_Trees (Local_Current_Table).Imbrication;
end if;
end loop;
Ok := Succes;
end Set_Val;
procedure Set_Adress (The_Name : in String;
The_Adress : Element.Adress;
Ok : out Boolean) is
Succes : Boolean := False;
One_Element : Element.Object;
Local_Current_Table : Table.Object := Current_Table;
Found : Boolean;
begin
while Local_Current_Table /= Table.Vide loop
Found := Tree.Exist_Element
(The_Trees (Local_Current_Table).The_Tree, The_Name);
if Found then
Tree.Consulter_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
if Succes then
One_Element.The_Adresse := The_Adress;
Tree.Modifier_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
end if;
exit;
else
Local_Current_Table :=
The_Trees (Local_Current_Table).Imbrication;
end if;
end loop;
Ok := Succes;
end Set_Adress;
procedure Set_Type (The_Name : in String;
The_Type : Element.Element_Type;
Ok : out Boolean) is
Succes : Boolean := False;
One_Element : Element.Object;
begin
Tree.Consulter_Element (The_Trees (Current_Table).The_Tree,
The_Name, One_Element, Succes);
if Succes then
One_Element.The_Type := The_Type;
Tree.Modifier_Element (The_Trees (Current_Table).The_Tree,
The_Name, One_Element, Succes);
end if;
Ok := Succes;
end Set_Type;
procedure Set_New_Table (The_Name : in String;
The_Table : Table.Object;
Ok : out Boolean) is
Succes : Boolean := False;
One_Element : Element.Object;
begin
Tree.Consulter_Element (The_Trees (Current_Table).The_Tree,
The_Name, One_Element, Succes);
if Succes then
One_Element.The_Table := The_Table;
Tree.Modifier_Element (The_Trees (Current_Table).The_Tree,
The_Name, One_Element, Succes);
end if;
Ok := Succes;
end Set_New_Table;
procedure Set_Class (The_Name : in String;
The_Class : in Element.Class;
Ok : out Boolean) is
Succes : Boolean := False;
One_Element : Element.Object;
Local_Current_Table : Table.Object := Current_Table;
Found : Boolean;
begin
while Local_Current_Table /= Table.Vide loop
Found := Tree.Exist_Element
(The_Trees (Local_Current_Table).The_Tree, The_Name);
if Found then
Tree.Consulter_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
if Succes then
One_Element.The_Class :=
Element.Convert_To_Class (The_Class);
Tree.Modifier_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
end if;
exit;
else
Local_Current_Table :=
The_Trees (Local_Current_Table).Imbrication;
end if;
end loop;
Ok := Succes;
end Set_Class;
procedure Set_Num_Acteur
(The_Name : in String; The_Num : Natural; Ok : out Boolean) is
Succes : Boolean := False;
One_Element : Element.Object;
Local_Current_Table : Table.Object := Current_Table;
Found : Boolean;
begin
while Local_Current_Table /= Table.Vide loop
Found := Tree.Exist_Element
(The_Trees (Local_Current_Table).The_Tree, The_Name);
if Found then
Tree.Consulter_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
if Succes then
One_Element.The_Num_Acteur := The_Num;
Tree.Modifier_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
end if;
exit;
else
Local_Current_Table :=
The_Trees (Local_Current_Table).Imbrication;
end if;
end loop;
Ok := Succes;
end Set_Num_Acteur;
procedure Set_Num_Station (The_Name : in String;
The_Num_Station : Station_Identifier.Object;
Ok : out Boolean) is
Succes : Boolean := False;
One_Element : Element.Object;
Local_Current_Table : Table.Object := Current_Table;
Found : Boolean;
begin
while Local_Current_Table /= Table.Vide loop
Found := Tree.Exist_Element
(The_Trees (Local_Current_Table).The_Tree, The_Name);
if Found then
Tree.Consulter_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
if Succes then
One_Element.The_Num_Station := The_Num_Station;
Tree.Modifier_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
end if;
exit;
else
Local_Current_Table :=
The_Trees (Local_Current_Table).Imbrication;
end if;
end loop;
Ok := Succes;
end Set_Num_Station;
procedure Set_Instr_List (The_Name : in String;
The_Instr : Abstract_Tree.P_Instruction_List;
Ok : out Boolean) is
Succes : Boolean := False;
One_Element : Element.Object;
Local_Current_Table : Table.Object := Current_Table;
Found : Boolean;
begin
while Local_Current_Table /= Table.Vide loop
Found := Tree.Exist_Element
(The_Trees (Local_Current_Table).The_Tree, The_Name);
if Found then
Tree.Consulter_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
if Succes then
One_Element.The_Instr_List := The_Instr;
Tree.Modifier_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
end if;
exit;
else
Local_Current_Table :=
The_Trees (Local_Current_Table).Imbrication;
end if;
end loop;
Ok := Succes;
end Set_Instr_List;
procedure Get_Val (The_Name : in String;
The_Value : out Element.Value;
Ok : out Boolean) is
Local_Current_Table : Table.Object := Current_Table;
Found : Boolean;
Succes : Boolean := False;
One_Element : Element.Object;
begin
while Local_Current_Table /= Table.Vide loop
Found := Tree.Exist_Element
(The_Trees (Local_Current_Table).The_Tree, The_Name);
if Found then
Tree.Consulter_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
if Succes then
The_Value := One_Element.The_Value;
end if;
exit;
else
Local_Current_Table :=
The_Trees (Local_Current_Table).Imbrication;
end if;
end loop;
Ok := Succes;
end Get_Val;
procedure Get_Adress (The_Name : in String;
The_Adress : out Element.Adress;
Ok : out Boolean) is
Local_Current_Table : Table.Object := Current_Table;
Found : Boolean;
Succes : Boolean := False;
One_Element : Element.Object;
begin
while Local_Current_Table /= Table.Vide loop
Found := Tree.Exist_Element
(The_Trees (Local_Current_Table).The_Tree, The_Name);
if Found then
Tree.Consulter_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
if Succes then
The_Adress := One_Element.The_Adresse;
end if;
exit;
else
Local_Current_Table :=
The_Trees (Local_Current_Table).Imbrication;
end if;
end loop;
Ok := Succes;
end Get_Adress;
procedure Get_Type (The_Name : in String;
The_Type : out Element.Element_Type;
Ok : out Boolean) is
Local_Current_Table : Table.Object := Current_Table;
Succes : Boolean := False;
Found : Boolean;
One_Element : Element.Object;
begin
while Local_Current_Table /= Table.Vide loop
Found := Tree.Exist_Element
(The_Trees (Local_Current_Table).The_Tree, The_Name);
if Found then
Tree.Consulter_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
if Succes then
The_Type := One_Element.The_Type;
end if;
exit;
else
Local_Current_Table :=
The_Trees (Local_Current_Table).Imbrication;
end if;
end loop;
Ok := Succes;
end Get_Type;
procedure Get_Class (The_Name : in String;
The_Class : out Element.Class;
Ok : out Boolean) is
Local_Current_Table : Table.Object := Current_Table;
Succes : Boolean := False;
Found : Boolean;
One_Element : Element.Object;
begin
while Local_Current_Table /= Table.Vide loop
Found := Tree.Exist_Element
(The_Trees (Local_Current_Table).The_Tree, The_Name);
if Found then
Tree.Consulter_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
if Succes then
The_Class := One_Element.The_Class;
end if;
exit;
else
Local_Current_Table :=
The_Trees (Local_Current_Table).Imbrication;
end if;
end loop;
Ok := Succes;
end Get_Class;
procedure Get_Table (The_Name : in String;
The_Table : out Table.Object;
Ok : out Boolean) is
Succes : Boolean := False;
One_Element : Element.Object;
begin
Tree.Consulter_Element (The_Trees (Current_Table).The_Tree,
The_Name, One_Element, Succes);
Ok := Succes;
if Succes then
The_Table := One_Element.The_Table;
end if;
end Get_Table;
procedure Get_Num_Acteur (The_Name : in String;
The_Num : out Natural;
Ok : out Boolean) is
Local_Current_Table : Table.Object := Current_Table;
Succes : Boolean := False;
Found : Boolean;
One_Element : Element.Object;
begin
while Local_Current_Table /= Table.Vide loop
Found := Tree.Exist_Element
(The_Trees (Local_Current_Table).The_Tree, The_Name);
if Found then
Tree.Consulter_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
if Succes then
The_Num := One_Element.The_Num_Acteur;
end if;
exit;
else
Local_Current_Table :=
The_Trees (Local_Current_Table).Imbrication;
end if;
end loop;
Ok := Succes;
end Get_Num_Acteur;
procedure Get_Num_Station (The_Name : in String;
The_Num_Station : out Station_Identifier.Object;
Ok : out Boolean) is
Local_Current_Table : Table.Object := Current_Table;
Succes : Boolean := False;
Found : Boolean;
One_Element : Element.Object;
begin
while Local_Current_Table /= Table.Vide loop
Found := Tree.Exist_Element
(The_Trees (Local_Current_Table).The_Tree, The_Name);
if Found then
Tree.Consulter_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
if Succes then
The_Num_Station := One_Element.The_Num_Station;
end if;
exit;
else
Local_Current_Table :=
The_Trees (Local_Current_Table).Imbrication;
end if;
end loop;
Ok := Succes;
end Get_Num_Station;
procedure Get_Instr_List (The_Name : in String;
The_Instr : out Abstract_Tree.P_Instruction_List;
Ok : out Boolean) is
Local_Current_Table : Table.Object := Current_Table;
Succes : Boolean := False;
Found : Boolean;
One_Element : Element.Object;
begin
while Local_Current_Table /= Table.Vide loop
Found := Tree.Exist_Element
(The_Trees (Local_Current_Table).The_Tree, The_Name);
if Found then
Tree.Consulter_Element
(The_Trees (Local_Current_Table).The_Tree,
The_Name, One_Element, Succes);
if Succes then
The_Instr := One_Element.The_Instr_List;
end if;
exit;
else
Local_Current_Table :=
The_Trees (Local_Current_Table).Imbrication;
end if;
end loop;
Ok := Succes;
end Get_Instr_List;
function Is_Visible (The_Name : in String) return Boolean is
Local_Current_Table : Table.Object := Current_Table;
Found : Boolean;
begin
while Local_Current_Table /= Table.Vide loop
Found := Tree.Exist_Element
(The_Trees (Local_Current_Table).The_Tree, The_Name);
if Found then
exit;
else
Local_Current_Table :=
The_Trees (Local_Current_Table).Imbrication;
end if;
end loop;
return Found;
end Is_Visible;
function Is_Visible_Local (The_Name : in String) return Boolean is
Found : Boolean;
begin
return Tree.Exist_Element
(The_Trees (Current_Table).The_Tree, The_Name);
end Is_Visible_Local;
procedure Set_Table (The_Name : in String; Ok : out Boolean) is
Succes : Boolean;
begin
if Current_Top_Table <= Table.Max then
Set_New_Table (The_Name, Current_Top_Table + 1, Succes);
if Succes then
Current_Top_Table := Current_Top_Table + 1;
Ok := True;
else
Ok := False;
end if;
else
raise Table_Non_Disponible;
end if;
end Set_Table;
procedure Change_Current_Table (The_Name : in String; Ok : out Boolean) is
One_Table : Table.Object;
Succes : Boolean;
begin
Get_Table (The_Name, One_Table, Succes);
if Succes then
if One_Table /= Table.Vide then
Current_Table := One_Table;
Ok := True;
else
Ok := False;
end if;
else
Ok := False;
end if;
end Change_Current_Table;
procedure Leave_Table (Ok : out Boolean) is
begin
Current_Table := Table.Globale;
Ok := True;
end Leave_Table;
begin
for I in Table.Globale .. Table.Max loop
Tree.Create (The_Trees (I).The_Tree);
end loop;
The_Trees (Table.Globale).Imbrication := Table.Vide;
end Symbol_Table;