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

⟦e59ab58b2⟧ Ada Source

    Length: 26624 (0x6800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Rcf, pragma Module_Name 4 4133, seg_00acf2

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 Compilation;
package Rcf is


    -- The following routines are RCF extensions to the Environment's
    -- compilation command set.

    --| NON-ADA OPERATIONS |--

    -- The RCF supports the use of non-Ada text units as well as Ada units.
    -- These non-Ada units also known as secondary text files can be maintained
    -- on an R1000 and downloaded and built on a remote machine.  Each such non-
    -- Ada unit is associated with an Ada unit, called a Primary through an
    -- associated file called the secondary referencer . A primary  can have
    -- several secondary referencers and hence can be associated with several
    -- secondary text files. The RCF will use the Primary's dependencies to
    -- determine its compilation ordering for the secondary text files.
    --
    -- Whenever a Primary which has a Secondary is promoted to the Coded state,
    -- the RCF will send the secondary text file  to the remote machine, and
    -- the secondary will be built there using the build command string that is associated with the Secondary.
    -- is associated with it. The Primary will be downloaded and processed only
    -- if the process_primary flag associated with it is set to true.
    -- If the Secondary is subsequently edited (using the Edit_Secondary
    -- command ) on the R1000, the associated Primary will first be demoted
    -- to the installed state.  This means that the changed secondary unit will
    -- be downloaded to the remote machine and compiled there as soon as the
    -- Primary is re-Coded.
    -- To make inadvertent changes to secondary text units more difficult, they
    -- will be frozen in the R1000 library whenever their Primary is promoted
    -- to the Coded state.
    -- All secondary commands operate on the secondary referencer file instead
    -- of the secondary text file
    --
    -- The following restrictions apply :-
    --   . A secondary text file cannot be associated with more than one
    --     primary.
    --   . A primary unit cannot be an ADA sub unit
    --
    procedure Create_Secondary (Primary_Unit : String := "<CURSOR>";
                                Command : String := "";
                                Secondary_Text : String := "";
                                Remote_Name : String := "<DEFAULT>";
                                Process_Primary : Boolean := False;
                                Response : String := "<PROFILE>");
    -- Create_Secondary associates a specified secondary text file
    -- with an ADA primary unit. The secondary text file will
    -- be created if does not already exist.
    --
    -- The primary unit points to the  secondary text file using
    -- a pointy file called the "secondary referencer".
    -- The secondary referencer will be of the form
    -- "primary_unit_name.<Secondary_text_file_name>".
    --
    -- The secondary referencer file will contain  the following information  :
    --   1. Name of the secondary text file that is to be associated with the
    --      primary
    --   2. Remote command to be executed after downloading the secondary text
    --   3. Remote name into which the secondary text unit is to be downloaded.
    --   4. Download time of the secondary text unit on the remote machine.
    --
    --  If Primary_Unit is in the coded state, it will be demoted to installed
    --  before it's secondary referencer is created.
    --
    --  For eg:
    --         Create_Secondary (Primary_Unit => "tulip'body",
    --                           command       => "cc -c open.c",
    --                           secondary_text => "open_c";
    --                           Remote_Name    => "open.c";
    --                           Process_Primary  => False;
    --
    --
    --  will result in  :-
    --
    --        Open_C                    :   File (Text)
    --        Tulip'body                : I Ada         ==> Primary
    --            .<Secondary_Open_C>   :   File (Text) ==> Secondary referencer
    --
    --  When Tulip'body is promoted to the coded state , the
    --  secondary text file Open_C will be download into "Open.c" on the
    --  remote and the command "cc -c open.c" will be executed on
    --  the remote
    --

    procedure Remove_Secondary (Secondary_Referencer : String := "<CURSOR>";
                                Response : String := "<PROFILE>");

    -- Removes the specified secondary referencer thus breaking the association
    -- between the primary and a secondary unit.  If the Primary_Unit is in
    -- the coded state, it will be demoted to installed before its secondary
    -- referencer is removed. The secondary text file  that was associated by
    -- the secondary referencer will not be deleted. No changes will be made on the
    -- remote machine; in particular, the copy of the secondary unit will not
    -- be removed from the remote machine, so a recompilation of Primary_Unit
    -- will be necessary to make it consistent with its correct associated
    -- remote unit.


    procedure Show_Secondary (Primary_Unit : String := "<CURSOR>";
                              Response : String := "<PROFILE>");

    -- If an ada unit is primary, this command displays the information
    -- about the secondaries associated with it . The following information
    -- is displayed :-
    --      1. Whether the primary will be processed - process_primary_flag
    --      2. Name of the secondary text unit associated with the primary
    --      3. Remote name of the secondary text file
    --      4. Remote command associated with the secondary text file
    -- Primary_Unit can be a naming expression that refers to more than one
    -- unit in a view, so the display will include all of the named units
    -- (which must be Ada units).


    procedure Edit_Secondary (Secondary_Referencer : String := "<CURSOR>";
                              In_Place : Boolean := False;
                              Visible : Boolean := True;
                              Response : String := "<PROFILE>");

    -- Allows the user to edit a secondary text file that is associated with
    -- a Primary_Unit.  The secondary text file on the R1000 will be opened for
    -- editing and brought up in a window on the screen.
    --
    -- If the Primary is coded, it will be demoted to Installed before the Edit
    -- begins.  If so, the secondary text unit is expected to be in the frozen
    -- state, and it will be unfrozen so the Edit can proceed.  When the
    -- Primary is promoted back to the Coded state, the RCF downloads
    -- the changed Secondary file to the remote machine, compiles it
    -- there, and then re-freezes its copy on the R1000.
    --
    -- Note that a secondary text file is edited by selecting its
    -- referencer.

    procedure Set_Process_Primary (Primary_Unit : String := "<CURSOR>";
                                   Value : Boolean := False;
                                   Response : String := "<PROFILE>");

    -- Sets the process primary flag for the specified primary unit.
    -- Setting this flag will cause the primary to be downloaded
    -- and processed on the remote machine in addition to its secondaries.


    procedure Set_Secondary_Command
                 (Command : String := "";
                  Secondary_Referencer : String := "<CURSOR>";
                  Response : String := "<PROFILE>");
    -- Associates the given command string with a secondary by specifying its
    -- secondary referencer. The command will be executed on the remote machine
    -- when the secondary text file is downloaded.



    --| CONSISTENCY MANAGEMENT OPERATIONS |--



    -- The following operations provide minimal support for management of
    -- consistency between units in views on the R1000 host and the
    -- corresponding objects on remote targets.  Users are allowed to make
    -- changes, at will, to remote source.  Such changes are not, however,
    -- monitored by the RCF system, so it is the responsibility of the user to
    -- make sure that host and remote source remain consistent.
    --
    -- Check_Consistency checks whether a unit has been edited remotely since
    -- it was last downloaded.
    --
    -- Accept_Remote_Changes uploads changes made remotely, making host units
    -- consistent with their remote counterparts.  Note that in order to
    -- overwrite changes made remotely, the user simply needs to recompile the
    -- corresponding host unit, which will cause a new copy of the host unit
    -- to be downloaded to the remote machine.
    --
    -- Upload_Unit transfers a unit from the remote system to the host system.
    -- This is to be used on objects that don't currently reside in the host
    -- view.  The purpose of this routine is to allow the migration of remotely
    -- maintained/created code to a Rational view.


    procedure Check_Consistency (Unit : String := "<CURSOR>";
                                 Compare_Objects : Boolean := False;
                                 Response : String := "<PROFILE>");

    -- Given a naming expression describing some number of units from a single
    -- view, or an entire view, this checks the consistency of these units
    -- against the corresponding units in the remote directory.
    --
    -- Consistency checking between the host unit and the associated remote
    -- unit is governed by the Compare_Objects parameter. If this parameter
    -- is set to false , consistency is checked by comparing the host's
    -- download time with the edit time of the remote. If Compare_Objects
    -- is set to true the remote unit is uploaded and then compared with
    -- the host unit for consistency.
    --
    -- Only ada units and secondary text files are checked for consistency.
    --
    -- This routine does not check if the host unit has changed
    -- since it was last downloaded.



    procedure Accept_Remote_Changes
                 (Unit : String := "<CURSOR>";
                  Allow_Demotion : Boolean := False;
                  Compare_Objects : Boolean := False;
                  Remake_Demoted_Units : Boolean := True;
                  Goal : Compilation.Unit_State := Compilation.Coded;
                  Response : String := "<PROFILE>");

    -- Given a naming expression specifying some number of host units from a
    -- single RCF view, or an entire RCF view, this uploads any changes from
    -- the associated remote units into the host units (to make the host units
    -- consistent with their associated remote copies).  Only units that have
    -- changed remotely since they were last downloaded will be uploaded.
    --
    -- If Compare_Objects is true consistency is checked by comparing
    -- host and remote objects instead of comparing time stamps
    --
    -- Host units must be checked out (by CMVC) in order for changes to be
    -- uploaded into them.  They must also be demoted to source, and they will
    -- be demoted automatically unless Allow_Demotion is False.  Uploaded units
    -- will be re-promoted to the specified Goal state if Remake_Demoted_Units
    -- is True.



    procedure Upload_Unit (Remote_Unit_Name : String := ">>REMOTE UNIT NAME<<";
                           Into_View : String := "<CURSOR>";  
                           Upload_To_Text_File : Boolean := False;
                           Host_Text_File_Name : String := "";
                           Response : String := "<PROFILE>");
    -- Uploads a remote unit into a host view.  This should only be used to
    -- upload new units, which were created on the remote machine and don't
    -- exist on the host, into the host view.
    --
    -- If Upload_To_Text_File = False, the host unit name will be the name of
    -- the Ada compilation unit.  If Upload_To_Text_File = True, a non-null
    -- Host_Text_File_Name must be supplied, and the remote unit will be
    -- uploaded to the given text unit, with no attempt being made to parse the
    -- remote object into an Ada unit.



    procedure Upload_Units (Upload_Specification_File : String := "";
                            Into_View : String := "<CURSOR>";  
                            Response : String := "<PROFILE>");
    --
    -- Uploads remote units into host units as specified by the
    -- upload specification file.  This should only be used to
    -- upload new units, which were created on the remote machine and don't
    -- exist on the host, into the host view.
    -- Each line of the upload specification file must contain the following
    -- fields separated by blanks :-
    --        1. Remote unit name           (string)
    --        2. Host text file name        (string)
    --
    -- If no host text file name is specified then an attempt is made to
    -- upload the remote unit into an ada unit on the host
    --
    --    For eg a file containing the lines :
    --             x.c      x_c
    --             y_s.ada
    --
    --    specifies that the remote "x.c" be copied to a host text file "x_c"
    --    and "y.ada" be copied to host ada unit "y'spec" .




    --| UNIT OPERATIONS |--

    procedure Link (Main_Unit : String := "<CURSOR>";
                    Make_Uncoded_Units : Boolean := False;
                    Executable_Name : String := "";
                    Response : String := "<PROFILE>");

    -- Links one or more Main_Units on the remote system.  If
    -- Make_Uncoded_Units = True, all uncoded units that Main_Unit needs will
    -- be downloaded and promoted to the coded state before the link operation
    -- is executed.

    -- If Executable_Name specifies a non-null string, that name will be used
    -- as the name of the executable module on the remote machine, instead of
    -- the default name, which will be the name of Main_Unit.  Only one
    -- Main_Unit may be specified if an Executable_Name is non-null.
    --


    procedure Set_Remote_Unit_Name (Remote_Name : String := ">>REMOTE NAME<<";
                                    Unit : String := "<CURSOR>";
                                    Allow_Demotion : Boolean := True;
                                    Response : String := "<PROFILE>");

    -- Unit must specify an ADA unit or a secondary referencer .
    -- Sets the remote unit name for the given ADA or secondary
    -- unit pointed to by the secondar referencer. In the case of the
    -- ADA unit , the unit will be downloaded into a remote unit with the
    -- specified remote unit name.
    -- For secondary referencers the secondary text file associated with the
    -- primary will be downloaded into the remote unit name



    procedure Show_Remote_Unit_Name (Unit : String := "<CURSOR>";
                                     Response : String := "<PROFILE>");

    -- Shows the remote name of the host Unit.  For ADA units the RCF
    -- assigns a unique default remote name to each host ADA unit, but the
    -- remote name can be changed if necessary.  For secondary referencers
    -- the default remote name is the same as the name of the secondary
    -- text file . It is then the user's responsibility to make sure
    -- that the remote name is unique.
    --
    -- If the host unit is in the coded state, it will normally be demoted to
    -- installed when its remote name is changed, but this demotion can be
    -- circumvented if Allow_Demotion is set to False.


    procedure Show_Units (Unit : String := "<CURSOR>";
                          Remote_Name : Boolean := True;
                          Consistency : Boolean := False;
                          Response : String := "<PROFILE>");

    -- Given a naming expression describing some number of units in a single
    -- view, or an entire view, displays relevant information about the state
    -- or configuration of each specified unit.
    --
    -- If Remote_Name = True, the remote name(s) of the unit(s) will be
    -- displayed.  It a unit has a Secondary referencer, the displayed remote
    -- name will be that of the Secondary text file.
    --
    -- If Consistency = True, checks whether each remote unit
    -- has changed since it was last downloaded.



    --| UNIT OPTIONS |--

    -- The Rcf allows compiler options to be specified on a unit-by-unit
    -- basis, overriding for those units what appears in the switch file.


    procedure Set_Unit_Option (Option_Switch : String := ">>OPTION<<";
                               Switch_Value : Boolean;
                               Units : String := "<CURSOR>";
                               Response : String := "<PROFILE>");
    procedure Set_Unit_Option (Option_Switch : String := ">>OPTION<<";
                               Switch_Value : String;
                               Units : String := "<CURSOR>";
                               Response : String := "<PROFILE>");

    -- For the given units, set the value of the specified option.
    -- The RCF will ignore the value in the switch-file for units that have
    -- that option set.  The option value will stay "hard-wired" until it
    -- is removed with Remove_Unit_Option.

    procedure Display_Unit_Options (Units : String := "<CURSOR>";
                                    Response : String := "<PROFILE>");

    -- For each unit specified, displays options that are "hard-wired" for
    -- that unit and don't depend on the switch-file value.

    procedure Remove_Unit_Option (Option_Switch : String := "<ALL>";
                                  Units : String := "<CURSOR>";
                                  Response : String := "<PROFILE>");

    -- For each unit specified, don't "hard-wire" the specified option, get
    -- it from the switch-file.  (Undo Set_Unit_Option)


    --| LIBRARY OPERATIONS |--


    procedure Refresh_View (View : String := "<CURSOR>";
                            Retain_History : Boolean := True;
                            Response : String := "<PROFILE>");

    -- The purpose of Refresh_View is to refresh RCF state information
    -- that is believed to be corrupted or inconsistent.  This will
    -- result in errors if the view is not an RCF view.
    --
    -- If Retain_History = True then
    -- all information about remote names, timestamps and unit options
    -- will be retained.  The operation will fail if Retain_History = True
    -- and there is no existing state information.  In this case,
    -- Retain_History must be set to False.
    --
    -- If Retain_History = False then
    -- this operation destroys all of the local information about
    -- remote names, timestamps and unit options.



    procedure Refresh_Remote_Imports (View : String := "<CURSOR>";
                                      Response : String := "<PROFILE>");

    -- Refreshes the remote imports to match the host imports.  This directly
    -- calls Import_Preprocess and Import_Postprocess.


    procedure Build_Remote_Library (View : String := "<CURSOR>";
                                    Remote_Machine : String := "<DEFAULT>";
                                    Remote_Directory : String := "<DEFAULT>";
                                    Response : String := "<PROFILE>");

    --  Given an existing RCF view, build the remote library.  The remote
    --  library consists of both the remote directory, where source will be
    --  stored, and the program library into which it will be compiled.
    --
    --  If the defaults are given for the Remote_Machine and Remote_Directory,
    --  they will be be taken from the view's compiler switches.  If these
    --  values do not exist in the view's compiler switches, they must
    --  be provided here.
    --
    --  This routine assumes that the "Make_Path_Postprocess" RCF extension
    --  has been implemented.  This extension may or may not be implemented
    --  from one RCF customization to another.



    procedure Rebuild_Remote_Library (View : String := "<CURSOR>";
                                      Remake_Demoted_Units : Boolean := True;
                                      Remote_Machine : String := "<DEFAULT>";
                                      Remote_Directory : String := "<DEFAULT>";
                                      Response : String := "<PROFILE>");

    -- In the event that a remote library becomes corrupt, this routine
    -- facilitates rebuilding it.  It destroys the remote library specified
    -- by View, demoting all units in that view and their dependents.
    -- It then rebuilds the remote library.  If Remake_Demoted_Units = True
    -- then all units and dependents will be recoded.



    procedure Destroy_Remote_Library (View : String := "<CURSOR>";
                                      Response : String := "<PROFILE>");

    --  Destroy the remote library associated with the View.  The effect
    --  is to destroy the remote program library, ada source and working
    --  directory.
    --
    --  This routine assumes that the "Destroy_View_Postprocess" RCF extension
    --  has been implemented.  This extension may or may not be implemented
    --  from one RCF customization to another.


    procedure Show_Remote_Information (View : String := "<CURSOR>";
                                       Response : String := "<PROFILE>");

    -- Shows the remote machine name and remote directory associated with a
    -- host view.  The same effect can be accomplished by displaying the
    -- Ftp.Remote_Machine and Ftp.Remote_Directory switches in the View's
    -- Compiler_Switches.



    procedure Execute_Remote_Command (Remote_Command : String := "";  
                                      Remote_Machine : String := "<DEFAULT>";
                                      Remote_Username : String := "<DEFAULT>";
                                      Remote_Password : String := "<DEFAULT>";
                                      Remote_Directory : String := "<DEFAULT>";
                                      The_Key : String := "<DEFAULT>";
                                      Response : String := "<PROFILE>");
    -- Executes the specified remote command on the specified target.
    -- If the defaults are specified for  remote machine,remote username,
    -- remote password or remote directory the actual values are picked
    -- up from the switch file associated with the enclosing library
    -- If a default target key is specified then the target key of the
    -- enclosing world is used. The target key must be a valid
    -- RCF target key. The output of the remote command is displayed on a
    -- R1000 window.
    --

    procedure Collapse_Secondary_Referencers (Directory : String := "<CURSOR>";
                                              Response : String := "<PROFILE>");
    -- Collapses text files within specified directory and
    -- subdirectories below it to secondary referencer (pointy)files.
    -- Since "archive.copy" cannot copy secondary referencers
    --     1.Convert secondary referencers to text files using
    --       "expand_secondary_referencers"
    --     2.Archive.copy these text files.
    --     3.Convert text files back to secondary referencers using this
    --       command

    procedure Expand_Secondary_Referencers (Directory : String := "<CURSOR>";
                                            Response : String := "<PROFILE>");
    -- Expands out secondary referencer (pointy) files to text files
    -- in the specified directory and all sub directories  within it.
    -- Since "archive.copy" cannot copy secondary referencers
    --     1.Convert secondary referencers to text files using
    --       this command
    --     2.Archive.copy these text files.
    --     3.Convert text files back to secondary referencers using
    --       "collapse_secondary_referencers"


    pragma Module_Name (4, 4133);
    pragma Bias_Key (32);

end Rcf;

E3 Meta Data

    nblk1=19
    nid=0
    hdr6=32
        [0x00] rec0=16 rec1=00 rec2=01 rec3=030
        [0x01] rec0=0f rec1=00 rec2=02 rec3=088
        [0x02] rec0=14 rec1=00 rec2=03 rec3=00a
        [0x03] rec0=15 rec1=00 rec2=04 rec3=004
        [0x04] rec0=11 rec1=00 rec2=05 rec3=068
        [0x05] rec0=15 rec1=00 rec2=06 rec3=018
        [0x06] rec0=12 rec1=00 rec2=07 rec3=08a
        [0x07] rec0=19 rec1=00 rec2=08 rec3=030
        [0x08] rec0=10 rec1=00 rec2=09 rec3=098
        [0x09] rec0=14 rec1=00 rec2=0a rec3=006
        [0x0a] rec0=15 rec1=00 rec2=0b rec3=042
        [0x0b] rec0=13 rec1=00 rec2=0c rec3=08a
        [0x0c] rec0=15 rec1=00 rec2=0d rec3=01e
        [0x0d] rec0=1a rec1=00 rec2=0e rec3=024
        [0x0e] rec0=15 rec1=00 rec2=0f rec3=03e
        [0x0f] rec0=14 rec1=00 rec2=10 rec3=028
        [0x10] rec0=17 rec1=00 rec2=11 rec3=03a
        [0x11] rec0=14 rec1=00 rec2=12 rec3=01e
        [0x12] rec0=17 rec1=00 rec2=13 rec3=03c
        [0x13] rec0=15 rec1=00 rec2=14 rec3=094
        [0x14] rec0=14 rec1=00 rec2=15 rec3=004
        [0x15] rec0=19 rec1=00 rec2=16 rec3=000
        [0x16] rec0=0e rec1=00 rec2=17 rec3=052
        [0x17] rec0=13 rec1=00 rec2=18 rec3=02e
        [0x18] rec0=0c rec1=00 rec2=19 rec3=000
    tail 0x21707effc81f9488c5415 0x42a00088462060003