|
|
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: 10240 (0x2800)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Bloc_Class, seg_037815, seg_037bad, seg_038f42
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦5a81ac88f⟧ »Space Info Vol 1«
└─⟦this⟧
with Bounded_String;
with String_Utilities;
with Error_Broadcaster;
package body Bloc_Class is
-- iterateur de la classe bloc_class
procedure Init (Iter : out Iterator; Coll : in Collection) is
begin
Iter := Iterator'First;
end Init;
procedure Next (Iter : in out Iterator) is
begin
Iter := Iter + 1;
end Next;
function Done (Iter : in Iterator) return Boolean is
begin
return (Iterator'Last = Iter);
end Done;
function Value (Iter : in Iterator) return Index is
begin
return Iter;
end Value;
function Send (To_Object : Object.Reference; The_Message : Object.Message)
return String is
begin
return ("Bloc Numero: " &
String_Utilities.Number_To_String (To_Object.Identity, 10, 2) &
" Mon Bloc englobant: " &
String_Utilities.Number_To_String
((Bloc_Collection.Table (To_Object.Identity).
Enclosing.Identity), 10, 2));
end Send;
function Send (To_Object : Object.Reference; The_Message : Object.Message)
return Object.Reference is
Bloc_Node : Bloc.Node;
Obj, Enclosing_Bloc : Object.Reference;
begin
Bloc_Node := Bloc_Collection.Table (To_Object.Identity).Node;
Enclosing_Bloc := Current_Bloc;
Current_Bloc := To_Object;
Obj := Bloc.Interpret (Bloc_Node, The_Message);
Current_Bloc := Enclosing_Bloc;
return Obj;
end Send;
function Send (To_Object : Object.Reference;
The_Argument : Object.Parameters.List)
return Object.Reference is
Local_Argument : Object.Parameters.List := The_Argument;
Bloc_Node : Bloc.Node;
Obj, Enclosing_Bloc, Iteration_Object : Object.Reference;
The_Message : Object.Message;
begin
Bounded_String.Copy (The_Message, "valeur");
Bloc_Node := Bloc_Collection.Table (To_Object.Identity).Node;
Enclosing_Bloc := Current_Bloc;
Current_Bloc := To_Object;
if (String_Utilities.Equal
(Bounded_String.Image
(Object.Parameters.Selector (Local_Argument)),
"tantQueVrai:", True)) then
Object.Parameters.Get (Local_Argument, Iteration_Object);
while (Object.Send (To_Object, The_Message).Identity = 1) loop
Obj := (Object.Send (Iteration_Object, The_Message));
end loop;
return Obj;
elsif (String_Utilities.Equal
(Bounded_String.Image
(Object.Parameters.Selector (Local_Argument)),
"tantQueFaux:", True)) then
Object.Parameters.Get (Local_Argument, Iteration_Object);
while (Object.Send (To_Object, The_Message).Identity = 0) loop
Obj := (Object.Send (Iteration_Object, The_Message));
end loop;
return Obj;
else
Bloc.Interpret (Bloc_Node, Local_Argument, Obj);
end if;
Current_Bloc := Enclosing_Bloc;
return Obj;
end Send;
function Create (Value : Object.Message) return Object.Reference is
begin
Next (Bloc_Collection.Iter);
return (Object.Tiny_Bloc, Bloc_Collection.Iter);
end Create;
procedure Set (Address : Bloc.Node) is
begin
Symbol.Create (Bloc_Collection.Table (Bloc_Collection.Iter).Table);
Bloc_Collection.Table (Bloc_Collection.Iter) :=
(Address, Bloc_Collection.Table (Bloc_Collection.Iter).Table,
Current_Bloc);
Current_Bloc := (Object.Tiny_Bloc, Bloc_Collection.Iter);
end Set;
procedure Close is
begin
Current_Bloc := Bloc_Collection.Table (Current_Bloc.Identity).Enclosing;
end Close;
function Already_Exist
(Identifier : Object.Message; Bloc : Object.Reference)
return Boolean is
Item : Object.Reference;
begin
Item := Bloc;
while ((not Symbol.Already_Exist
(Bounded_String.Image (Identifier),
Bloc_Collection.Table (Item.Identity).Table)) and
(Item.Identity /= Bloc_Collection.Table (Item.Identity).
Enclosing.Identity)) loop
Item := Bloc_Collection.Table (Item.Identity).Enclosing;
end loop;
return Symbol.Already_Exist
(Bounded_String.Image (Identifier),
Bloc_Collection.Table (Item.Identity).Table);
end Already_Exist;
procedure Local_Put (Identifier : Object.Message) is
Obj : Object.Reference;
begin
Symbol.Put (Bounded_String.Image (Identifier),
Bloc_Collection.Table (Current_Bloc.Identity).Table, Obj);
end Local_Put;
procedure Put (Identifier : Object.Message) is
Obj : Object.Reference := (Object.Tiny_Void, 0);
begin
if not Already_Exist (Identifier, Current_Bloc) then
Symbol.Put
(Bounded_String.Image (Identifier),
Bloc_Collection.Table (Current_Bloc.Identity).Table, Obj);
end if;
end Put;
procedure Set (Identifier : Object.Message; Obj : Object.Reference) is
Item : Object.Reference;
begin
Item := Current_Bloc;
while (not Symbol.Already_Exist
(Bounded_String.Image (Identifier),
Bloc_Collection.Table (Item.Identity).Table)) and
(Item.Identity /= Bloc_Collection.Table (Item.Identity).
Enclosing.Identity) loop
Item := Bloc_Collection.Table (Item.Identity).Enclosing;
end loop;
Symbol.Put (Bounded_String.Image (Identifier),
Bloc_Collection.Table (Item.Identity).Table, Obj);
end Set;
function Get (Identifier : Object.Message) return Object.Reference is
Item : Object.Reference;
begin
Item := Current_Bloc;
if (Already_Exist (Identifier, Current_Bloc)) then
while (not Symbol.Already_Exist
(Bounded_String.Image (Identifier),
Bloc_Collection.Table (Item.Identity).Table)) and
(Item.Identity /= Bloc_Collection.Table (Item.Identity).
Enclosing.Identity) loop
Item := Bloc_Collection.Table (Item.Identity).Enclosing;
end loop;
return (Symbol.Get (Bounded_String.Image (Identifier),
Bloc_Collection.Table (Item.Identity).Table));
else
raise Error_Broadcaster.Unknown_Variable;
end if;
exception
when Error_Broadcaster.Unknown_Variable =>
Error_Broadcaster.Unknownvariable (Identifier);
raise Error_Broadcaster.Unknown_Variable;
end Get;
begin
Symbol.Create (Bloc_Collection.Table (0).Table);
Bloc_Collection.Table (Bloc_Collection.Iter).Node := Bloc.Empty_Node;
Current_Bloc := (Object.Tiny_Bloc, 0);
Bloc_Collection.Table (Bloc_Collection.Iter).Enclosing := Current_Bloc;
Bounded_String.Copy (Predifined_Symbol, "tortue");
Local_Put (Predifined_Symbol);
Set (Predifined_Symbol, (Object.Tiny_Turtle, 0));
Bounded_String.Copy (Predifined_Symbol, "stylo");
Local_Put (Predifined_Symbol);
Set (Predifined_Symbol, (Object.Tiny_Pen, 0));
end Bloc_Class;
nblk1=9
nid=0
hdr6=12
[0x00] rec0=26 rec1=00 rec2=01 rec3=036
[0x01] rec0=00 rec1=00 rec2=02 rec3=038
[0x02] rec0=19 rec1=00 rec2=09 rec3=048
[0x03] rec0=14 rec1=00 rec2=05 rec3=040
[0x04] rec0=20 rec1=00 rec2=06 rec3=01c
[0x05] rec0=18 rec1=00 rec2=03 rec3=070
[0x06] rec0=19 rec1=00 rec2=08 rec3=030
[0x07] rec0=16 rec1=00 rec2=04 rec3=004
[0x08] rec0=11 rec1=00 rec2=07 rec3=001
tail 0x21530c54e84e49bc4a32b 0x42a00088462060003