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 - metrics - download
Index: B T

⟦f7174a318⟧ TextFile

    Length: 8050 (0x1f72)
    Types: TextFile
    Names: »B«

Derivation

└─⟦180fe333a⟧ Bits:30000405 8mm tape, Rational 1000, SW CATALOG, 10_20_0
└─⟦180fe333a⟧ Bits:30000537 8mm tape, Rational 1000, SW Catalog 10_20_0
    └─⟦5cb1d1d7f⟧ »DATA« 
        └─⟦3b1ee7bd8⟧ 
            └─⟦this⟧ 

TextFile

separate (Object_Info)
package body Links is

    -- ***** BE CAREFUL NOT TO INTRODUCE MUTUAL RECURSION BETWEEN
    -- ***** THIS PACKAGE AND "OBJECT_INFO.CMVC"!!!

    function "=" (This_Kind : in Link_Tools.Link_Kind;  
                  That_Kind : in Link_Tools.Link_Kind)  
                 return Boolean renames Link_Tools."=";

    function Links_For
                (This_World : in World; Used_Only : in Boolean) return Links is
        --
        Links : Link_Tools.Link_Iterator;
        --
        The_Links : Objects := Directory_Tools.Object.Create;
        --
        Dummy : Boolean;
        --
    begin
        if (not Object_Info.Any.Is_World (This_World)) then
            return (The_Links);
        end if;
        Link_Tools.Init
           (Links, World => Directory_Tools.Naming.Full_Name (This_World));
        while (not Link_Tools.Done (Links)) loop
            declare
                The_Link : Link := Directory_Tools.Naming.Resolution
                                      (Link_Tools.Source (Links));
            begin
                if (Used_Only) then
                    if (Object_Info.Links.Is_Used
                           (The_Link, In_World => This_World)) then
                        Directory_Tools.Object.Add (The_Links, The_Link, Dummy);
                    end if;
                else
                    Directory_Tools.Object.Add (The_Links, The_Link, Dummy);
                end if;  
            end;
            Link_Tools.Next (Links);
        end loop;  
        Directory_Tools.Object.Reset (The_Links);
        return (The_Links);
    end Links_For;

    function Internal_Links_For (This_World : in World; Used_Only : in Boolean)
                                return Internal_Links is
        --
        Links : Link_Tools.Link_Iterator;
        --
        The_Links : Objects := Directory_Tools.Object.Create;
        --
        Dummy : Boolean;
        --
    begin
        if (not Object_Info.Any.Is_World (This_World)) then
            return (The_Links);
        end if;
        Link_Tools.Init
           (Links, World => Directory_Tools.Naming.Full_Name (This_World));
        while (not Link_Tools.Done (Links)) loop
            if (Link_Tools.Kind (Links) = Link_Tools.Internal) then
                declare
                    The_Link : Link := Directory_Tools.Naming.Resolution
                                          (Link_Tools.Source (Links));
                begin
                    if (Used_Only) then
                        if (Object_Info.Links.Is_Used
                               (The_Link, In_World => This_World)) then
                            Directory_Tools.Object.Add
                               (The_Links, The_Link, Dummy);
                        end if;
                    else
                        Directory_Tools.Object.Add (The_Links, The_Link, Dummy);
                    end if;  
                end;  
            end if;
            Link_Tools.Next (Links);
        end loop;  
        Directory_Tools.Object.Reset (The_Links);
        return (The_Links);
    end Internal_Links_For;

    function External_Links_For (This_World : in World; Used_Only : in Boolean)
                                return External_Links is
        --
        Links : Link_Tools.Link_Iterator;
        --
        The_Links : Objects := Directory_Tools.Object.Create;
        --
        Dummy : Boolean;
        --
    begin
        if (not Object_Info.Any.Is_World (This_World)) then
            return (The_Links);
        end if;
        Link_Tools.Init
           (Links, World => Directory_Tools.Naming.Full_Name (This_World));
        while (not Link_Tools.Done (Links)) loop
            if (Link_Tools.Kind (Links) = Link_Tools.External) then
                declare
                    The_Link : Link := Directory_Tools.Naming.Resolution
                                          (Link_Tools.Source (Links));
                begin
                    if (Used_Only) then
                        if (Object_Info.Links.Is_Used
                               (The_Link, In_World => This_World)) then
                            Directory_Tools.Object.Add
                               (The_Links, The_Link, Dummy);
                        end if;
                    else
                        Directory_Tools.Object.Add (The_Links, The_Link, Dummy);
                    end if;  
                end;
            end if;
            Link_Tools.Next (Links);
        end loop;  
        Directory_Tools.Object.Reset (The_Links);
        return (The_Links);
    end External_Links_For;

    function Imported_External_Links_For
                (This_View : in View; Used_Only : in Boolean)
                return Imported_External_Links is
        --
        All_External_Links : External_Links :=
           Object_Info.Links.External_Links_For (This_View, Used_Only);
        --
    begin
        [statement]
    end Imported_External_Links_For;

    function Non_Imported_External_Links_For
                (This_View : in View; Used_Only : in Boolean)
                return Non_Imported_External_Links is
        --
        All_External_Links : External_Links :=
           Object_Info.Links.External_Links_For (This_View, Used_Only);
        --
    begin
        [statement]
    end Non_Imported_External_Links_For;

    function Is_Used (This_Link : in Link; In_World : in World)
                     return Boolean is
    begin  
        if (not Object_Info.Any.Is_World (In_World)) then
            return (False);
        end if;
