|
|
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: 7168 (0x1c00)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package Fields, seg_00466e
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
--| @SUMMARY This package provides a means for iterating over the fields
--| in a line.
--|
--| @RAISES "Not_Initialized" (if passed an uninitialized object).
--|
--| @INDICES (Text_Processing, Utility)
--|
--| @SPECIAL_NOTES All strings are returned starting at index 1.
--|
generic
--| @DESCRIPTION Specifies which characters are field separators. The
--| beginning and the end of the string is always a field separator. For
--| example, if the Is_Separator function recognizes '|' and '.' as field
--| separators, then the following string contains five fields (three of
--| which are null):
--|
--| |a.|bcd|
--|
--| and the following string contains three fields (one of which is null):
--|
--| a|.bdc
--|
--| @SPECIAL_NOTES The null string contains no fields.
--|
with function Is_Separator (This_Character : in Character) return Boolean;
package Fields is
subtype Field is String;
type Iterator is private;
--| @SUMMARY Parses the specified string looking for fields, and returns
--| an initialized field iterator.
--|
--| @SPECIAL_NOTES If the string is null, the resulting iterator
--| contains no fields, and "Done" is always True; otherwise the
--| current field in the iterator is reset to the first field in
--| the iterator before the iterator is returned.
--|
function Create (From_String : in String) return Iterator;
--| @SUMMARY Returns the image of the specified fields iterator. Is the
--| inverse of the "Create" function.
--|
function Image (Of_Fields : in Iterator) return String;
--| @SUMMARY Returns True if the iterator is "Done".
--|
function Done (This_Iterator : in Iterator) return Boolean;
--| @SUMMARY Resets the current field in the iterator to the first field.
--|
--| @SPECIAL_NOTES If the iterator is empty, has no effect. --|
procedure Reset (This_Iterator : in out Iterator);
--| @SUMMARY Returns the current field in the iterator.
--|
--| @RAISES No_Current_Field (if already "Done").
--|
function Current (This_Iterator : in Iterator) return Field;
--| @SUMMARY Replaces the current field in the iterator with the new field.
--|
--| @RAISES No_Current_Field (if already "Done").
--|
--| Parse_Failure (if the new field contains a separator).
--|
--| @DESCRIPTION Can be called during iteration without altering
--| iterator's position.
--|
procedure Modify (This_Iterator : in out Iterator; New_Field : in Field);
--| @SUMMARY Advances the current field in the iterator to the next field.
--|
--| @RAISES No_Next_Field (if already "Done").
--|
procedure Next (This_Iterator : in out Iterator);
--| @SPECIAL_NOTES Fields are numbered 1..N
subtype Field_Number is Positive;
--| @SUMMARY Returns the field number corresponding to the current field in
--| the iterator.
--|
--| @RAISES No_Current_Field (if already "Done").
--|
function Position (In_Iterator : in Iterator) return Field_Number;
--| @SUMMARY Sets the current field in the iterator to the specified
--| field number.
--|
--| @RAISES Out_Of_Range (if the specified field number is out of range,
--| or if the iterator is empty).
--|
procedure Set (This_Iterator : in out Iterator; To_Field : in Field_Number);
--| @SUMMARY Returns the field corresponding to the specified field number.
--|
--| @RAISES Out_Of_Range (if the specified field number is out of range,
--| or if the iterator is empty).
--|
--| @SPECIAL_NOTES Can be called during iteration without altering
--| iterator's position.
--|
function Field_At
(This_Position : in Field_Number; In_Iterator : in Iterator)
return Field;
--| @SUMMARY Returns True if the specified iterator contains no fields.
--|
function Is_Empty (This_Iterator : in Iterator) return Boolean;
--| @SUMMARY Returns the number of fields in the specified iterator.
--|
function Fields_In (This_Iterator : in Iterator) return Natural;
--| @SUMMARY Adds the specified field to the end of the field iterator,
--| using the specified separator (if the new field is the only field,
--| no separator is used).
--|
--| @RAISES Parse_Failure (if the new field contains a separator,
--| or if the specified separator character is not a valid separator).
--|
--| @SPECIAL_NOTES This operation is NOT safe to call during iteration.
--|
procedure Add (This_Field : in Field;
To_Iterator : in out Iterator;
Using_Separator : in Character);
Not_Initialized : exception;
Parse_Failure : exception;
No_Current_Field : exception;
No_Next_Field : exception;
Out_Of_Range : exception;
private
type Fields_Pointer is access String;
type Iterator is
record
The_Fields : Fields_Pointer := null;
Characters_In_Current_Field : Natural := 0;
Trailing_Separator_Position : Natural := 0;
Current_Field_Number : Natural := 0;
Done : Boolean := True;
end record;
end Fields;
nblk1=6
nid=0
hdr6=c
[0x00] rec0=1f rec1=00 rec2=01 rec3=02a
[0x01] rec0=1a rec1=00 rec2=02 rec3=002
[0x02] rec0=1d rec1=00 rec2=03 rec3=00c
[0x03] rec0=19 rec1=00 rec2=04 rec3=006
[0x04] rec0=19 rec1=00 rec2=05 rec3=018
[0x05] rec0=15 rec1=00 rec2=06 rec3=000
tail 0x2170027e6815c66614caf 0x42a00088462061e03