|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 8050 (0x1f72)
Types: TextFile
Names: »B«
└─⟦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⟧
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;