|
|
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 - metrics - download
Length: 25600 (0x6400)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Cmvc, seg_0045af, separate Object_Info
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦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;
begin
if Any.Is_Bad (This_View) then
return Utilities.Bad_Object;
end if;
if not Any.Is_View (This_View) then
return Utilities.Bad_Object;
end if;
Standard.Directory.Naming.Resolve (View_Model_Database_Name,
View_Model_Database, Name_Status);
if Name_Status /= Standard.Directory.Naming.Successful then
return Utilities.Bad_Object;
end if;
Object_Set.Open (View_Model_Database, View_Model_Set, Error_Status);
if Error_Status /= Standard.Directory.Successful then
return Utilities.Bad_Object;
end if;
Object_Set.Init (View_Model_Iterator, View_Model_Set);
View_Model := Object_Set.Value (Vew_Model_Iterator);
The_Model := Directory_Tools.Naming.Resolution
(Standard.Directory.Naming.Get_Full_Name (View_Model));
if Any.Is_Bad (The_Model) then
return Utilities.Bad_Object;
end if;
Object_Set.Close (The_Set => View_Model_Set, Status => Error_Status);
return The_Model;
exception
when others =>
return Utilities.Bad_Object;
end Model_For;
function Models_Equal (This_View : in View; This_Model : in Model_World)
return Boolean is
begin
if not Any.Is_Good (This_Model) then
return False;
end if;
if not Any.Is_Simple_World (This_Model) then
return False;
end if;
return Directory_Tools.Naming.Full_Name (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
-- Necessary because there is no subclass.
The_Info_File : Io.File_Type;
begin
Io.Open (The_Info_File, Io.In_File,
Directory_Tools.Naming.Full_Name (This_Subsystem) &
".STATE.COMPATIBILITY.STATE");
declare
The_Entry : constant String := Io.Get_Line (The_Info_File);
begin
Io.Close (The_Info_File);
return The_Entry = "PRIMARY => TRUE";
end;
exception
when others =>
Io.Close (The_Info_File);
return False;
end Is_Primary;
function Is_Secondary (This_Subsystem : in Subsystem) return Boolean is
begin
return not 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 Any.Is_Library (This_Object) and then
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 Utilities.Contains_Objects
(This_Object, 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 Utilities.Contains_Objects
(This_Object, 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 Utilities.Objects_In
(This_Object, 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 Utilities.Objects_In
(This_Object, 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 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 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 Any.Is_Good (This_View) then
return Utilities.Bad_Objects;
end if;
if not Any.Is_View (This_View) then
return Utilities.Bad_Objects;
end if;
Standard.Directory.Naming.Resolve
(Imports_Database_Name, Imports_Database, Name_Status);
if Name_Status /= Standard.Directory.Naming.Successful then
return Utilities.Bad_Objects;
end if;
Object_Set.Open (Imports_Database, Imports_Set, Error_Status);
if Error_Status /= Standard.Directory.Successful then
return Utilities.Bad_Objects;
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 Any.Is_Good (The_Import) then
if Used_Only then
if 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 Utilities.Bad_Objects;
end Imports_For;
function Is_Used (This_Import : in Import; By_View : in View)
return Boolean is
Imported_Links : Links.Imported_External_Links :=
Links.Links_Derived_From
(This_Import => This_Import,
Into_View => By_View,
Used_Only => True);
begin
return not 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 Any.Is_Good (This_Spec_View) then
return Utilities.Bad_Objects;
end if;
if not Any.Is_View (This_Spec_View) then
return Utilities.Bad_Objects;
end if;
Standard.Directory.Naming.Resolve (Rferencers_Database_Name,
Referencers_Database, Name_Status);
if Name_Status /= Standard.Directory.Naming.Successful then
return Utilities.Bad_Objects;
end if;
Object_Set.Open (Referencers_Database, Referencers_Set, Error_Status);
if Error_Status /= Standard.Directory.Successful then
return Utilities.Bad_Objects;
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 Any.Is_Good (The_Referencer) then
if Using_Only then
if 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 Utilities.Bad_Objects;
end Referencers_Of;
function Is_User (This_Referencer : in Referencer;
Of_Spec_View : in Spec_View) return Boolean is
Imported_Links : Links.Imported_External_Links :=
Links.Links_Derived_From
(This_Import => Of_Spec_View,
Into_View => This_Referencer,
Used_Only => True);
begin
return not Any.Is_Empty (Imported_Links);
end Is_User;
end Cmvc;
nblk1=18
nid=0
hdr6=30
[0x00] rec0=1b rec1=00 rec2=01 rec3=018
[0x01] rec0=18 rec1=00 rec2=02 rec3=052
[0x02] rec0=00 rec1=00 rec2=18 rec3=002
[0x03] rec0=1c rec1=00 rec2=03 rec3=014
[0x04] rec0=00 rec1=00 rec2=17 rec3=004
[0x05] rec0=23 rec1=00 rec2=04 rec3=00c
[0x06] rec0=16 rec1=00 rec2=05 rec3=012
[0x07] rec0=18 rec1=00 rec2=06 rec3=014
[0x08] rec0=1a rec1=00 rec2=07 rec3=02e
[0x09] rec0=14 rec1=00 rec2=08 rec3=06e
[0x0a] rec0=01 rec1=00 rec2=16 rec3=028
[0x0b] rec0=16 rec1=00 rec2=09 rec3=06a
[0x0c] rec0=01 rec1=00 rec2=15 rec3=00c
[0x0d] rec0=18 rec1=00 rec2=0a rec3=058
[0x0e] rec0=00 rec1=00 rec2=14 rec3=014
[0x0f] rec0=1c rec1=00 rec2=0b rec3=008
[0x10] rec0=00 rec1=00 rec2=13 rec3=002
[0x11] rec0=13 rec1=00 rec2=0c rec3=03a
[0x12] rec0=1d rec1=00 rec2=0d rec3=036
[0x13] rec0=1d rec1=00 rec2=0e rec3=058
[0x14] rec0=00 rec1=00 rec2=12 rec3=002
[0x15] rec0=12 rec1=00 rec2=0f rec3=032
[0x16] rec0=1a rec1=00 rec2=10 rec3=034
[0x17] rec0=0d rec1=00 rec2=11 rec3=000
tail 0x217002148815c65459084 0x42a00088462061e03