--
-- *****
--
-- NOT IMPLEMENTED YET BECAUSE OF HORRIBLE PERFORMANCE OF CALL TO
-- "LINK_TOOLS.DEPENDENTS" (WE'RE TALKING 30 MINUTE DELAYS HERE, FOLKS...
--
-- *****
-- return (not (Link_Tools.Done
--                 (Link_Tools.Dependents
--                     (Source => Directory_Tools.Naming.Full_Name
--                                   (This_Link),
--                      World => Directory_Tools.Naming.Full_Name
--                                  (In_World)))));
--
        [statement]
    end Is_Used;

    function Conversion_Of (This_Dependent : in Diana.Tree) return Ada_Unit is
    begin
        return (Directory_Tools.Object.Low_Level.Make_Handle
                   (The_Error => Directory_Tools.Object.Nil,
                    The_Name => String_Table.Nil,
                    The_Declaration => This_Dependent));
    end Conversion_Of;

    function Dependencies_On
                (This_Link : in Link; In_World : in World) return Ada_Units is
        --
        Dependents : Link_Tools.Dependent_Iterator;
        --
        The_Dependents : Objects := Directory_Tools.Object.Create;
        --
        Dummy : Boolean;
        --
    begin  
        if (not Object_Info.Any.Is_World (In_World)) then
            return (The_Dependents);
        end if;
--
-- *****
--
-- ALSO NOT IMPLEMENTED, FOR SAME REASON AS ABOVE
--
-- *****
--
-- Dependents :=
--    Link_Tools.Dependents
--       (Source => Directory_Tools.Naming.Full_Name (This_Link),
--        World => Directory_Tools.Naming.Full_Name (In_World));
        [statement]
        while (not Link_Tools.Done (Dependents)) loop
            declare
                The_Dependent : Ada_Unit := Object_Info.Links.Conversion_Of
                                               (Link_Tools.Value (Dependents));
            begin
                if (not Directory_Tools.Object.Has
                           (The_Dependents, The_Dependent)) then
                    Directory_Tools.Object.Add
                       (The_Dependents, The_Dependent, Dummy);  
                end if;
            end;
            Link_Tools.Next (Dependents);
        end loop;  
        Directory_Tools.Object.Reset (The_Dependents);
        return (The_Dependents);
    end Dependencies_On;

    function Links_Derived_From
                (This_Import : in Import;
                 Into_View : in View;
                 Used_Only : in Boolean) return Imported_External_Links is
    begin
        [statement]
    end Links_Derived_From;

end Links;