DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ B T

⟦273cf9cc6⟧ TextFile

    Length: 3932 (0xf5c)
    Types: TextFile
    Names: »B«

Derivation

└─⟦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⟧ 

TextFile

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;