|
|
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: 8031 (0x1f5f)
Types: TextFile
Names: »B«
└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13
└─⟦124ff5788⟧ »DATA«
└─⟦this⟧
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
└─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16
└─⟦6f12a12be⟧ »DATA«
└─⟦this⟧
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
└─⟦d65440be7⟧ »DATA«
└─⟦this⟧
with Io_Exceptions;
with Logger;
with Requirements;
with String_Utilities;
separate (Actions)
package body Requirement is
package Dcp renames Directory.Control_Point;
package Diio renames Device_Independent_Io;
package Dna renames Directory.Naming;
package Gwo renames Gateway_Object;
function Formatted_Image
(R : in Requirements.Requirement_Kind) return String is
Capitalize_Next : Boolean := True;
Offset : constant := Character'Pos ('a') - Character'Pos ('A');
The_Image : constant String := Requirements.Requirement_Kind'Image (R);
The_Formatted_Image : String (The_Image'Range);
begin
for I in The_Image'Range loop
if The_Image (I) = '_' then
The_Formatted_Image (I) := ' ';
Capitalize_Next := True;
elsif Capitalize_Next then
The_Formatted_Image (I) := The_Image (I);
Capitalize_Next := False;
else
The_Formatted_Image (I) :=
Character'Val (Character'Pos (The_Image (I)) + Offset);
end if;
end loop;
return The_Formatted_Image;
end Formatted_Image;
function Image_Contents (Image : in Dc.Image_Id;
Contents_Before : in String;
First_Line_To_Examine : in Positive;
Last_Line_To_Examine : in Natural) return String is
begin
if First_Line_To_Examine > Last_Line_To_Examine then
return Contents_Before;
else
return Image_Contents
(Image => Image,
Contents_Before =>
Contents_Before & Ascii.Lf &
Dc.Line_Contents
(Id => Image, Line => First_Line_To_Examine),
First_Line_To_Examine => First_Line_To_Examine + 1,
Last_Line_To_Examine => Last_Line_To_Examine);
end if;
end Image_Contents;
function Image_Contents (Image : in Dc.Image_Id)
return String is
Last_Line : Natural := Dc.Last_Line (Image);
begin
if Last_Line = 0 then
return "";
else
return Image_Contents (Image => Image,
Contents_Before =>
Dc.Line_Contents (Id => Image, Line => 1),
First_Line_To_Examine => 2,
Last_Line_To_Examine => Last_Line);
end if;
end Image_Contents;
function Relative_Name (Full_Name : in String; Relative_To : in String)
return String is
begin
pragma Assert (Full_Name'Length >= Relative_To'Length and then
Full_Name (Full_Name'First ..
Full_Name'First + Relative_To'Length - 1) =
Relative_To);
return Full_Name
(Full_Name'First + Relative_To'Length + 1 -- Skip the '.'
.. Full_Name'Last);
end Relative_Name;
procedure Image_Name (Handle : Dc.Gateway_Handle;
Visible : Boolean;
Read_Only : Boolean;
No_Image : out Boolean;
Show_Property_Image : out Boolean;
Id : out Dc.Image_Identity) is
Gateway_Object : constant Dir.Object := Gwo.Directory_Object (Handle);
S : Ss.Condition;
begin
Show_Property_Image := False;
Id := (I1 => Dir.Unique (Gateway_Object), I2 => 0);
No_Image := False;
if not Read_Only then
S := Check_Writeable (Handle);
Logger.Status (S);
end if;
exception
when Profile.Error =>
No_Image := True;
Logger.Error ("Image construction is quitting after errors",
Raise_Error => False);
end Image_Name;
procedure Build_Image (Handle : Dc.Gateway_Handle;
Visible : Boolean;
In_Place : Boolean;
First_Time : Boolean;
Read_Only : in out Boolean;
Image : Dc.Image_Id;
No_Image : out Boolean;
Underlying_Object : out Directory.Object) is
E : Dir.Error_Status;
Gateway_Object : constant Dir.Object := Gwo.Directory_Object (Handle);
Gateway_Full_Name : constant String :=
Dna.Get_Full_Name (Gateway_Object);
Parent_Library : Dir.Object;
begin
Underlying_Object := Dir.Nil;
if not Read_Only then
if Ss.Error (Check_Writeable (Handle)) then
No_Image := True;
return;
end if;
end if;
Dcp.Parent_Library (The_Object => Gateway_Object,
The_Library => Parent_Library,
Status => E);
Logger.Status (E);
Dc.Replace_Header
(Image => Image,
Header => String_Utilities.Capitalize
(Relative_Name (Full_Name => Gateway_Full_Name,
Relative_To => Dna.Get_Full_Name
(Parent_Library))) &
" : " & Formatted_Image
(Asap.Asa_Requirement_Kind (Handle)) & ';');
Dc.Replace_Lines (Image => Image,
Starting_Line => 1,
Number_Of_Lines => Dc.Last_Line (Image),
New_Text => Asap.Asa_Requirement_Text (Handle));
No_Image := False;
exception
when Profile.Error =>
No_Image := True;
Logger.Error ("Image construction is quitting after errors",
Raise_Error => False);
end Build_Image;
procedure Post_Commit (Handle : Dc.Gateway_Handle;
Image : Dc.Image_Id) is
S : Ss.Condition;
The_Handle : Dc.Gateway_Handle := Handle;
begin
if not Gwo.Is_Main_Object_Open_For_Update (Handle) then
Gwo.Re_Open_Main_Object_For_Update (The_Handle, Errors => S);
Logger.Status (S);
end if;
Asap.Set_Asa_Requirement_Text (The_Handle,
Value => Image_Contents (Image));
exception
when Profile.Error =>
Logger.Error ("Image has not been committed", Raise_Error => False);
end Post_Commit;
procedure Edit (Handle : Dc.Gateway_Handle;
Image : Dc.Image_Id;
S : Dc.Selection;
C : Dc.Cursor;
Visible : Boolean;
Allow_Edit : out Boolean) is
St : Ss.Condition;
begin
St := Check_Writeable (Handle);
Logger.Status (St);
Allow_Edit := True;
exception
when Profile.Error =>
Allow_Edit := False;
Logger.Error ("Edit is quitting after errors",
Raise_Error => False);
end Edit;
procedure Io_Open (File : in out Device_Independent_Io.File_Type;
Mode : Device_Independent_Io.File_Mode;
Handle : Dc.Gateway_Handle;
Form : String;
Action_Id : Action.Id) is
use Diio;
begin
pragma Assert (Mode = Diio.In_File);
Diio.Create (File,
Mode => Diio.Out_File,
Name => "",
Action_Id => Action_Id);
Diio.Write (File,
Item => Asap.Asa_Requirement_Text (Handle));
Diio.Reset (File,
Mode => Diio.In_File);
end Io_Open;
end Requirement;