DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

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

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦8a0f321f4⟧ Ada Source

    Length: 15360 (0x3c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Directory, seg_0222eb

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



with Calendar;
package Directory is


    type Object is private;

    -- Objects in the directory system are accessed via Directory.Object

    function Nil return Object;
    function Is_Nil (The_Object : Object) return Boolean;

    function Hash (The_Object : Object) return Integer;

    function Same_Object (Left, Right : Object) return Boolean;

    type Class_Enumeration is new Natural range 0 .. 63;

    Unknown_Class   : constant Class_Enumeration := 0;
    Directory_Class : constant Class_Enumeration := 1;
    File_Class      : constant Class_Enumeration := 2;
    Link_Class      : constant Class_Enumeration := 3;

    function Class (The_Object : Object) return Class_Enumeration;
    function Equal (Class1, Class2 : Class_Enumeration) return Boolean;
    function Image (The_Class : Class_Enumeration) return String;
    function Value (S : String) return Class_Enumeration;


    type Subclass is limited private;

    function Nil return Subclass;
    function Is_Nil        (The_Subclass : Subclass) return Boolean;
    function Unique        (The_Subclass : Subclass) return Integer;
    function Subclass_Of   (The_Object : Object) return Subclass;
    function Image         (The_Subclass : Subclass) return String;
    function Value         (S : String) return Subclass;
    function Class_Of      (The_Subclass : Subclass) return Class_Enumeration;
    function Same_Subclass (Left, Right : Subclass) return Boolean;


    type Iterator is limited private;

    procedure Next  (Iter : in out Iterator);
    function  Done  (Iter : Iterator) return Boolean;
    function  Value (Iter : Iterator) return Object;

    procedure Reset (Iter : Iterator);


    package Naming is

        -- Provides mechanisms for manipulating and resolving names and for
        -- establishing a context for name resolution.

        type Status is (Ok, Ill_Formed_Name);

        subtype String_Name is String;

        -- Lexically and syntactically a Directory system string name.

        subtype Simple_String_Name is String;

        -- A single segment of a string name.

        subtype Context is Object;

        -- The Directory System Object that serves as the initial context
        -- for name resolution.  May be any Object.

        procedure Set_Default_Context (The_Context :     Naming.String_Name;
                                       Status      : out Naming.Status);
        procedure Set_Default_Context
                     (The_Context : Naming.Context; Status : out Naming.Status);

        -- Establishes the default naming context for the job.

        function Default_Context return Naming.String_Name;
        function Default_Context return Naming.Context;

        -- Returns the default name resolution context for the job.

        function Is_Well_Formed (A_Name : String_Name) return Boolean;

        -- Tests whether a name is lexically and syntactically valid.

        function Prefix (The_Name : String_Name) return String_Name;

        -- Removes the last segment from a selected name and returns
        -- the prefix.
        -- Prefix ("A/B/C") => "A/B"
        -- Prefix ("A") => ""


        function Simple_Name (The_Name : String_Name) return Simple_String_Name;

        -- Returns only the last segment of a selected name, without attributes
        -- Simple_name ("A/B/C") => "C"
        -- Simple_name ("A") => "A"


        function Head (The_Name : String_Name) return Simple_String_Name;

        -- Returns only the first segment of a selected name.
        -- Head ("A/B/C") => "A"
        -- Head ("A") => "A"
        -- Head ("/A") => "/"

        function Tail (The_Name : String_Name) return String_Name;

        -- Removes the first segment from a selected name and returns the tail.
        --      Tail ("A/B/C") => "B/C"
        -- Tail ("A") => ""

        function Extension (A_Name : String_Name) return String;

        -- Returns the Extension at the end of the given string name.
        -- If the simple name of the given string name has no attributes,
        -- the null string is returned.  The returned string starts with '.'.

        function Full_Name (The_Object : Object) return Naming.String_Name;

        -- Computes the fully qualified string name for the The_Object.

        function Simple_Name (The_Object : Object) return Simple_String_Name;

        -- Computes the simple name for the The_Object.

        function Resolution
                    (Name    : Naming.String_Name;
                     Context : Naming.Context := Default_Context) return Object;

        -- Resolve name to a single Object.  Wild cards may be used, but
        -- the name must resolve to a unique Object.

        function Resolution (Name    : Naming.String_Name;
                             Context : Naming.Context := Default_Context)
                            return Iterator;

        -- Resolves (ambiguous) Source name in the given context.

    end Naming;

    package Traversal is
        -- Provides operations for traversing the Directory System
        -- in a variety of ways.

        function Root return Object;

        -- Returns the (somewhat special) Object corresponding to the
        -- root of the universe.

        function Parent (The_Object : Object) return Object;

        -- Returns the parent Object for The_Object.

        function Child (The_Object : Object;
                        Child_Name : Naming.Simple_String_Name) return Object;

        -- Retrieve the named subobject.

        function Children (The_Object : Object;
                           Pattern    : Naming.Simple_String_Name := "*";
                           Class      : Class_Enumeration := Unknown_Class)
                          return Iterator;

        -- Initializes the iteration over the children that match the
        -- specified name pattern.
        -- If a class is provided, only children of that class are returned.

    end Traversal;

    package Any_Object is

        type Status is (Ok, Already_Existent_Object, Non_Existent_Object);


        -- Operations to Create, Copy and Destroy Objects.

        procedure Create (The_Object  : out Object;
                          Object_Name :     String;
                          Status      : out Any_Object.Status);

        procedure Copy (Source      :        Object;  
                        Destination : in out Object;
                        Status      : out    Any_Object.Status);

        procedure Delete (The_Object : Object; Status : out Any_Object.Status);


    end Any_Object;

    package Statistics is

        subtype User is String;

        function Time_Of_Last_Update (The_Object : Object) return Calendar.Time;

        function Time_Of_Last_Read (The_Object : Object) return Calendar.Time;

        function Time_Of_Creation (The_Object : Object) return Calendar.Time;

        function Last_Updater (The_Object : Object) return User;

        function Last_Reader (The_Object : Object) return User;

        function Creator (The_Object : Object) return User;

        function Object_Size (The_Object : Object) return Integer;

        function Last_Edit_Time (The_Unit : Object) return Calendar.Time;

    end Statistics;

private

    type Object_Data;
    type Object is access Object_Data;

    type Subclass_Data;
    type Subclass is access Subclass_Data;

    type Iterator_Implementation;
    type Iterator is access Iterator_Implementation;

end Directory;

E3 Meta Data

    nblk1=e
    nid=2
    hdr6=12
        [0x00] rec0=1a rec1=00 rec2=01 rec3=006
        [0x01] rec0=1b rec1=00 rec2=0d rec3=040
        [0x02] rec0=01 rec1=00 rec2=0e rec3=042
        [0x03] rec0=1c rec1=00 rec2=0b rec3=000
        [0x04] rec0=1d rec1=00 rec2=09 rec3=062
        [0x05] rec0=19 rec1=00 rec2=06 rec3=008
        [0x06] rec0=1c rec1=00 rec2=0a rec3=03a
        [0x07] rec0=1f rec1=00 rec2=03 rec3=030
        [0x08] rec0=20 rec1=00 rec2=04 rec3=000
        [0x09] rec0=05 rec1=00 rec2=02 rec3=000
        [0x0a] rec0=0a rec1=00 rec2=07 rec3=000
        [0x0b] rec0=09 rec1=00 rec2=0b rec3=000
        [0x0c] rec0=1b rec1=00 rec2=0b rec3=078
        [0x0d] rec0=0f rec1=00 rec2=0d rec3=000
    tail 0x2171df32e839169e69793 0x42a00088462062803
Free Block Chain:
  0x2: 0000  00 07 00 72 00 21 20 20 20 20 74 79 70 65 20 49  ┆   r !    type I┆
  0x7: 0000  00 0c 00 b8 80 0f 61 72 69 61 62 6c 65 5f 53 74  ┆      ariable_St┆
  0xc: 0000  00 08 00 27 00 24 20 20 20 20 20 20 20 20 66 75  ┆   ' $        fu┆
  0x8: 0000  00 05 03 fc 80 04 6c 69 63 79 04 00 2a 20 20 20  ┆      licy  *   ┆
  0x5: 0000  00 00 01 7f 80 13 61 6c 6c 65 64 20 64 65 63 6c  ┆      alled decl┆