|
|
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: 12288 (0x3000)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Generic_Class, seg_04b4c4, separate Generic_Fact_Base
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
separate (Generic_Fact_Base)
package body Generic_Class is
The_Class_Object : Class.Object;
function Slot_Count return Natural is
First : Natural := Slot_Names'Pos (Slot_Names'First);
Last : Natural := Slot_Names'Pos (Slot_Names'Last);
begin
return Last - First + 1;
end Slot_Count;
function As_Query_Slot_Name
(Slot_Name : Slot_Names) return Query.Slot_Names is
begin
return Slot_Names'Pos (Slot_Name) -
Slot_Names'Pos (Slot_Names'First) + 1;
end As_Query_Slot_Name;
function As_Class_Slot_Name
(Slot_Name : Slot_Names) return Class.Slot_Names is
begin
return Slot_Names'Pos (Slot_Name) -
Slot_Names'Pos (Slot_Names'First) + 1;
end As_Class_Slot_Name;
function As_Anonymous (What : Patterns) return Query.Patterns is
Result : Query.Patterns (1 .. Slot_Count);
begin
forSlot_Name in What'Range loop
Result (As_Query_Slot_Name (Slot_Name)) := What (Slot_Name);
end loop;
return Result;
end As_Anonymous;
function As_Anonymous (What : Slots) return Class.Slots is
Result : Class.Slots (1 .. Slot_Count);
begin
for Slot_Name in What'Range loop
Result (As_Class_Slot_Name (Slot_Name)) := What (Slot_Name);
end loop;
return Result;
end As_Anonymous;
function Get_Slot_Names_Images return Class.Slot_Names_Images is
Result : Class.Slot_Names_Images (1 .. Slot_Count);
begin
for I in Slot_Names loop
Result (As_Class_Slot_Name (I)) :=
Constant_String.Value (Slot_Names'Image (I));
end loop;
return Result;
end Get_Slot_Names_Images;
function Class_Object return Class.Object is
begin
return The_Class_Object;
end Class_Object;
function Exist (What : Patterns) return Query.Object is
begin
return Query.Object'(Kind => Query.Find,
Class => Class.Class_Name_Of (The_Class_Object),
Size => Slot_Count,
Value => As_Anonymous (What));
end Exist;
function Not_Any (What : Patterns) return Query.Object is
begin
return Query.Object'(Kind => Query.Check_No,
Class => Class.Class_Name_Of (The_Class_Object),
Size => Slot_Count,
Value => As_Anonymous (What));
end Not_Any;
function Such_As (What : Patterns) return Predicate.Object is
begin
return Predicate.Collection (As_Anonymous (What));
end Such_As;
procedure Check_Class_Membership (For_Object : Class.User_Object) is
begin
if Class."/=" (Class.Class_Of (For_Object), The_Class_Object) then
raise Illegal_Access;
end if;
end Check_Class_Membership;
function Get (The_Fact : Class.User_Object) return Slots is
Result : Slots;
begin
Check_Class_Membership (For_Object => The_Fact);
for Slot in Slot_Names loop
Result (Slot) := Class.Get (The_Object => The_Fact,
The_Slot => As_Class_Slot_Name (Slot));
end loop;
return Result;
end Get;
function Get (The_Fact : Class.User_Object; The_Slot : Slot_Names)
return Slot.Object is
begin
Check_Class_Membership (For_Object => The_Fact);
return Class.Get (The_Fact, The_Slot => As_Class_Slot_Name (The_Slot));
end Get;
function Get (The_Fact : Class.User_Object; The_Slot : Slot_Names)
return Class.User_Object is
begin
return Class.As_User_Object (Get (The_Fact, The_Slot));
end Get;
function Get (The_Object : Class.User_Object; The_Slot : Slot_Names)
return Integer is
begin
return Slot.Get (Generic_Class.Get (The_Object, The_Slot));
end Get;
function Get (The_Object : Class.User_Object; The_Slot : Slot_Names)
return Boolean is
begin
return Slot.Get (Generic_Class.Get (The_Object, The_Slot));
end Get;
function Get (The_Object : Class.User_Object; The_Slot : Slot_Names)
return Float is
begin
return Slot.Get (Generic_Class.Get (The_Object, The_Slot));
end Get;
function Get (The_Object : Class.User_Object; The_Slot : Slot_Names)
return Character is
begin
return Slot.Get (Generic_Class.Get (The_Object, The_Slot));
end Get;
function Get (The_Object : Class.User_Object; The_Slot : Slot_Names)
return Duration is
begin
return Slot.Get (Generic_Class.Get (The_Object, The_Slot));
end Get;
function Get (The_Object : Class.User_Object; The_Slot : Slot_Names)
return String is
begin
return Slot.Get (Generic_Class.Get (The_Object, The_Slot));
end Get;
procedure Add (The_Fact : Slots; Its_Reference : out Slot.Object) is
begin
Class.Add (To_Class => The_Class_Object,
The_Instance => As_Anonymous (The_Fact),
Its_Reference => Its_Reference);
end Add;
procedure Add (The_Fact : Slots) is
Unused_Slot : Slot.Object;
begin
Class.Add (To_Class => The_Class_Object,
The_Instance => As_Anonymous (The_Fact),
Its_Reference => Unused_Slot);
end Add;
procedure Delete (The_Fact : Class.User_Object) is
begin
Check_Class_Membership (For_Object => The_Fact);
Class.Delete (The_Fact);
end Delete;
procedure Change (The_Fact : Class.User_Object; Value : Slots) is
begin
Check_Class_Membership (For_Object => The_Fact);
Class.Change (The_Fact, To_Value => As_Anonymous (Value));
end Change;
procedure Change (The_Fact : Class.User_Object;
The_Slot : Slot_Names;
To_Value : Slot.Object) is
begin
Check_Class_Membership (For_Object => The_Fact);
Class.Change (The_Object => The_Fact,
The_Slot => As_Class_Slot_Name (The_Slot),
To_Value => To_Value);
end Change;
procedure Change (The_Fact : Class.User_Object;
The_Slot : Slot_Names;
To_Value : Integer) is
begin
Change (The_Fact, The_Slot, To_Value => Slot.Value (To_Value));
end Change;
procedure Change (The_Fact : Class.User_Object;
The_Slot : Slot_Names;
To_Value : Boolean) is
begin
Change (The_Fact, The_Slot, To_Value => Slot.Value (To_Value));
end Change;
procedure Change (The_Fact : Class.User_Object;
The_Slot : Slot_Names;
To_Value : Float) is
begin
Change (The_Fact, The_Slot, To_Value => Slot.Value (To_Value));
end Change;
procedure Change (The_Fact : Class.User_Object;
The_Slot : Slot_Names;
To_Value : Character) is
begin
Change (The_Fact, The_Slot, To_Value => Slot.Value (To_Value));
end Change;
procedure Change (The_Fact : Class.User_Object;
The_Slot : Slot_Names;
To_Value : Duration) is
begin
Change (The_Fact, The_Slot, To_Value => Slot.Value (To_Value));
end Change;
procedure Change (The_Fact : Class.User_Object;
The_Slot : Slot_Names;
To_Value : String) is
begin
Change (The_Fact, The_Slot, To_Value => Slot.Value (To_Value));
end Change;
procedure Generic_Put (The_Fact : Class.User_Object;
Where : Output_Stream.Object) is
First : Boolean := True;
Class_Name : constant String :=
Class_Names'Image (Class.Class_Name_Of (The_Class_Object));
use Output_Stream;
begin
Check_Class_Membership (For_Object => The_Fact);
Put (Class_Name & "'(", Where);
Indent_Right (Where);
New_Line (Where);
for I in Slot_Names loop
if not First then
Put_Line (", ", Where);
else
First := False;
end if;
Put (Slot_Names'Image (I) & " =>", Where);
Put (Image (I, Get (The_Fact, The_Slot => I)), Where);
end loop;
Indent_Left (Where);
Put_Line (")", Where);
end Generic_Put;
begin
The_Class_Object := Class.Make (Name => Class_Name,
Class_Size => Class_Size,
Names => Get_Slot_Names_Images);
Working_Memory.Register (The_Class_Object);
end Generic_Class;
nblk1=b
nid=0
hdr6=16
[0x00] rec0=21 rec1=00 rec2=01 rec3=016
[0x01] rec0=00 rec1=00 rec2=0b rec3=002
[0x02] rec0=1f rec1=00 rec2=02 rec3=026
[0x03] rec0=1b rec1=00 rec2=03 rec3=018
[0x04] rec0=20 rec1=00 rec2=04 rec3=01a
[0x05] rec0=1b rec1=00 rec2=05 rec3=072
[0x06] rec0=22 rec1=00 rec2=06 rec3=026
[0x07] rec0=19 rec1=00 rec2=07 rec3=04a
[0x08] rec0=1c rec1=00 rec2=08 rec3=042
[0x09] rec0=1d rec1=00 rec2=09 rec3=008
[0x0a] rec0=08 rec1=00 rec2=0a rec3=000
tail 0x217503660867e33c4ba94 0x42a00088462063c03