|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 10240 (0x2800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Links, seg_0045b0, separate Object_Info
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦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 Any.Is_World (This_World) then return Utilities.Bad_Objects; 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; exception when others => return Utilities.Bad_Objects; 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 Any.Is_World (This_World) then return Utilities.Bad_Objects; 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; exception when others => return Utilities.Bad_Objects; 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 Any.Is_World (This_World) then return Utilities.Bad_Objects; 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; exception when others => return Utilities.Bad_Objects; 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] exception when others => return Utilities.Bad_Objects; 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] exception when others => return Utilities.Bad_Objects; end Non_Imported_External_Links_For; function Is_Used (This_Link : in Link; In_World : in World) return Boolean is begin if not Any.Is_World (In_World) then return False; end if; return not Link_Tools.Done (Link_Tools.Dependents (Source => Directory_Tools.Naming.Full_Name (This_Link), World => Directory_Tools.Naming.Full_Name (In_World))); 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 Any.Is_World (In_World) then return The_Dependents; end if; Dependents := Link_Tools.Dependents (Source => Directory_Tools.Naming.Full_Name (This_Link), World => Directory_Tools.Naming.Full_Name (In_World)); 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; exception when others => return Utilities.Bad_Objects; 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] exception when others => return Utilities.Bad_Objects; end Links_Derived_From; end Links;
nblk1=9 nid=0 hdr6=12 [0x00] rec0=1e rec1=00 rec2=01 rec3=054 [0x01] rec0=1f rec1=00 rec2=02 rec3=012 [0x02] rec0=15 rec1=00 rec2=03 rec3=02c [0x03] rec0=1f rec1=00 rec2=04 rec3=090 [0x04] rec0=1b rec1=00 rec2=05 rec3=050 [0x05] rec0=20 rec1=00 rec2=06 rec3=044 [0x06] rec0=1a rec1=00 rec2=07 rec3=04e [0x07] rec0=19 rec1=00 rec2=08 rec3=020 [0x08] rec0=11 rec1=00 rec2=09 rec3=000 tail 0x215003eb0815c65481524 0x42a00088462061e03