|
|
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: 17060 (0x42a4)
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 Cmvc is
-- ***** BE CAREFUL NOT TO INTRODUCE MUTUAL RECURSION BETWEEN
-- ***** THIS PACKAGE AND "OBJECT_INFO.LINKS"!!!
function "=" (This_Error_Status : in Standard.Directory.Error_Status;
That_Error_Status : in Standard.Directory.Error_Status)
return Boolean renames Standard.Directory."=";
function "=" (This_Error_Status : in Standard.Directory.Naming.Name_Status;
That_Error_Status : in Standard.Directory.Naming.Name_Status)
return Boolean renames Standard.Directory.Naming."=";
function Model_For (This_View : in View) return Model_World is
--
View_Model_Database_Name : constant String :=
Directory_Tools.Naming.Full_Name (This_View) & ".STATE.MODEL";
--
View_Model_Database : Standard.Directory.Object;
--
View_Model_Set : Object_Set.Set;
--
View_Model_Iterator : Object_Set.Iterator;
--
View_Model : Standard.Directory.Object;
--
Error_Status : Standard.Directory.Error_Status;
Name_Status : Standard.Directory.Naming.Name_Status;
--
The_Model : Model_World := Object_Info.Utilities.Bad_Object;
--
begin
if (Object_Info.Any.Is_Bad (This_View)) then
return (The_Model);
end if;
if (not Object_Info.Any.Is_View (This_View)) then
return (The_Model);
end if;
Standard.Directory.Naming.Resolve (View_Model_Database_Name,
View_Model_Database, Name_Status);
if (Name_Status /= Standard.Directory.Naming.Successful) then
return (The_Model);
end if;
Object_Set.Open (View_Model_Database, View_Model_Set, Error_Status);
if (Error_Status /= Standard.Directory.Successful) then
return (The_Model);
end if;
Object_Set.Init (View_Model_Iterator, View_Model_Set);
View_Model := Object_Set.Value (View_Model_Iterator);
The_Model := Directory_Tools.Naming.Resolution
(Standard.Directory.Naming.Get_Full_Name (View_Model));
if (Object_Info.Any.Is_Bad (The_Model)) then
return (Object_Info.Utilities.Bad_Object);
end if;
Object_Set.Close (The_Set => View_Model_Set, Status => Error_Status);
return (The_Model);
--
exception
when others =>
return (Object_Info.Utilities.Bad_Object);
--
end Model_For;
function Models_Equal (This_View : in View; This_Model : in Model_World)
return Boolean is
begin
if (not Object_Info.Any.Is_Good (This_Model)) then
return (False);
end if;
if (not Object_Info.Any.Is_Simple_World (This_Model)) then
return (False);
end if;
return ((Directory_Tools.Naming.Full_Name
(Object_Info.Cmvc.Model_For (This_View))) =
(Directory_Tools.Naming.Full_Name (This_Model)));
--
exception
when others =>
return (False);
--
end Models_Equal;
function Is_Primary (This_Subsystem : in Subsystem) return Boolean is
--
The_Info_File : Io.File_Type;
--
begin
The_Info_File := Low_Level_File_Operations.Open_To_Read
(Directory_Tools.Naming.Full_Name (This_Subsystem) &
".STATE.COMPATIBILITY.STATE");
declare
The_Entry : constant String := Io.Get_Line (The_Info_File);
begin
Low_Level_File_Operations.Close (The_Info_File);
return (The_Entry = "PRIMARY => TRUE");
end;
--
exception
when others =>
Low_Level_File_Operations.Close (The_Info_File);
return False;
--
end Is_Primary;
function Is_Secondary (This_Subsystem : in Subsystem) return Boolean is
begin
return (not Object_Info.Cmvc.Is_Primary (This_Subsystem));
end Is_Secondary;
function Is_Controlled (This_Object : in Object) return Boolean is
--
function "=" (This_Error_Status : in Standard.Directory.Error_Status;
That_Error_Status : in Standard.Directory.Error_Status)
return Boolean renames Standard.Directory."=";
--
The_Object : Standard.Directory.Object;
The_Status : Standard.Directory.Error_Status;
--
Object_Is_Controlled : Boolean := False;
--
begin
Directory_Tools.Object.Low_Level.Get_Object
(This_Object, The_Object, The_Status);
Standard.Directory.Object_Operations.Is_Controlled
(The_Object, Object_Is_Controlled, The_Status);
return ((The_Status = Standard.Directory.Successful) and then
(Object_Is_Controlled));
end Is_Controlled;
function Is_Checked_Out (This_Object : in Object) return Boolean is
--
function "=" (This_Error_Status : in Standard.Directory.Error_Status;
That_Error_Status : in Standard.Directory.Error_Status)
return Boolean renames Standard.Directory."=";
--
The_Object : Standard.Directory.Object;
The_Status : Standard.Directory.Error_Status;
--
Object_Is_Checked_In : Boolean;
--
begin
Directory_Tools.Object.Low_Level.Get_Object
(This_Object, The_Object, The_Status);
Standard.Directory.Object_Operations.Is_Slushy
(The_Object, Object_Is_Checked_In, The_Status);
return ((The_Status = Standard.Directory.Successful) and then
(not Object_Info.Any.Is_Library (This_Object)) and then
(Object_Info.Cmvc.Is_Controlled (This_Object)) and then
(not Object_Is_Checked_In));
end Is_Checked_Out;
function Contains_Controlled_Objects
(This_Object : in Object; Transitive : in Boolean := True)
return Boolean is
begin
return (Object_Info.Utilities.Contains_Objects
(This_Object, Object_Info.Utilities.Controlled, Transitive));
end Contains_Controlled_Objects;
function Contains_Checked_Out_Objects
(This_Object : in Object; Transitive : in Boolean := True)
return Boolean is
begin
return (Object_Info.Utilities.Contains_Objects
(This_Object, Object_Info.Utilities.Checked_Out,
Transitive));
end Contains_Checked_Out_Objects;
function Controlled_Objects_In
(This_Object : in Object; Transitive : in Boolean := True)
return Controlled_Objects is
begin
return (Object_Info.Utilities.Objects_In
(This_Object, Object_Info.Utilities.Controlled, Transitive));
end Controlled_Objects_In;
function Checked_Out_Objects_In
(This_Object : in Object; Transitive : in Boolean := True)
return Checked_Out_Objects is
begin
return (Object_Info.Utilities.Objects_In
(This_Object, Object_Info.Utilities.Checked_Out,
Transitive));
end Checked_Out_Objects_In;
function Current_Spec_View_In
(This_Subsystem : in Subsystem;
This_Activity : in Activity.Activity_Name :=
Activity.The_Current_Activity) return Spec_View is
--
Subsystem_Id : Activity_Implementation.Subsystem_Id;
Activity_Id : Activity_Implementation.Activity_Id;
Activity_Handle : Activity_Implementation.Activity_Handle;
Name_Status : Standard.Directory.Naming.Name_Status;
Error_Status : Standard.Directory.Error_Status;
Spec_Id : Activity_Implementation.Spec_View_Id;
The_Spec_View : Directory_Tools.Object.Handle;
--
begin
Standard.Directory.Naming.Resolve
(Directory_Tools.Naming.Full_Name (This_Subsystem),
Subsystem_Id, Name_Status);
Standard.Directory.Naming.Resolve
(This_Activity, Activity_Id, Name_Status);
Activity_Implementation.Open
(Activity_Id, Activity_Handle, Error_Status);
Spec_Id := Activity_Implementation.Get_Spec_View
(Subsystem_Id, Activity_Handle);
Activity_Implementation.Close (Activity_Handle, Error_Status);
The_Spec_View := Directory_Tools.Naming.Resolution
(Standard.Directory.Naming.Get_Full_Name (Spec_Id));
return (The_Spec_View);
--
exception
when others =>
return (Object_Info.Utilities.Bad_Object);
--
end Current_Spec_View_In;
function Current_Load_View_In
(This_Subsystem : in Subsystem;
This_Activity : in Activity.Activity_Name :=
Activity.The_Current_Activity) return Load_View is
--
Subsystem_Id : Activity_Implementation.Subsystem_Id;
Activity_Id : Activity_Implementation.Activity_Id;
Activity_Handle : Activity_Implementation.Activity_Handle;
Name_Status : Standard.Directory.Naming.Name_Status;
Error_Status : Standard.Directory.Error_Status;
Load_Id : Activity_Implementation.Load_View_Id;
The_Load_View : Directory_Tools.Object.Handle;
--
begin
Standard.Directory.Naming.Resolve
(Directory_Tools.Naming.Full_Name (This_Subsystem),
Subsystem_Id, Name_Status);
Standard.Directory.Naming.Resolve
(This_Activity, Activity_Id, Name_Status);
Activity_Implementation.Open
(Activity_Id, Activity_Handle, Error_Status);
Load_Id := Activity_Implementation.Get_Load_View
(Subsystem_Id, Activity_Handle);
Activity_Implementation.Close (Activity_Handle, Error_Status);
The_Load_View := Directory_Tools.Naming.Resolution
(Standard.Directory.Naming.Get_Full_Name (Load_Id));
return (The_Load_View);
--
exception
when others =>
return (Object_Info.Utilities.Bad_Object);
--
end Current_Load_View_In;
function Imports_For (This_View : in View; Used_Only : in Boolean := True)
return Imports is
--
The_Imports : Imports := Directory_Tools.Object.Create;
--
Imports_Database_Name : constant String :=
Directory_Tools.Naming.Full_Name (This_View) & ".STATE.IMPORTS";
--
Imports_Database : Standard.Directory.Object;
--
Imports_Set : Object_Set.Set;
--
Imports_Iterator : Object_Set.Iterator;
--
Error_Status : Standard.Directory.Error_Status;
Name_Status : Standard.Directory.Naming.Name_Status;
--
begin
if (not Object_Info.Any.Is_Good (This_View)) then
return (The_Imports);
end if;
if (not Object_Info.Any.Is_View (This_View)) then
return (The_Imports);
end if;
Standard.Directory.Naming.Resolve
(Imports_Database_Name, Imports_Database, Name_Status);
if (Name_Status /= Standard.Directory.Naming.Successful) then
return (The_Imports);
end if;
Object_Set.Open (Imports_Database, Imports_Set, Error_Status);
if (Error_Status /= Standard.Directory.Successful) then
return (The_Imports);
end if;
Object_Set.Init (Imports_Iterator, Imports_Set);
while (not Object_Set.Done (Imports_Iterator)) loop
declare
The_Import_Object : Standard.Directory.Object :=
Object_Set.Value (Imports_Iterator);
The_Import_Object_Name : constant String :=
Standard.Directory.Naming.Get_Full_Name (The_Import_Object);
The_Import : Import := Directory_Tools.Naming.Resolution
(The_Import_Object_Name);
Dummy : Boolean;
begin
if (Object_Info.Any.Is_Good (The_Import)) then
if (Used_Only) then
if (Object_Info.Cmvc.Is_Used
(The_Import, This_View)) then
Directory_Tools.Object.Add
(The_Imports, The_Import, Dummy);
end if;
else
Directory_Tools.Object.Add
(The_Imports, The_Import, Dummy);
end if;
end if;
end;
Object_Set.Next (Imports_Iterator);
end loop;
Object_Set.Close (The_Set => Imports_Set, Status => Error_Status);
return (The_Imports);
--
exception
when others =>
return (The_Imports);
--
end Imports_For;
function Is_Used (This_Import : in Import; By_View : in View)
return Boolean is
--
Imported_Links : Object_Info.Links.Imported_External_Links :=
Object_Info.Links.Links_Derived_From
(This_Import => This_Import,
Into_View => By_View,
Used_Only => True);
--
begin
return (not Object_Info.Any.Is_Empty (Imported_Links));
end Is_Used;
function Referencers_Of
(This_Spec_View : in Spec_View; Using_Only : in Boolean := True)
return Referencers is
--
The_Referencers : Referencers := Directory_Tools.Object.Create;
--
Referencers_Database_Name : constant String :=
Directory_Tools.Naming.Full_Name (This_Spec_View) &
".STATE.REFERENCERS";
--
Referencers_Database : Standard.Directory.Object;
--
Referencers_Set : Object_Set.Set;
--
Referencers_Iterator : Object_Set.Iterator;
--
Error_Status : Standard.Directory.Error_Status;
Name_Status : Standard.Directory.Naming.Name_Status;
--
begin
if (not Object_Info.Any.Is_Good (This_Spec_View)) then
return (The_Referencers);
end if;
if (not Object_Info.Any.Is_View (This_Spec_View)) then
return (The_Referencers);
end if;
Standard.Directory.Naming.Resolve (Referencers_Database_Name,
Referencers_Database, Name_Status);
if (Name_Status /= Standard.Directory.Naming.Successful) then
return (The_Referencers);
end if;
Object_Set.Open (Referencers_Database, Referencers_Set, Error_Status);
if (Error_Status /= Standard.Directory.Successful) then
return (The_Referencers);
end if;
Object_Set.Init (Referencers_Iterator, Referencers_Set);
while (not Object_Set.Done (Referencers_Iterator)) loop
declare
The_Referencer_Object : Standard.Directory.Object :=
Object_Set.Value (Referencers_Iterator);
The_Referencer_Object_Name : constant String :=
Standard.Directory.Naming.Get_Full_Name
(The_Referencer_Object);
The_Referencer : Referencer := Directory_Tools.Naming.Resolution
(The_Referencer_Object_Name);
Dummy : Boolean;
begin
if (Object_Info.Any.Is_Good (The_Referencer)) then
if (Using_Only) then
if (Object_Info.Cmvc.Is_User
(The_Referencer, This_Spec_View)) then
Directory_Tools.Object.Add
(The_Referencers, The_Referencer, Dummy);
end if;
else
Directory_Tools.Object.Add
(The_Referencers, The_Referencer, Dummy);
end if;
end if;
end;
Object_Set.Next (Referencers_Iterator);
end loop;
Object_Set.Close (The_Set => Referencers_Set, Status => Error_Status);
return (The_Referencers);
--
exception
when others =>
return (The_Referencers);
--
end Referencers_Of;
function Is_User (This_Referencer : in Referencer;
Of_Spec_View : in Spec_View) return Boolean is
--
Imported_Links : Object_Info.Links.Imported_External_Links :=
Object_Info.Links.Links_Derived_From
(This_Import => Of_Spec_View,
Into_View => This_Referencer,
Used_Only => True);
--
begin
return (not Object_Info.Any.Is_Empty (Imported_Links));
end Is_User;
end Cmvc;