|
|
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: 3393 (0xd41)
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 Text_Io;
package body String_Run is
---------------------------------------------------------------------------
procedure Init (Iter : in out Iterator; With_String : String) is
The_Object : Object (With_String'First, With_String'Last);
begin
Iter.Last := With_String'Last;
Iter.Index := With_String'First;
Iter.The_Object := The_Object;
Iter.The_Object.String := With_String;
exception
when Constraint_Error =>
Text_Io.Put_Line ("-- Init Error");
raise;
end Init;
---------------------------------------------------------------------------
function Next_Done (Iter : Iterator) return Boolean is
begin
return (Iter.Index >= Iter.Last);
end Next_Done;
---------------------------------------------------------------------------
function Done (Iter : Iterator) return Boolean is
begin
return (Iter.Index > Iter.Last);
end Done;
---------------------------------------------------------------------------
function Next_Value (Iter : Iterator) return Character is
begin
if (not Next_Done (Iter)) then
return Iter.The_Object.String (Iter.Index + 1);
else
return Ascii.Nul;
end if;
end Next_Value;
---------------------------------------------------------------------------
function Value (Iter : Iterator) return Character is
begin
return Iter.The_Object.String (Iter.Index);
end Value;
---------------------------------------------------------------------------
function Current_Index (Iter : Iterator) return Natural is
begin
return Iter.Index;
end Current_Index;
---------------------------------------------------------------------------
function Cut (Iter : Iterator; Index : Natural) return String is
The_String : String (1 .. Iter.Last - Index + 1);
begin
The_String := Iter.The_Object.String (Index .. Iter.Last);
return The_String;
exception
when Constraint_Error =>
Text_Io.Put_Line ("-- Cut Error");
raise;
end Cut;
---------------------------------------------------------------------------
function Rest (Iter : Iterator) return String is
The_String : String (1 .. Iter.Last - Iter.Index);
begin
The_String := Iter.The_Object.String (Iter.Index + 1 .. Iter.Last);
return The_String;
exception
when Constraint_Error =>
Text_Io.Put_Line ("-- Rest error");
raise;
end Rest;
---------------------------------------------------------------------------
procedure Next (Iter : in out Iterator) is
begin
if (Iter.Index /= Index_Range'Last) then
Iter.Index := Index_Range'Succ (Iter.Index);
end if;
end Next;
---------------------------------------------------------------------------
procedure Previous (Iter : in out Iterator) is
begin
if (Iter.Index /= Iter.The_Object.String'First) then
Iter.Index := Index_Range'Pred (Iter.Index);
end if;
end Previous;
end String_Run;
-------------------------------------------------------------------------------