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

⟦909490d2c⟧ Ada Source

    Length: 11264 (0x2c00)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Object_Management_System, seg_027ac3, seg_027c61, seg_027cfc

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 Directory;
with Our_Generic_String;
package Object_Management_System is


    -- IMPORTANT :
    --
    -- pour l'instant, uniquement les library_object de subclass
    -- library_subclass et unix_file_subclass sont traites....
    --
    -- est presente egalement une ebauche des library_object de subclass
    -- c_unit_subclass



    type Subclass_Enumeration is new Natural range 0 .. 63;

    Unknown_Subclass : constant Subclass_Enumeration := 0;
    Library_Subclass : constant Subclass_Enumeration := 1;
    C_Unit_Subclass : constant Subclass_Enumeration := 2;
    Shell_Subclass : constant Subclass_Enumeration := 3;
    Comp_Lib_Subclass : constant Subclass_Enumeration := 4;
    Archive_Subclass : constant Subclass_Enumeration := 5;
    Image_Subclass : constant Subclass_Enumeration := 6;
    Unix_File_Subclass : constant Subclass_Enumeration := 7;


    type Library_Object (Subclass : Subclass_Enumeration := Unknown_Subclass) is
       private;

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

    function In_Text (The_Object : Library_Object) return String;



    function Subclass_Of (The_Object : Library_Object)
                         return Subclass_Enumeration;
    function Equal (Subclass1, Subclass2 : Subclass_Enumeration) return Boolean;
    function Image (The_Subclass : Subclass_Enumeration) return String;
    function Value (S : String) return Subclass_Enumeration;

    type Iterator is private;

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




    package Any_Object is

        function Is_Library (Any_Object : Library_Object) return Boolean;

        function Is_C_Unit (Any_Object : Library_Object) return Boolean;

        function Is_Unix_File (Any_Object : Library_Object) return Boolean;

        function Make_Library_Object
                    (The_Name : String;
                     The_Subclass : Subclass_Enumeration :=
                        Object_Management_System.Unix_File_Subclass)
                    return Library_Object;

        procedure Create (The_Object : in out Library_Object;
                          The_Name : String;
                          The_Subclass : Subclass_Enumeration :=
                             Object_Management_System.Unix_File_Subclass);

        procedure Move (The_Object : in out Library_Object; New_Name : String);

        procedure Delete (The_Object : in out Library_Object);

        function Enclosing_Library
                    (The_Object : Library_Object) return Library_Object;

        function Image (The_Object : Library_Object) return String;

        -- la fonction image renvoie une string contenant dans l'ordre :
        -- "nom_de_l_objet  etat subclass type

        function Value (The_String : String) return Library_Object;

        -- renvoie le library_object qui correspond a la ligne donnee en
        -- parametre.
        -- Ceci en tenant compte de l'ordre indique pour la fonction image.


    end Any_Object;

    package Library is

        type Library_Kind is (Not_A_Library, A_Directory,
                              Subsystem_Spec, Subsystem_Body);

        function Kind (The_Library : Library_Object) return Library_Kind;

        function Image (The_Kind : Library_Kind) return String;

        function Is_Directory (The_Library : Library_Object) return Boolean;

        function Is_Subsystem_Spec
                    (The_Library : Library_Object) return Boolean;

        function Is_Subsystem_Body
                    (The_Library : Library_Object) return Boolean;


        function Root return Library_Object;

        function Home return Library_Object;

        function Enclosing_Library return Library_Object;
        procedure Create (The_Library : in out Library_Object;
                          Name : String;
                          Kind : Library_Kind);

        function Child (The_Library : Library_Object; Child_Name : String)
                       return Library_Object;

        function Children (The_Library : Library_Object;
                           Subclass : Subclass_Enumeration :=
                              Object_Management_System.Unknown_Subclass)
                          return Iterator;

    end Library;

    package C_Unit is

        type Unit_Kind is (Not_A_C_Unit, C_Main, C_Spec, C_Body);

        type Unit_State is (Nonexistent, Source, Compiled, Linked);

        function Image (The_Unit_Kind : Unit_Kind) return String;

        function Image (The_Unit_State : Unit_State) return String;

        function Kind (The_C_Unit : Library_Object) return Unit_Kind;

        function State (The_C_Unit : Library_Object) return Unit_State;

        function Is_Spec (The_C_Unit : Library_Object) return Boolean;

        function Is_Body (The_C_Unit : Library_Object) return Boolean;

        function Is_Main (The_C_Unit : Library_Object) return Boolean;

        function Is_Source (The_C_Unit : Library_Object) return Boolean;

        function Is_Compiled (The_C_Unit : Library_Object) return Boolean;

        function Is_Linked (The_C_Unit : Library_Object) return Boolean;

        procedure Create (The_C_Unit : in out Library_Object;
                          Name : String;
                          Kind : Unit_Kind);

    end C_Unit;

    package Unix_View is

        function Get_Iterator_On_Files return Directory.Iterator;

        function Image (The_Object : Directory.Object) return String;

        -- renvoie une string contenant les informations dans l'ordre suivant :
        -- "nom_du_fichier type droits proprietaire taille
        --         date_de_derniere_modification"
       function Value (The_String : String) return Directory.Object;

        -- renvoie le directory.object (le fichier) correspondant a la
        -- ligne donnee en parametre.
        -- Utilise l'ordre defini ci_dessus pour retrouver cette ligne

        function Library_Object_Of
                    (The_Object : Directory.Object) return Library_Object;

        -- renvoie le library_object correspondant au directory_object donnee
        -- en parametre

    end Unix_View;

private

    package Gs is new Our_Generic_String (Default_Maximal_Length => 256);

    type Library_Object (Subclass : Subclass_Enumeration := Unknown_Subclass) is
        record
            Name : Gs.Object;
            case Subclass is
                when Library_Subclass =>
                    Unix_Library : Directory.Object := Directory.Nil;
                    Kind : Library.Library_Kind;
                when C_Unit_Subclass =>
                    C_Kind : C_Unit.Unit_Kind;
                    C_State : C_Unit.Unit_State;
                    Source_File : Directory.Object := Directory.Nil;
                    Object_File : Directory.Object := Directory.Nil;
                    Exec_File : Directory.Object := Directory.Nil;
                when Unix_File_Subclass =>
                    Unix_File : Directory.Object := Directory.Nil;
                when Unknown_Subclass =>
                    null;
                when others =>
                    Unix_Object : Directory.Object := Directory.Nil;
            end case;
        end record;

    Maximal_Element_Number : constant := 256;

    type Iterator is new Natural range 0 .. Maximal_Element_Number;


end Object_Management_System;

E3 Meta Data

    nblk1=a
    nid=0
    hdr6=14
        [0x00] rec0=1e rec1=00 rec2=01 rec3=00a
        [0x01] rec0=1f rec1=00 rec2=06 rec3=03a
        [0x02] rec0=17 rec1=00 rec2=09 rec3=03a
        [0x03] rec0=21 rec1=00 rec2=07 rec3=00c
        [0x04] rec0=01 rec1=00 rec2=0a rec3=00c
        [0x05] rec0=1b rec1=00 rec2=04 rec3=000
        [0x06] rec0=1d rec1=00 rec2=05 rec3=002
        [0x07] rec0=03 rec1=00 rec2=02 rec3=044
        [0x08] rec0=1a rec1=00 rec2=03 rec3=066
        [0x09] rec0=11 rec1=00 rec2=08 rec3=000
    tail 0x21721d32883ad3545a69b 0x42a00088462060003