|
|
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: 7168 (0x1c00)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Ne_Box, seg_01045e
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦5a81ac88f⟧ »Space Info Vol 1«
└─⟦this⟧
with Class_Behavior;
with Collection;
with Instance;
package body Ne_Box is
type Box_Structure is
record
Size : Natural;
State : States;
end record;
package Behavior is new Class_Behavior (Box_Structure, "BOXES");
------------------------------------------------------------------------------
function Size (O : Object) return Natural is
begin
return Behavior.Get (O).Size;
end Size;
function State (O : Object) return States is
begin
return Behavior.Get (O).State;
end State;
------------------------------------------------------------------------------
function Instances return Collection.Object is
begin
return Behavior.Instances;
end Instances;
function Instances (Kind : Existences := Empty_Boxes)
return Collection.Object is
function Empty_Predicate (O : Object) return Boolean is
begin
return Behavior.Get (O).State = Is_Empty;
end Empty_Predicate;
function Empty is new Collection.Restrict (Empty_Predicate);
begin
case Kind is
when All_Boxes =>
return Behavior.Instances;
when Empty_Boxes =>
return Empty (Behavior.Instances);
when others =>
return Behavior.Instances;
end case;
end Instances;
------------------------------------------------------------------------------
function Exist (With_State : States; In_Kind_Of_Collection : Existences)
return Boolean is
function Is_State (O : Object) return Boolean is
begin
return Behavior.Get (O).State = With_State;
end Is_State;
function Exist_State is new Collection.Exist (Is_State);
begin
return Exist_State (Instances (Kind => In_Kind_Of_Collection));
end Exist;
function Exist (Greater_Than : Natural; In_Kind_Of_Collection : Existences)
return Boolean is
function Is_Greater_Than (O : Object) return Boolean is
begin
return Behavior.Get (O).Size > Greater_Than;
end Is_Greater_Than;
function Exist_Greater is new Collection.Exist (Is_Greater_Than);
begin
return Exist_Greater (Instances (Kind => In_Kind_Of_Collection));
end Exist;
function Exist (Between : Natural;
And_Size : Natural;
In_Kind_Of_Collection : Existences) return Boolean is
function Is_Between (O : Object) return Boolean is
begin
return Behavior.Get (O).Size > Between and
Behavior.Get (O).Size < And_Size;
end Is_Between;
function Exist_Between is new Collection.Exist (Is_Between);
begin
return Exist_Between (Instances (Kind => In_Kind_Of_Collection));
end Exist;
------------------------------------------------------------------------------
function Add (With_Size : Natural := Default_Size;
With_State : States := Default_State) return Object is
A_Box : Box_Structure;
begin
A_Box.Size := With_Size;
A_Box.State := With_State;
return Behavior.Allocate (The_Element => A_Box);
end Add;
------------------------------------------------------------------------------
procedure Change (O : Object; With_Size : Natural; With_State : States) is
A_Box : Box_Structure;
begin
A_Box := Behavior.Get (The_Reference => O);
A_Box.Size := With_Size;
A_Box.State := With_State;
Behavior.Set (The_Reference => O, With_Value => A_Box);
end Change;
procedure Change (O : Object; With_State : States) is
A_Box : Box_Structure;
begin
A_Box := Behavior.Get (The_Reference => O);
A_Box.State := With_State;
Behavior.Set (The_Reference => O, With_Value => A_Box);
end Change;
------------------------------------------------------------------------------
procedure Delete (O : Object) is
begin
Behavior.Dispose (The_Reference => O);
end Delete;
------------------------------------------------------------------------------
procedure Clean is
begin
Behavior.Clear;
end Clean;
end Ne_Box;
nblk1=6
nid=0
hdr6=c
[0x00] rec0=25 rec1=00 rec2=01 rec3=05c
[0x01] rec0=1a rec1=00 rec2=06 rec3=01c
[0x02] rec0=05 rec1=00 rec2=02 rec3=020
[0x03] rec0=17 rec1=00 rec2=03 rec3=012
[0x04] rec0=19 rec1=00 rec2=05 rec3=004
[0x05] rec0=10 rec1=00 rec2=04 rec3=000
tail 0x2170c087c822c83b64bc0 0x42a00088462063c03