::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:
class Io.Utility.Public public Gilda: Utilities for performing data I/O.
global +Text.Clip Heap..string, &Lines of selected text
+Text.End Bit :0 if no return after the last line
: Make this a structure???
:
global +File, &File Id being searched???
+At.Buffer At..byte, &Current file buffer.
+Size word, &Size of the buffer.
+Offset word, &Offset into the buffer (Length when done).
+C1 byte, &Character to find,
+C2 byte :Second to find; if no second set to C1.
:
: io/crc/Crc.Word Compute a 32 bit CRC checksum.
: io/log/Message.Log Create a single log file.
: io/serialize/Serialize.Primitive Serialize and deserialize primitive types.
: io/clip/Text.Clip Manage the state of a system clipboard.
: io/raw/Raw.Io Utilities to assist in raw I/O operations
: io/raw/Search.File Scan a file for any of a set of bytes.
:...............................................................................
:::::::::::::::::::::::::::::: io/crc/Crc.Word :::::::::::::::::::::::::::::::
:
function CRC..string: Compute the CRC checksum of a string.
entry Data string, &User data to fold into the CRC
Prior = -1 word :CRC prior to this point
exit Crc word :Updated CRC
:
:...............................................................................
:
function CRC..cell: Compute the CRC checksum of a 64 bit integer.
entry Data cell, &User data to fold into the CRC
Prior = -1 word :CRC prior to this point
exit Crc word :Updated CRC
:
:...............................................................................
:
function CRC..word: Compute the CRC checksum of a 32 bit integer.
entry Data word, &User data to fold into the CRC
Prior = -1 word :CRC prior to this point
exit Crc word :Updated CRC
:
:...............................................................................
:
function CRC..parcel: Compute the CRC checksum of a 16 bit integer.
entry Data parcel, &User data to fold into the CRC
Prior = -1 word :CRC prior to this point
exit Crc word :Updated CRC
:
:...............................................................................
:
function CRC..byte: Compute the CRC checksum of a byte.
entry Data[*Max] byte, &User data to fold into the CRC
Prior = -1 word :CRC prior to this point
exit Crc word :Updated CRC
:
:...............................................................................
::::::::::::::::::::::::::::: io/log/Message.Log :::::::::::::::::::::::::::::
:
method OPEN.LOG: Open the log file.
entry File string, &OS path of the log file.
Silent = 0 Bit, &0 - Write messages to Standard Error as well.
&1 - Only write messages to the log file.
Append = 0 Bit :Append messages if a log file exists.
precondition
@Log`Id = 0 error File; The log file is already open.
.
:...............................................................................
:
method CLOSE.LOG: Close the log file.
:
:...............................................................................
:
method RESET.SILENT: Enable or disable writing messages to Standard Error.
entry Silent = 0 Bit :0 - Also write to Standard Error.
:1 - Only log the message.
:...............................................................................
:
method APPEND.LOG: Open a log file, write a message, and close it.
entry File string, &OS path of the log file.
Message = "" string, &Message text; no trailing return is needed.
Silent = 0 Bit :0 - Write messages to Stdandard Error as well.
:1 - Only write messages to the log file.
:...............................................................................
:
method PRINT.LOG: Write a message to a log file and optionally to Standard Error.
entry Message = "" string, &Message text; no trailing return is needed.
More = 0 Bit :1 - Supress inserting a trailing return.
:
: Note: Set More when you want to make a series of calls
: to concatenate a message.
:...............................................................................
:
method PRINT.ERROR: Also write to Standard Error even if silent running.
entry Message = "" string :Message text; no trailing return is needed.
:
:...............................................................................
:
method POST.LOG pure: See if an I/O error occured while logging.
exit Status byte :0 if no error; else an I/O error code.
:
:...............................................................................
:::::::::::::::::::: io/serialize/Serialize.Primitive ::::::::::::::::::::::::
:
function SERIALIZE..string: Serialize a string.
entry String :User data to serialize
exit Serial string :A quoted string enclosed in double quotes
:
:...............................................................................
:
method DESERIALIZE..string: Deserialize a string.
exit String :Deserialized user data
entry Serial string :A quoted string enclosed in double quotes
precondition
byte{ Serial } = '"' fault Serial; A serialized string must be quoted.
.
:...............................................................................
:
function SERIALIZE..byte: Serialize an 8 bit integer.
entry Byte :User data to serialize
exit Serial string :A lead ('p' | 'm') sign and upper case hex digits
:
:...............................................................................
:
method DESERIALIZE..byte: Deserialize an 8 bit integer.
exit Byte :Deserialized user data
entry Serial string :A lead ('p' | 'm') sign and upper case hex digits
precondition
byte{ Serial } = 'p' | 'm' fault Serial; Missing lead 'p' or 'm'.
.
:...............................................................................
:
function SERIALIZE..parcel: Serialize a 16 bit integer.
entry Parcel :User data to serialize
exit Serial string :A lead ('p' | 'm') sign and upper case hex digits
:
:...............................................................................
:
method DESERIALIZE..parcel: Deserialize a 16 bit integer.
exit Parcel :Deserialized user data
entry Serial string :A lead ('p' | 'm') sign and upper case hex digits
precondition
byte{ Serial } = 'p' | 'm' fault Serial; Missing lead 'p' or 'm'.
.
:...............................................................................
:
function SERIALIZE..word: Serialize a 32 bit integer.
entry Word :User data to serialize
exit Serial string :A lead ('p' | 'm') sign and upper case hex digits
:
:...............................................................................
:
method DESERIALIZE..word: Deserialize a 16 bit integer.
exit Word :User data to serialize
entry Serial string :A lead ('p' | 'm') sign and upper case hex digits
precondition
byte{ Serial } = 'p' | 'm' fault Serial; Missing lead 'p' or 'm'.
.
:...............................................................................
:
function SERIALIZE..cell: Serialize a 64 bit integer.
entry Cell :User data to serialize
exit Serial string :A lead ('p' | 'm') sign and upper case hex digits
:
:...............................................................................
:
method DESERIALIZE: Deserialize a 64 bit integer.
exit Cell :Deserialized user data
entry Serial string :A lead ('p' | 'm') sign and upper case hex digits
precondition
byte{ Serial } = 'p' | 'm' fault Serial; Missing lead 'p' or 'm'.
.
:...............................................................................
:
function SERIALIZE..double: Serialize a double precision IEEE floating point number.
entry Double :User data to serialize
exit Serial string :Serialized as: ['-'] '#1.' hex ['p' hex]
:
:...............................................................................
:
method DESERIALIZE..double: Deserialize a double precision IEEE floating point number.
exit Double :Deserialized user data
entry Serial string :Real number in Gilda hexadecimal format
:
:...............................................................................
:
function SERIALIZE..single: ed ed Serialize a single precision IEEE floating point number.
entry Single :User data to serialize
exit Serial string :Serialized as: ['-'] '#1.' hex ['p' hex]
:
:...............................................................................
:
method DESERIALIZE..single: Deserialize a single precision IEEE floating point number.
exit Single :Deserialized user data
entry Serial string :Real number in Gilda hexadecimal format
:
:...............................................................................
::::::::::::::::::::::::::::: io/clip/Text.Clip ::::::::::::::::::::::::::::::
:
method GET.TEXT.LINE: Get a single line of printable characters.
exit Text string :Validated line. Null if none, more than one line,
:or the text has non-printable characters.
:
:...............................................................................
:
method INSERT_TEXT_CLIP: Get text from the system clipboard.
entry Clip[*] byte :Reference data in the system clipboard to insert.
:
:...............................................................................
:
method COPY_TEXT_CLIP: Copy the editor text buffer to the system clipboard.
exit Clip[*] byte :Return text here to the system clipboard.
:
:...............................................................................
:::::::::::::::::::::::::::::: io/raw/Raw.Io :::::::::::::::::::::::::::::::::
:
method OPEN.STRING.OFFSET: Begin reading strings with random access.
entry File string, &Os path of a file to open.
Offset = 0 cell :Place in the file to start reading.
:
:...............................................................................
:
method CLOSE.STRING.OFFSET: Close direct access strings.
:
:...............................................................................
:
method READ.STRING.OFFSET: Begin reading strings with random access.
exit Text = "" string, &A line of text; Empty if at End Of File.
Offset cell :File offset to the first Byte in the line.
:On End Of File, the size of the file.
:
:...............................................................................
:
method WRITE.STRING.OFFSET: Write a string with direct access.
entry Text string, &A line of text to write.
Offset cell :File offset to the first Byte in the line.
:
:...............................................................................
::::::::::::::::::::::::::::: io/raw/Search.File :::::::::::::::::::::::::::::
:
method SEARCH.FILE.RAW: Find raw characters.
entry File string :Os path name of the file (tame, readable).
exit Line string, &Line containing the match; null if none.
Index word :Index to first match; 0 if text miss;
: -1 if not a text file.
:
:...............................................................................
:
method SEARCH.FILE.NEXT: Scan a file for any one of a set of characters.
change Line string, & in - prior line being scanned. Null to move on.
&out - Line containing a match or null if no match.
Index word : in - Index to the last hit; junk if null Line.
:out - Index to the match; 0 if no match.
exit New Bit :1 - Advanced to another line.
:
:...............................................................................
:
method SEARCH.FILE.TEXT: See if a file is a text file and find characters.
entry File string :Os path name of the file (tame, readable).
exit Line = "" string, &Line containing the match; null if none.
Index = -1 word :Index to first match; 0 if text miss;
: -1 if not a text file.
:
:...............................................................................
:
method SEARCH.FILE.CLOSE: Terminate a search before scanning the whole file.
:
:...............................................................................
end