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: ┃ T V

⟦0a51e0006⟧ TextFile

    Length: 8470 (0x2116)
    Types: TextFile
    Names: »V«

Derivation

└─⟦d10a02448⟧ Bits:30000409 8mm tape, Rational 1000, ENVIRONMENT, D_12_7_3
    └─ ⟦fc9b38f02⟧ »DATA« 
        └─⟦9b46a407a⟧ 
            └─⟦12c68c704⟧ 
                └─⟦this⟧ 

TextFile

with Action;
with Directory;

package Activity_Implementation is

    -- An Activity maps a subsystem to a spec view and a non-spec view of
    -- that subsystem.


    pragma Subsystem (Directory, Closed);
    pragma Module_Name (4, 2909);


    subtype Activity_Id  is Directory.Object;
    subtype Subsystem_Id is Directory.Object;
    subtype Spec_View_Id is Directory.Object;
    subtype Load_View_Id is Directory.Object;

    function Null_Activity  return Activity_Id  renames Directory.Nil;
    function Null_Subsystem return Subsystem_Id renames Directory.Nil;
    function Null_Spec_View return Spec_View_Id renames Directory.Nil;
    function Null_Load_View return Load_View_Id renames Directory.Nil;

    type Activity_Handle is limited private;



    function Current return Activity_Id;
    -- returns Activity currently associated with this job; if no Activity
    -- has been associated with this job, then returns Activity currently
    -- associated with this sesssion.

    procedure Set (Activity : Activity_Id);
    -- make Activity the current activity for this job only

    procedure Set_Default (Activity : Activity_Id);
    -- make Activity the current activity for this job and session



    function Nil return Activity_Handle;

    function Is_Nil (Handle : Activity_Handle) return Boolean;

    procedure Open (Activity       :        Activity_Id;
                    Handle         : in out Activity_Handle;
                    Status         : out    Directory.Error_Status;
                    Action_Id      :        Action.Id := Action.Null_Id;
                    For_Update     :        Boolean   := False;
                    Prevent_Create :        Boolean   := False);

    procedure Close (Handle : in out Activity_Handle;
                     Status : out    Directory.Error_Status);
    --
    -- An open/close protocol is used to deal with the problem of concurrent
    -- access to activities. A new version of the activity will be created
    -- when an Activity_Id is opened For_Update unless Prevent_Create is
    -- set to True


    pragma Consume_Offset (1);


    function Enclosing_View (Unit : Directory.Ada.Unit) return Directory.Object;
    --
    -- returns either a Spec_View_Id or a Load_View_Id.

    function Enclosing_Subsystem
                (View_Id : Directory.Object) return Subsystem_Id;
    --
    -- takes either a Spec_View_Id or a Load_View_Id



    procedure Create (New_Activity :     String;
                      Action_Id    :     Action.Id;
                      Status       : out Directory.Error_Status;
                      New_Id       : out Activity_Id);


    type Creation_Mode is (Differential, Exact_Copy, Value_Copy);

    procedure Create (New_Activity :     String;
                      From         :     Activity_Handle;
                      Status       : out Directory.Error_Status;
                      New_Id       : out Activity_Id;
                      Mode         :     Creation_Mode := Exact_Copy);
    --
    -- Create New_Activity based on the contents of From (and using Action_Id
    -- associated with From)

    procedure Add_Subsystem (Subsystem : Subsystem_Id;
                             Load_View : Load_View_Id := Null_Load_View;
                             Spec_View : Spec_View_Id := Null_Spec_View;
                             Handle    : Activity_Handle);
    -- Add a subsystem to the domain of an activity. If both a load view
    -- and a spec view are specified they must both have the same target
    -- key.

    procedure Remove_Subsystem
                 (Subsystem : Subsystem_Id; Handle : Activity_Handle);

    -- Remove a subsystem from the domain of an activity. This version of
    -- Remove_Subsystem removes all entries for the specified subsystem
    -- regardless of target key.

    function Has_Subsystem (Subsystem : Subsystem_Id; Handle : Activity_Handle)
                           return Boolean;

    -- Test subsystem's membership in domain of an activity. This version
    -- tests for the existence of any entry for the subsystem independent of
    -- target key.


    function Get_Spec_View (Subsystem : Subsystem_Id; Handle : Activity_Handle)
                           return Spec_View_Id;

    function Get_Load_View (Subsystem : Subsystem_Id; Handle : Activity_Handle)
                           return Load_View_Id;

    procedure Set_Spec_View (Spec_View : Spec_View_Id;
                             Handle    : Activity_Handle);

    procedure Set_Load_View (Load_View : Load_View_Id;
                             Handle    : Activity_Handle);


    function  Get_Spec_View_Source (Subsystem : Subsystem_Id;  
                                    Handle : Activity_Handle) return Activity_Id;
    function  Get_Load_View_Source (Subsystem : Subsystem_Id;  
                                    Handle : Activity_Handle) return Activity_Id;
    procedure Set_Spec_View_Source (Subsystem : Subsystem_Id;
                                    Source    : Activity_Id;
                                    Handle    : Activity_Handle);

    procedure Set_Load_View_Source (Subsystem : Subsystem_Id;
                                    Source    : Activity_Id;
                                    Handle    : Activity_Handle);

    procedure Get_Spec_Value (Subsystem :     Subsystem_Id;
                              Indirect  : out Boolean;
                              Value     : out Directory.Object;
                              Handle    :     Activity_Handle);

    procedure Get_Load_Value (Subsystem :     Subsystem_Id;
                              Indirect  : out Boolean;
                              Value     : out Directory.Object;
                              Handle    :     Activity_Handle);

    procedure Get_Values (Subsystem     :     Subsystem_Id;
                          Spec_Indirect : out Boolean;
                          Spec_Value    : out Directory.Object;
                          Load_Indirect : out Boolean;
                          Load_Value    : out Directory.Object;
                          Handle        :     Activity_Handle);

    procedure Set_Spec_Value (Subsystem : Subsystem_Id;
                              Indirect  : Boolean;
                              Value     : Directory.Object;
                              Handle    : Activity_Handle);

    procedure Set_Load_Value (Subsystem : Subsystem_Id;
                              Indirect  : Boolean;
                              Value     : Directory.Object;
                              Handle    : Activity_Handle);

    procedure Set_Values (Subsystem     : Subsystem_Id;
                          Spec_Indirect : Boolean;
                          Spec_Value    : Directory.Object;
                          Load_Indirect : Boolean;
                          Load_Value    : Directory.Object;
                          Handle        : Activity_Handle);

    Undefined : exception;



    type Handle_Ref is access Activity_Handle;
    pragma Segmented_Heap (Handle_Ref);

    type Iterator is limited private;
    procedure Init          (Iter : out Iterator; Handle : Handle_Ref);
    procedure Next          (Iter : in out Iterator);
    function  Done          (Iter : Iterator) return Boolean;
    function  Get_Subsystem (Iter : Iterator) return Subsystem_Id;


    function Is_Activity (File : Directory.Object) return Boolean;


    pragma Consume_Offset (3);


    function Is_Valid (Value    : Directory.Object;  
                       Activity : Activity_Id;
                       As_View  : Boolean := False;
                       As_Spec  : Boolean := False) return Boolean;

    -- Verifies that the given value satisfies all consistency conditions
    -- imposed on entries within the given activity.

    function Diagnose (Value    : Directory.Object;  
                       Activity : Activity_Id;
                       As_View  : Boolean := False;
                       As_Spec  : Boolean := False) return String;

    -- Verifies that the given value satisfies all consistency conditions
    -- imposed on entries within the given activity and composes a
    -- reason why it is invalid. Returns the null string if it is valid.


    function Get_Activity_Id (Handle : Activity_Handle) return Activity_Id;
    function Get_Activity_Id (Iter : Iterator)          return Activity_Id;

    -- Retrieve Activity id from open Handle or Iterator


end Activity_Implementation;