|
|
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: 6144 (0x1800)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Trees, seg_03030f
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
package body Trees is
type Node is
record
The_Element : Element;
Left_Subtree, Right_Subtree : Object;
end record;
procedure Copy (From_Tree : in Object; To_Tree : in out Object) is
begin
if From_Tree = null then
To_Tree := null;
else
To_Tree := new Node'(The_Element => From_Tree.The_Element,
Left_Subtree => null,
Right_Subtree => null);
Copy (From_Tree.Left_Subtree, To_Tree.Left_Subtree);
Copy (From_Tree.Right_Subtree, To_Tree.Right_Subtree);
end if;
exception
when Storage_Error =>
raise Overfull;
end Copy;
procedure Purge (The_Tree : in out Object) is
begin
The_Tree := null;
end Purge;
procedure Build (The_Element : Element;
The_Tree : in out Object;
Of_The_Son : Son) is
begin
if Of_The_Son = Left then
The_Tree := new Node'(The_Element => The_Element,
Left_Subtree => The_Tree,
Right_Subtree => null);
else
The_Tree := new Node'(The_Element => The_Element,
Left_Subtree => null,
Right_Subtree => The_Tree);
end if;
exception
when Storage_Error =>
raise Overfull;
end Build;
procedure Put (From_Tree : in out Object; To_Element : Element) is
begin
From_Tree.The_Element := To_Element;
exception
when Storage_Error =>
raise Tree_Is_Empty;
end Put;
procedure Swap (The_Son : Son;
From_Tree : in out Object;
With_Tree : in out Object) is
Temporary_Node : Object;
begin
if The_Son = Left then
Temporary_Node := From_Tree.Left_Subtree;
From_Tree.Left_Subtree := With_Tree;
else
Temporary_Node := From_Tree.Right_Subtree;
From_Tree.Right_Subtree := With_Tree;
end if;
With_Tree := Temporary_Node;
exception
when Storage_Error =>
raise Tree_Is_Empty;
end Swap;
function Is_Equal (Left, Right : Object) return Boolean is
begin
if Left = null and Right = null then
return True;
elsif Left = null or Right = null then
return False;
else
return
Left.The_Element = Right.The_Element and then
Is_Equal (Left.Left_Subtree, Right.Left_Subtree) and then
Is_Equal (Left.Right_Subtree, Right.Right_Subtree);
end if;
end Is_Equal;
function Is_Empty (The_Tree : Object) return Boolean is
begin
return (The_Tree = null);
end Is_Empty;
function Element_From (The_Tree : Object) return Element is
begin
return The_Tree.The_Element;
exception
when Constraint_Error =>
raise Tree_Is_Empty;
end Element_From;
function Son_Of (The_Tree : Object; The_Son : Son) return Object is
begin
if The_Son = Left then
return The_Tree.Left_Subtree;
else
return The_Tree.Right_Subtree;
end if;
exception
when Constraint_Error =>
raise Tree_Is_Empty;
end Son_Of;
end Trees;
nblk1=5
nid=4
hdr6=8
[0x00] rec0=22 rec1=00 rec2=01 rec3=026
[0x01] rec0=1f rec1=00 rec2=02 rec3=01a
[0x02] rec0=1f rec1=00 rec2=03 rec3=00e
[0x03] rec0=1a rec1=00 rec2=05 rec3=000
[0x04] rec0=c0 rec1=00 rec2=00 rec3=100
tail 0x217298b5e849a60f3f93a 0x42a00088462060003
Free Block Chain:
0x4: 0000 00 00 02 1f 80 13 72 65 74 75 72 6e 20 45 6c 65 ┆ return Ele┆