|
|
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: 6914 (0x1b02)
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⟧
with Debug_Tools;
package body Lines is
procedure Assert_Is_Initialized (This_Line : in Line) is
begin
if (not This_Line.Is_Initialized) then
raise Not_Initialized;
end if;
end Assert_Is_Initialized;
procedure Assert_Is_Initialized (This_Iterator : in Iterator) is
begin
if (not This_Iterator.Is_Initialized) then
raise Not_Initialized;
end if;
end Assert_Is_Initialized;
function Create (From_String : in String) return Line is
--
New_Line : Line;
--
begin
Vstrings.Copy (New_Line.Contents, From_String);
New_Line.Is_Initialized := True;
return (New_Line);
end Create;
function Empty_Line return Line is
begin
return (Lines.Create (""));
end Empty_Line;
function Copy (Of_Line : in Line) return Line is
begin
return (Lines.Create (Lines.Image (Of_Line)));
end Copy;
function Image (Of_Line : in Line) return String is
begin
Assert_Is_Initialized (Of_Line);
return (Vstrings.Image (Of_Line.Contents));
end Image;
function Create return Iterator is
--
New_Iterator : Iterator;
--
begin
New_Iterator.Is_Initialized := True;
return (New_Iterator);
end Create;
function Copy_Lines is new Strings.Copy (Copy);
function Copy (Of_Iterator : in Iterator) return Iterator is
--
New_Iterator : Iterator;
--
begin
New_Iterator.Contents := Copy_Lines (Of_Iterator.Contents);
New_Iterator.Is_Initialized := True;
return (New_Iterator);
end Copy;
procedure Add (To_Iterator : in out Iterator; This_Line : in Line) is
begin
Assert_Is_Initialized (To_Iterator);
Assert_Is_Initialized (This_Line);
Strings.Add (To_Iterator.Contents, This_Line);
end Add;
function Done (This_Iterator : in Iterator) return Boolean is
begin
Assert_Is_Initialized (This_Iterator);
return (Strings.Done (This_Iterator.Contents));
end Done;
procedure Reset (This_Iterator : in out Iterator) is
begin
Assert_Is_Initialized (This_Iterator);
Strings.Reset (This_Iterator.Contents);
end Reset;
function Current (This_Iterator : in Iterator) return Line is
begin
Assert_Is_Initialized (This_Iterator);
begin
return (Strings.Current (This_Iterator.Contents));
exception
when Strings.No_Current_Element =>
raise No_Current_Line;
when others =>
raise;
end;
end Current;
procedure Modify (This_Iterator : in out Iterator; New_Line : in Line) is
begin
Assert_Is_Initialized (This_Iterator);
Assert_Is_Initialized (New_Line);
begin
Strings.Modify (This_Iterator.Contents, New_Line);
exception
when Strings.No_Current_Element =>
raise No_Current_Line;
when others =>
raise;
end;
end Modify;
procedure Next (This_Iterator : in out Iterator) is
begin
Assert_Is_Initialized (This_Iterator);
begin
Strings.Next (This_Iterator.Contents);
exception
when Strings.No_Next_Element =>
raise No_Next_Line;
when others =>
raise;
end;
end Next;
function Position (In_Iterator : in Iterator) return Line_Number is
begin
Assert_Is_Initialized (In_Iterator);
begin
return (Strings.Position (In_Iterator.Contents));
exception
when Strings.No_Current_Element =>
raise No_Current_Line;
when others =>
raise;
end;
end Position;
procedure Set (This_Iterator : in out Iterator; To_Line : in Line_Number) is
begin
Assert_Is_Initialized (This_Iterator);
begin
Strings.Set (This_Iterator.Contents, To_Line);
exception
when Strings.Out_Of_Range =>
raise Out_Of_Range;
when others =>
raise;
end;
end Set;
function Line_At (This_Position : in Line_Number; In_Iterator : in Iterator)
return Line is
begin
Assert_Is_Initialized (In_Iterator);
begin
return (Strings.Element_At (This_Position, In_Iterator.Contents));
exception
when Strings.Out_Of_Range =>
raise Out_Of_Range;
when others =>
raise;
end;
end Line_At;
function Is_Empty (This_Iterator : in Iterator) return Boolean is
begin
Assert_Is_Initialized (This_Iterator);
return (Strings.Is_Empty (This_Iterator.Contents));
end Is_Empty;
function Lines_In (This_Iterator : in Iterator) return Natural is
begin
Assert_Is_Initialized (This_Iterator);
return (Strings.Elements_In (This_Iterator.Contents));
end Lines_In;
-- ***** REGISTRATION OF TYPE IMAGES
function Line_Image (This_Line : in Line;
Level : in Natural;
Prefix : in String;
Expand_Pointers : in Boolean) return String is
begin
if (not This_Line.Is_Initialized) then
return ("<NOT INITIALIZED>");
else
return (Image (This_Line));
end if;
end Line_Image;
procedure Register_Line is new Debug_Tools.Register (Line, Line_Image);
function Iterator_Image (This_Iterator : in Iterator;
Level : in Natural;
Prefix : in String;
Expand_Pointers : in Boolean) return String is
--
The_Iterator : Iterator := This_Iterator;
--
The_Concatenated_Iterator : Line := Line (Lines.Empty_Line);
--
begin
if (not This_Iterator.Is_Initialized) then
return ("<NOT INITIALIZED>");
elsif (Is_Empty (The_Iterator)) then
return ("<EMPTY>");
elsif (Lines_In (The_Iterator) = 1) then
return (Image (Current (The_Iterator)));
else
Reset (The_Iterator);
return (Image (Current (The_Iterator)) & Ascii.Lf);
while (not Done (The_Iterator)) loop
The_Concatenated_Iterator :=
Create (Prefix & Image (The_Concatenated_Iterator) &
Ascii.Lf);
Next (The_Iterator);
end loop;
return (Image (The_Concatenated_Iterator));
end if;
end Iterator_Image;
procedure Register_Iterator is
new Debug_Tools.Register (Iterator, Iterator_Image);
begin
Register_Line;
Register_Iterator;
end Lines;