|
|
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: 3932 (0xf5c)
Types: TextFile
Names: »B«
└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13
└─⟦124ff5788⟧ »DATA«
└─⟦this⟧
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
└─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16
└─⟦6f12a12be⟧ »DATA«
└─⟦this⟧
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
└─⟦d65440be7⟧ »DATA«
└─⟦this⟧
with Object_Editor;
with String_Map_Generic;
with Set_Generic;
with String_Utilities;
package body Pool is
Small_Prime : constant Natural := 10007;
Medium_Prime : constant Natural := 50021;
Large_Prime : constant Natural := 100003;
function Full_Name (Object : Directory.Object) return String
renames Directory.Naming.Full_Name;
package Reader is new Set_Generic (Element => Object_Editor.Instance);
type Object is
record
Handle : Directory.Object;
Readers : Reader.Set;
Updater : Object_Editor.Instance;
end record;
type Object_Ptr is access Object;
package String_Map is new String_Map_Generic (Size => Small_Prime,
Range_Type => Object_Ptr,
Ignore_Case => False);
Map : String_Map.Map;
function Nil (Object : Directory.Object) return Pool.Object_Ptr is
Ptr : Object_Ptr;
begin
Ptr := new Pool.Object;
Ptr.Handle := Object;
Reader.Initialize (S => Ptr.Readers);
Ptr.Updater := Object_Editor.Nil;
return Ptr;
end Nil;
task Manager is
entry Control (Object : Directory.Object; Status : out Pool.Status);
entry Uncontrol (Object : Directory.Object; Status : out Pool.Status);
entry Abandon (Object : Directory.Object;
Editor : Object_Editor.Instance;
Status : out Pool.Status);
entry Read (Object : Directory.Object;
Editor : Object_Editor.Instance;
Status : out Pool.Status);
entry Update (Object : Directory.Object;
Editor : Object_Editor.Instance;
Status : out Pool.Status);
entry Abandon_Update (Object : Directory.Object;
Editor : Object_Editor.Instance;
Status : out Pool.Status);
entry Is_Controlled (Object : Directory.Object; Status : out Boolean);
end Manager;
task body Manager is separate;
procedure Control (Object : Directory.Object; Status : out Pool.Status) is
begin
Manager.Control (Object => Object, Status => Status);
end Control;
procedure Uncontrol (Object : Directory.Object; Status : out Pool.Status) is
begin
Manager.Uncontrol (Object => Object, Status => Status);
end Uncontrol;
procedure Abandon (Object : Directory.Object;
Editor : Object_Editor.Instance;
Status : out Pool.Status) is
begin
Manager.Abandon (Object => Object, Editor => Editor, Status => Status);
end Abandon;
procedure Read (Object : Directory.Object;
Editor : Object_Editor.Instance;
Status : out Pool.Status) is
begin
Manager.Read (Object => Object, Editor => Editor, Status => Status);
end Read;
procedure Update (Object : Directory.Object;
Editor : Object_Editor.Instance;
Status : out Pool.Status) is
begin
Manager.Update (Object => Object, Editor => Editor, Status => Status);
end Update;
procedure Abandon_Update (Object : Directory.Object;
Editor : Object_Editor.Instance;
Status : out Pool.Status) is
begin
Manager.Abandon_Update
(Object => Object, Editor => Editor, Status => Status);
end Abandon_Update;
function Is_Controlled (Object : Directory.Object) return Boolean is
Status : Boolean;
begin
Manager.Is_Controlled (Object => Object, Status => Status);
return Status;
end Is_Controlled;
begin
String_Map.Initialize (The_Map => Map);
end Pool;