with Links;
with Library;
with Compilation;
procedure Build_Load_Procs (Using_View : in String := "^REV1_0_1") is
    --
    The_Context : constant String := Using_View & ".UNITS";
    --
    Destroy_All : constant String := "DESTROY_ALL";
    Destroy_Users : constant String := "DESTROY_USERS";
    --
    function Main_Procedure_For (This_Procedure : in String) return String is
        --
        Main_Procedure_Suffix : constant String := "_MAIN";
        --
    begin
        return (This_Procedure & Main_Procedure_Suffix);
    end Main_Procedure_For;
    --
    procedure Set_State is
        --
        Destruction_Utilities : constant String := "DESTRUCTION_UTILITIES";
        --
        Destruction_Utilities_Full_Pathname : constant String :=
           The_Context & "." & Destruction_Utilities;
        --
    begin
        Library.Delete (Existing =>
                           "[" & Main_Procedure_For (Destroy_All) &
                              "," & Destroy_All & "," &
                              Main_Procedure_For (Destroy_Users) & "," &
                              Destroy_Users & ",_ADA_@_]");
        Links.Delete (Link => Destruction_Utilities, World => "$");
        Links.Add (Source => Destruction_Utilities_Full_Pathname, World => "$");
    end Set_State;
    --
    procedure Build_Load_Proc (This_Procedure : in String) is
        --
        Main_Procedure : constant String := Main_Procedure_For (This_Procedure);
        --
        Parse_File_Suffix : constant String := "_PARSE_FILE";
        --
    begin
        Compilation.Parse (File_Name => This_Procedure & Parse_File_Suffix);
        Compilation.Make (Unit => Main_Procedure);
        Compilation.Load (From => Main_Procedure, To => This_Procedure);
    end Build_Load_Proc;
    --
    procedure Clean_Up is
    begin
        Library.Delete (Existing =>
                           "[" & Main_Procedure_For (Destroy_All) & "," &
                              Main_Procedure_For (Destroy_Users) & "]");
        Library.Expunge ("$");
    end Clean_Up;
    --
begin
    Set_State;
    Build_Load_Proc (Destroy_All);
    Build_Load_Proc (Destroy_Users);
    Clean_Up;
end Build_Load_Procs;