oracular (3) afnix-sio.3.gz

Provided by: afnix_3.8.0-1_amd64 bug

NAME

       sio - standard input/output module

STANDARD INPUT/OUTPUT MODULE

       The  Standard  Input/Output module is an orginal implementation that provides objects for i/o operations.
       Although input and output files are the standard objects that one might expect, the module facilities for
       directory  access, path manipulation and i/o event management. At the heart of this module is the concept
       of stream associated with the transcoding object which enable the passage between one  coding  system  to
       another. It is also this module which provides the stream selector object.

       Input and output streams
       The  afnix-sio module is based on facilities provided by two base classes, namely, the InputStream stream
       and the OutputStream stream. Both classes have associated predicates with  the  name  input-stream-p  and
       output-stream-p. The base class associated is the Stream class those sole purpose is to define the stream
       coding mode.

       Stream base class
       The Stream class is the base class for the InputStream and OutputStream classes. The Stream class is used
       to  define the stream coding mode that affects how characters are read or written. When a stream operates
       in byte mode, each character is assumed to be encoded in one byte. In that case, the input stream methods
       read and getu are equivalent and no transformation is performed when writing characters. This behavior is
       the default stream behavior. For certain stream, like terminal, this behavior is changed depending on the
       current  localization  settings.  For instance, if the current locale is operating with an UTF-8 codeset,
       the Terminal stream coding mode is automatically adjusted to reflect this situation. Since  the  US-ASCII
       codeset  is  predominant  and the default steam coding mode is the byte mode, there should be no conflict
       during the read and write operations.

       Stream transcoding
       The Stream class provides the support for the transcoding of different codesets.  All  ISO-8859  codesets
       are  supported.  Since  the engine operates internally with Unicode characters, the transcoding operation
       takes care of changing a character in one particular codeset into its equivalent Unicode  representation.
       This operation is done for an input stream that operates in byte mode. For an output stream, the opposite
       operation is done. An internal Unicode characters representation is therefore mapped  into  a  particular
       codeset. Note that only the codeset characters can be mapped.

       Codeset   Description
       DEFAULT   Default codeset, i.e US-ASCII
       ISO-01    ISO-8859-1 codeset
       ISO-02    ISO-8859-2 codeset
       ISO-03    ISO-8859-3 codeset
       ISO-04    ISO-8859-4 codeset
       ISO-05    ISO-8859-5 codeset
       ISO-06    ISO-8859-6 codeset
       ISO-07    ISO-8859-7 codeset
       ISO-08    ISO-8859-8 codeset
       ISO-09    ISO-8859-9 codeset
       ISO-10    ISO-8859-10 codeset
       ISO-11    ISO-8859-11 codeset
       ISO-13    ISO-8859-13 codeset
       ISO-14    ISO-8859-14 codeset
       ISO-15    ISO-8859-15 codeset
       ISO-16    ISO-8859-16 codeset
       UTF-08    Unicode UTF-8 codeset

       The  set-encoding-mode  can  be  used  to  set the stream encoding codeset. The method operates either by
       enumeration or string. The get-encoding-mode returns the stream encoding mode. There are some  time  good
       reasons  to  force a stream encoding mode. For example, a file encoded in UTF-8 that is read will require
       this call since the default stream mode is to work in byte mode. It should  be  noted  that  there  is  a
       difference between the enumeration and the string encoding mode. The enumeration mode defines whether the
       stream operates in byte or UTF-8 mode. When the stream operates in byte mode, it  is  also  necessary  to
       define  the  transcoding mode with the set-transcoding-mode method. For simplicity, the string version of
       the set-encoding-mode takes care of setting both the stream mode and the transcoding  mode.  It  is  also
       worth to note that internally, the Stream class is derived from the Transcoder class.

       Input stream
       The  InputStream  base  class has several method for reading and testing for byte availability. Moreover,
       the class provides a push-back buffer. Reading bytes is in the form of three  methods.  The  read  method
       without  argument  returns the next available byte or the end-of-streameos. With an integer argument, the
       read method returns a Buffer with at most the number of requested bytes. The readln  method  returns  the
       next  available  line.  When  it  is  necessary  to  read  characters  instead of bytes, the getu is more
       appropriate since it returns an Unicode character.

       Output stream
       The OutputStream base class provides the base methods to write to an  output  stream.  The  write  method
       takes  literal objects which are automatically converted to string representation and then written to the
       output stream. Note that for the case of a Buffer object, it is the buffer  itself  that  take  a  stream
       argument and not the opposite.

       The valid-p predicate
       The  input stream provides a general mechanism to test and read for bytes. The base method is the valid-p
       predicate that returns true if a byte can be read from the stream. It  is  important  to  understand  its
       behavior  which  depends  on  the  stream  type.  Without  argument,  the valid-p predicate checks for an
       available byte from the input stream. This predicate will block if no byte is  available.  On  the  other
       end,  for  a  bounded  stream  like an input file, the method will not block at the end of file. With one
       integer argument, the valid-p predicate will timeout after the specified time specified in  milliseconds.
       This second behavior is particularly useful with unbound stream like socket stream.

       The eos-p predicate
       The  eos-p  predicate  does not take argument. The predicate behaves like not (valid-p 0). However, there
       are more subtle behaviors. For an input file, the predicate will return true if and only if a byte cannot
       be  read.  If a byte has been pushed-back and the end-of-stream marker is reached, the method will return
       false. For an input terminal, the method returns true if the user and  entered  the  end-of-stream  byte.
       Once  again,  the method reacts to the contents of the push-back buffer. For certain input stream, like a
       tcp socket, the method will return true when no byte can be read, that is here, the connection  has  been
       closed. For an udp socket, the method will return true when all datagram bytes have be read.

       The read method
       The  read  method  is  sometimes disturbing. Nevertheless, the method is a blocking one and will return a
       byte when completed. The noticeable exception is the returned byte when an end-of-stream marker has  been
       reached. The method returns the ctrl-d byte. Since a binary file might contains valid byte like ctrl-d it
       is necessary to use the valid-p or eos-p predicate to check for a file reading  completion.  This  remark
       apply  also  to bounded streams like a tcp socket. For some type of streams like a udp socket, the method
       will block when all datagram bytes have been consumed and no more datagram has arrived. With this kind of
       stream,  there  is  no  end-of-stream condition and therefore care should be taken to properly assert the
       stream content. This last remark is especially true for the readln method. The method  will  return  when
       the  end-of-stream  marker is reached, even if a newline byte has not been read. With an udp socket, such
       behavior will not happen.

       Buffer read mode
       The read method with an integer argument, returns a buffer with at least the number of bytes specified as
       an  argument. This method is particularly useful when the contents has a precise size. The method returns
       a Buffer object which can later be used to read, or transform  bytes.  Multi-byte  conversion  to  number
       should  use  such  approach.  The read method does not necessarily returns the number of requested bytes.
       Once the buffer is returned, the length method can be used to  check  the  buffer  size.  Note  also  the
       existence of the to-string method which returns a string representation of the buffer.

       # try to read 256 bytes
       const buf (is:read 256)
       # get the buffer size
       println (buf:length)
       # get a string representation
       println (buf:to-string)

       File stream
       The afnix-sio module provides two classes for file access. The InputFile class open a file for input. The
       OutputFile class opens a file for output. The InputFile class is derived from the InputStream base class.
       The  OutputFile  class is derived from the OutputStream class. By default an output file is created if it
       does not exist. If the file already exist, the file is truncated to 0. Another constructor for the output
       file  gives  more  control  about this behavior. It takes two boolean flags that defines the truncate and
       append mode.

       # load the module
       interp:library "afnix-sio"
       # create an input file by name
       const if (afnix:sio:InputFile "orig.txt")
       # create an output file by name
       const of (afnix:sio:OutputFile "copy.txt")

       Stream information
       Both InputFile and OutputFile supports the get-name method which returns the file name.

       println (if:get-name)
       println (of:get-name)

       Predicates are also available for these  classes.  The  input-file-p  returns  true  for  an  input  file
       object.The output-file-p returns true for an output file object.

       afnix:sio:input-stream-p  if
       afnix:sio:output-stream-p of
       afnix:sio:input-file-p    if
       afnix:sio:output-file-p   of

       Reading and writing
       The read method reads a byte on an input stream. The write method writes one or more literal arguments on
       the output stream. The writeln method writes one or more literal arguments followed by a newline byte  on
       the  output  stream.  The  newline  method write a newline byte on the output stream. The eos-p predicate
       returns true for an input stream, if the stream is at the end. The valid-p predicate returns true  if  an
       input stream is in a valid state. With these methods, copying a file is a simple operation.

       # load the module and open the files
       interp:library "afnix-sio"
       const if (afnix:sio:InputFile "orig.txt")
       const of (afnix:sio:OutputFile "copy.txt")
       # loop in the input file and write
       while (if:valid-p) (of:write (if:read))

       The  use of the readln method can be more effective. The example below is a simple cat program which take
       the file name an argument.

       # cat a file on the output terminal
       # usage: axi 0601.als file
       # get the io module
       interp:library "afnix-sio"
       # cat a file
       const cat (name) {
         const f (afnix:sio:InputFile name)
         while (f:valid-p) (println (f:readln))
         f:close
       }
       # get the file
       if (== 0 (interp:argv:length)) {
         errorln "usage: axi 0601.als file"
       } {
         cat (interp:argv:get 0)
       }

       Multiplexing
       I/O multiplexing is the ability to manipulate several streams at the same time and process one at a time.
       Although  the  use of threads reduce the needs for i/o multiplexing, there is still situations where they
       are needed. In other words, I/O multiplexing is identical to the valid-p predicate, except that it  works
       with several stream objects.

       Selector object
       I/O  multiplexing  is  accomplished  with  the  Selector class. The constructor takes 0 or several stream
       arguments. The class manages automatically to differentiate between InputStream stream  and  OutputStream
       streams.  Once  the  class  is  constructed,  it is possible to get the first stream ready for reading or
       writing or all of them. We assume in the following example that is and os are respectively an  input  and
       an output stream.

       # create a selector
       const slt (afnix:sio:Selector is)
       # at this stage the selector has one stream
       # the add method can add more streams
       slt:add os

       The  add  method  adds  a  new  stream  to  the  selector.  The  stream must be either an InputStream and
       OutputStream stream or an exception is raised. If the stream is both an input and an output  stream,  the
       preference  is  given  to  the  input  stream. If this preference is not acceptable, the input-add or the
       output-add methods might be preferable. The input-length method returns the number of  input  streams  in
       this selector. The output-length method returns the number of output streams in this selector. The input-
       get method returns the selector input stream by index. The output-get method returns the selector  output
       stream by index.

       Waiting for i/o event
       The  wait  and  wait-all  methods can be used to detect a status change in the selector. Without argument
       both methods will block indefinitely until one stream change. With  one  integer  argument,  both  method
       blocks  until  one  stream  change  or  the integer argument timeout expires. The timeout is expressed in
       milliseconds. Note that 0 indicates an immediate return. The wait method returns the first  stream  which
       is  ready  either  for reading or writing depending whether it is an input or output stream. The wait-all
       method returns a vector with all streams that have changed their status. The wait method returns  nil  if
       the no stream have changed. Similarly, the wait-all method returns an empty vector.

       # wait for a status change
       const is (slt:wait)
       # is is ready for reading - make sure it is an input one
       if (afnix:sio:input-stream-p is) (is:read)

       A call to the wait method will always returns the first input stream.

       Marking mode
       When used with several input streams in a multi-threaded context, the selector behavior can becomes quite
       complicated. For this reason, the selector can be configured to operate in marking mode.  In  such  mode,
       the  selector  can  be marked as ready by a thread independently of the bounded streams. This is a useful
       mechanism which can be used to cancel a select loop. The mark method is designed  to  mark  the  selector
       while the marked-p predicate returns true if the stream has been marked.

       Terminal streams
       Terminal  streams  are  another  kind  of  streams  available  in the standard i/o module. The InputTerm,
       OutputTerm and ErrorTerm classes are low level classes used to read or write  from  or  to  the  standard
       streams.  The  basic  methods  to  read or write are the same as the file streams. Reading from the input
       terminal is not a good idea, since the class does not provide any formatting capability. One  may  prefer
       to  use  the  Terminal class. The use of the output terminal or error terminal streams is convenient when
       the interpreter standard streams have been changed but one still need to print to the terminal.

       Terminal class
       The Terminal class combines an input stream and an output stream with  some  line  editing  capabilities.
       When the class is created, the constructed attempts to detect if the input and output streams are bounded
       to a terminal (i.e tty). If the line editing capabilities can be loaded (i.e  non  canonical  mode),  the
       terminal  is  initialized  for  line  editing.  Arrows, backspace, delete and other control sequences are
       available when using the read-line method. The standard methods like read or readln do not use  the  line
       editing  features.  When  using  a  terminal,  the prompt can be set to whatever the user wishes with the
       methods set-primary-prompt or set-secondary-prompt. A secondary prompt is displayed  when  the  read-line
       method is called with the boolean argument false.

       const term (Terminal)
       term:set-primary-prompt "demo:"
       const line (term:read-line)
       errorln line

       Using the error terminal
       The ErrorTerm class is the most frequently used class for printing data on the standard error stream. The
       reserved keywords error or errorln are available to  write  on  the  interpreter  error  stream.  If  the
       interpreter error stream has been changed, the use of the ErrorTerm will provide the facility required to
       print directly on the terminal. The cat program can be rewritten to do exactly this.

       # cat a file on the error terminal
       # get the io module
       interp:library "afnix-sio"
       # cat a file
       const cat (name es) {
         const f (afnix:sio:InputFile name)
         while (f:valid-p) (es:writeln (f:readln))
         f:close
       }

       Directory
       The Directory class provides a facility to manipulate directories. A directory object is  created  either
       by  name  or  without argument by considering the current working directory. Once the directory object is
       created, it is possible to retrieve its contents, create new directory or remove empty one.

       Reading a directory
       A Directory object is created either by name or without argument. With no argument, the current directory
       is  opened.  When  the  current  directory  is  opened,  its  full name is computed internally and can be
       retrieved with the get-name method.

       # print the current directory
       const pwd (afnix:sio:Directory)
       println   (pwd:get-name)

       Once the directory object is opened, it is possible to list its contents. The get-list method returns the
       full  contents  of  the directory object. The get-files method returns a list of files in this directory.
       The get-subdirs method returns a list of sub directories in this directory.

       # print a list of files
       const pwd (afnix:sio:Directory)
       const lsf (d:get-files)
       for (name) (lsf) (println name)

       Creating and removing directories
       The mkdir and rmdir methods can be used to create or remove a  directory.  Both  methods  take  a  string
       argument  and  construct a full path name from the directory name and the argument. This approach has the
       advantage of being file system independent. If the directory already exists, the mkdir methods  succeeds.
       The rmdir method requires the directory to be empty.

       const tmp (afnix:sio:Directory (
           afnix:sio:absolute-path "tmp"))
       const exp (tmp:mkdir "examples")
       const lsf (exp:get-files)
       println   (lsf:length)
       tmp:rmdir "examples"

       The  function  absolute-path  constructs  an  absolute path name from the argument list. If relative path
       needs to be constructed, the function relative-path might be used instead.

       Logtee
       The Logtee class is a message logger facility associated with an output stream. When a message  is  added
       to  the logger object, the message is also sent to the output stream, depending on the controlling flags.
       The name "logtee" comes from the contraction of "logger" and "tee". One particularity  of  the  class  is
       that without a stream, the class behaves like a regular logger.

       Creating a logger
       The  Logtee  default  constructor creates a standard logger object without an output stream. The instance
       can also be created by size or with an output  stream  or  both.  A  third  method  can  also  attach  an
       information string.

       # create a logger with the interpreter stream
       const log (Logtee (interp:get-output-stream))
       assert true (logger-p log)

       Adding messages
       The  process of adding messages is similar to the regular logger. The only difference is that the message
       is placed on the output stream if a control flag is set and the message level is less or equal the report
       level. In the other word, the control flag controls the message display -- the tee operation -- while the
       report level filters some of the messages.

       log:add 2 "a level 2 message"

       The set-tee method sets the control flag. The set-report-level method sets the report  level.  Note  that
       the set-report-level and its associated get-report-level method is part of the base Logger class.

       Path name
       The  Pathname  class is a base class designed to ease the manipulation of system path. It is particularly
       useful when it come to manipulate directory component.

       Creating a path name
       A path name is created either by file name or by file and directory name. In the  first  case,  only  the
       file name is used. In the second case, the full path name is characterized.

       # create a new path name
       const path (afnix:sio:Pathname "axi")

       Adding a directory path
       The best way to add a directory path is to use the absolute-path or the relative-path functions.

       # adding a directory path
       const name (afnix:sio:absolute-path "usr" "bin")
       path:set-directory-name name

       Getting the path information
       The  path  information can be obtained individually or globally. The get-file-name and get-directory-name
       methods return respectively the file and directory name. The get-root method returns the  root  component
       of the directory name. The get-full method returns the full path name.

STANDARD INPUT/OUTPUT REFERENCE

       Transcoder
       The Transcoder class is a codeset transcoder class. The class is responsible to map a byte character in a
       given codeset into its associated Unicode character. It should be noted that not all  characters  can  be
       transcoded.

       Predicate

              transcoder-p

       Inheritance

              Object

       Constants

              DEFAULT
              The  DEFAULT  constant is used by the set-transcoding-mode method to specify the class transcoding
              mode. In default mode, each character is not transcoded. This mode is the identity mode.

              I8859-01
              The I8859-01 constant is used by the set-transcoding-mode method to specify the class  transcoding
              mode that corresponds to the ISO-8859-6 codeset.

              I8859-02
              The  I8859-02 constant is used by the set-transcoding-mode method to specify the class transcoding
              mode that corresponds to the ISO-8859-2 codeset.

              I8859-03
              The I8859-03 constant is used by the set-transcoding-mode method to specify the class  transcoding
              mode that corresponds to the ISO-8859-3 codeset.

              I8859-04
              The  I8859-04 constant is used by the set-transcoding-mode method to specify the class transcoding
              mode that corresponds to the ISO-8859-4 codeset.

              I8859-05
              The I8859-05 constant is used by the set-transcoding-mode method to specify the class  transcoding
              mode that corresponds to the ISO-8859-5 codeset.

              I8859-06
              The  I8859-06 constant is used by the set-transcoding-mode method to specify the class transcoding
              mode that corresponds to the ISO-8859-6 codeset.

              I8859-07
              The I8859-07 constant is used by the set-transcoding-mode method to specify the class  transcoding
              mode that corresponds to the ISO-8859-7 codeset.

              I8859-08
              The  I8859-08 constant is used by the set-transcoding-mode method to specify the class transcoding
              mode that corresponds to the ISO-8859-8 codeset.

              I8859-09
              The I8859-09 constant is used by the set-transcoding-mode method to specify the class  transcoding
              mode that corresponds to the ISO-8859-9 codeset.

              I8859-10
              The  I8859-10 constant is used by the set-transcoding-mode method to specify the class transcoding
              mode that corresponds to the ISO-8859-10 codeset.

              I8859-11
              The I8859-11 constant is used by the set-transcoding-mode method to specify the class  transcoding
              mode that corresponds to the ISO-8859-11 codeset.

              I8859-13
              The  I8859-13 constant is used by the set-transcoding-mode method to specify the class transcoding
              mode that corresponds to the ISO-8859-13 codeset.

              I8859-14
              The I8859-14 constant is used by the set-transcoding-mode method to specify the class  transcoding
              mode that corresponds to the ISO-8859-14 codeset.

              I8859-15
              The  I8859-15 constant is used by the set-transcoding-mode method to specify the class transcoding
              mode that corresponds to the ISO-8859-15 codeset.

              I8859-16
              The I8859-16 constant is used by the set-transcoding-mode method to specify the class  transcoding
              mode that corresponds to the ISO-8859-16 codeset.

       Constructors

              Transcoder (none)
              The Transcoder constructor creates a default transcoder that operates in default mode by using the
              identity function.

              Transcoder (constant)
              The Transcoder constructor creates a transcoder with the argument mode.

       Methods

              set-transcoding-mode -> none (constant)
              The set-transcoding-mode method sets the class transcoding mode.

              get-transcoding-mode -> constant (none)
              The get-transcoding-mode method returns the class transcoding mode.

              valid-p -> Byte|Character (Boolean)
              The valid-p predicate returns true if character can be transcoded. If the argument is a byte,  the
              method  returns true if the byte can be transcoded to a character. If the argument is a character,
              the method returns true if the character can be transcoded to a byte.

              encode -> Byte (Character)
              The encode method encodes a byte into  a  character.  If  the  character  cannot  be  encoded,  an
              exception is raised.

              decode -> Character (Byte)
              The  decode  method  decodes  a  character  into  a  byte.  If the character cannot be decoded, an
              exception is raised.

       Stream
       The Stream class is a base class for the standard streams. The class is automatically  constructed  by  a
       derived class and provides the common methods for all streams.

       Predicate

              stream-p

       Inheritance

              Transcoder

       Constants

              BYTE
              The BYTE constant is used by the set-coding-mode method to specify the stream coding mode. In byte
              mode, each character is assumed to be coded with one byte. This value affects the getu  and  write
              methods

              UTF-8
              The  UTF-8  constant  is  used by the set-coding-mode method to specify the stream coding mode. In
              UTF-8 mode, each character is assumed to be coded in the UTF-8 representation. This value  affects
              the getu and write methods

       Methods

              set-encoding-mode -> none (constant|String)
              The  set-encoding-mode  method sets the stream coding mode that affects how characters are read or
              written. In the enumeration form, the method only sets the stream coding mode which is either byte
              or  UTF-8  mode.  In the string mode, the method sets the stream encoding mode and the transcoding
              mode.

              get-encoding-mode -> constant (none)
              The get-coding-mode method returns the stream coding mode which affects how characters are read or
              written.

       InputStream
       The InputStream class is a base class for the standard i/o module. The class is automatically constructed
       by a derived class and provides the common methods for all input streams. The input stream is  associated
       with  a timeout value which is used for read operation. By default, timeout is infinite, meaning that any
       read without data will be a blocking one.

       Predicate

              input-stream-p

       Inheritance

              Stream

       Methods

              flush -> none|Character (none)
              The flush method the input stream buffer. In the first form, without argument,  the  input  stream
              buffer  is  entirely  flushed.  In  the  second form, the input stream buffer is flushed until the
              character argument is found.

              get-timeout -> Integer (none)
              The get-timeout method returns the input stream timeout. A negative value is a blocking timeout.

              set-timeout -> none (Integer)
              The set-timeout method sets the input stream timeout. A negative  value  is  a  blocking  timeout.
              Changing the stream timeout does not cancel any pending read operation.

              read -> Byte (none)
              The  read  method  returns  the  next byte available from the input stream. If the stream has been
              closed or consumed, the end-of-stream byte is returned.

              read -> Buffer (Integer)
              The read method returns a buffer object with at most the number of bytes specified as an argument.
              The buffer length method should be used to check how many bytes have been placed in the buffer.

              readln -> String (none)
              The  readln  method  returns the next line available from the input stream. If the stream has been
              closed or consumed, the end-of-stream character is returned.

              getu -> Character (none)
              The getu method returns the next available Unicode character from the input stream. If the  stream
              has  been closed or consumed, the end-of-stream character is returned. During the read process, if
              the character decoding operation fails, an exception is raised.

              valid-p -> Boolean (none|Integer)
              The valid-p method returns true if the input stream is in a valid state. By valid state,  we  mean
              that  the  input  stream  can return a byte with a call to the read method. With one argument, the
              method timeout after the specified time in milliseconds.  If  the  timeout  is  null,  the  method
              returns immediately. With -1, the method blocks indefinitely if no byte is available.

              eos-p -> Boolean (none)
              The eos-p predicate returns true if the input stream has been closed or all bytes consumed.

              pushback -> Integer (Byte|Character|String)
              The  pushback  method  push-back  a  byte,  an  Unicode character or a string in the input stream.
              Subsequent calls to read will return the last pushed bytes. Pushing a string is equivalent to push
              each encoded bytes of the string. The method returns the number of bytes pushed back.

              consume -> Integer (none)
              The consume method consumes an input stream and places the read characters into the stream buffer.
              The method returns the number of consumed characters. This method is generally used in conjonction
              with the to-string method.

              get-buffer-length -> Integer (none)
              The get-buffer-length method returns the length of the push-back buffer.

              to-string -> String (none)
              The to-string method returns a string representation of the input stream buffer.

       InputFile
       The InputFile class provide the facility for an input file stream. An input file instance is created with
       a file name. If the file does not exist or cannot be opened, an exception is raised. The InputFile  class
       is derived from the InputStream class.

       Predicate

              input-file-p

       Inheritance

              InputStreamNameable

       Constructors

              InputFile (String)
              The  InputFile  constructor  create  an  input  file  by  name.  If the file cannot be created, an
              exception is raised. The first argument is the file name to open.

              InputFile (String String)
              The InputFile constructor create an input file by name and encoding mode. If the  file  cannot  be
              created,  an  exception is raised. The first argument is the file name to open.The second argument
              is the encoding mode to use.

       Methods

              close -> Boolean (none)
              The close method close the input file and returns true on success, false  otherwise.  In  case  of
              success, multiple calls return true.

              lseek -> none (Integer)
              The  lseek  set the input file position to the integer argument. Note that the push-back buffer is
              reset after this call.

              length -> Integer (none)
              The length method returns the length of the input file. The length is expressed in bytes.

              get-modification-time -> Integer (none)
              The get-modification-time method returns the modification time of the file. The returned  argument
              is suitable for the Time and Date system classes.

       InputMapped
       The  InputMapped  class  is  an  input stream class that provides the facility for reading a mapped input
       stream. The input stream is mapped at construction given a file name,  a  size  and  a  file  offset.  An
       anonymous mapped input stream can also be designed with a buffer object. Finally, without any information
       an always valid null input stream is constructed.

       Predicate

              input-mapped-p

       Inheritance

              InputStream

       Constructors

              InputMapped (none)
              The InputMapped constructor create a null input stream. This  stream  acts  as  a  null  character
              generator.

              InputMapped (String|Buffer)
              The  InputMapped  constructor create a mapped input stream by name or buffer. In the first form, a
              string is used as file name to be mapped an input stream. In the second form, a buffer  is  mapped
              as an input stream.

              InputMapped (String Integer Integer)
              The  InputMapped  constructor  create  a  mapped input stream by name, size and offset. The string
              argument is the file name to map. The second argument  is  the  desired  mapped  size.  The  third
              argument is the offset inside the file before mapping it.

       Methods

              lseek -> none (Integer)
              The  lseek  set  the  input  mapped file position to the integer argument. Note that the push-back
              buffer is reset after this call.

              length -> Integer (none)
              The length method returns the length of the input mapped file. The length is expressed in bytes.

       InputString
       The InputString class provide the facility for an input string stream. The class is  initialized  or  set
       with  a  string and then behaves like a stream. This class is very useful to handle generic stream method
       without knowing what kind of stream is behind it.

       Predicate

              input-string-p

       Inheritance

              InputStream

       Constructors

              InputString (none)
              The InputString constructor creates an empty input string.

              InputString (String)
              The InputString constructor creates an input string by value.

       Methods

              get -> Byte (none)
              The get method returns the next available byte from the input stream but do not remove it.

              set -> none (String)
              The set method sets the input string by first resetting the push-back buffer and then initializing
              the input string with the argument value.

       InputTerm
       The InputTerm class provide the facility for an input terminal stream. The input terminal reads byte from
       the standard input stream. No line editing facility is provided with this  class  This  is  a  low  level
       class, and normally, the Terminal class should be used instead.

       Predicate

              input-term-p

       Inheritance

              InputStreamOutputStream

       Constructors

              InputTerm (none)
              The InputTerm constructor creates a default input terminal.

       Methods

              set-ignore-eos -> none (Boolean)
              The  set-ignore-eos  method set the input terminal end-of-stream ignore flag. When the flag is on,
              any character that match a ctrl-d is changed to the end-of-stream mapped character returned  by  a
              read. This method is useful to prevent a reader to exit when the ctrl-d byte is generated.

              set-mapped-eos -> none (Byte)
              The  set-mapped-eos  method  set the input terminal end-of-stream mapped character. By default the
              character is set to end-of-line. This method should be used in conjunction with the set-ignore-eos
              method.

       OutputStream
       The  OutputStream  class  is  a  base  class  for  the  standard  i/o  module. The class is automatically
       constructed by a derived class and provide the common methods for all output streams.

       Predicate

              output-stream-p

       Inheritance

              Stream

       Methods

              write -> Integer (Literal+)
              The write method write one or more literal arguments on the output stream. This method returns the
              number of characters written.

              writeln -> none (Literal+)
              The  writeln  method  write  one  or  more literal argument to the output stream and finish with a
              newline. This method return nil.

              errorln -> none (Literal+)
              The errorln method write one or more literal argument to the associated output  error  stream  and
              finish  with  a  newline. Most of the time, the output stream and error stream are the same except
              for an output terminal.

              newline -> none (none)
              The newline method writes a new line byte to the output stream. The method returns nil.

              write-soh -> none (none)
              The write-soh method writes a start-of-heading character to the output stream.

              write-stx -> none (none)
              The write-stx method writes a start-of-transmission character to the output stream.

              write-etx -> none (none)
              The write-etx method writes an end-of-transmission character to the output stream.

              write-eos -> none (none)
              The write-eos method writes an end-of-stream character to the output stream.

       OutputFile
       The OutputFile class provide the facility for an output file stream. An output file instance  is  created
       with  a file name. If the file does not exist, it is created. If the file cannot be created, an exception
       is raised. Once the file is created, it is possible to write literals. The  class  is  derived  from  the
       OutputStream class. By default an output file is created if it does not exist. If the file already exist,
       the file is truncated to 0. Another constructor for  the  output  file  gives  more  control  about  this
       behavior.  It  takes  two  boolean  flags  that  defines  the truncate and append mode. The t-flag is the
       truncate flag. The a-flag is the append flag.

       Predicate

              output-file-p

       Inheritance

              OutputStreamNameable

       Constructors

              OutputFile (String)
              The OutputFile constructor create an output file by name.  If  the  file  cannot  be  created,  an
              exception is raised. The first argument is the file name to create.

              OutputFile (String String)
              The  OutputFile constructor create an output file by name and encoding mode. If the file cannot be
              created, an exception is raised. The first argument  is  the  file  name  to  create.  The  second
              argument is the encoding mode to use.

              OutputFile (String Boolean Boolean)
              The  OutputFile  constructor  create  an  output  file  by name. If the file cannot be created, an
              exception is raised. The first argument is the file name to create. The  second  argument  is  the
              truncate  flag.  If the file already exists and the truncate flag is set, the file is truncated to
              0. The third argument is the append mode. If set to true, the file is open in append mode.

       Methods

              close -> Boolean (none)
              The close method closes the output file and returns true on success, false otherwise. In  case  of
              success, multiple calls returns true.

       OutputString
       The OutputString class provide the facility for an output string stream. The class is initially empty and
       acts as a buffer which accumulate the write method bytes. The to-string method can be  used  to  retrieve
       the buffer content.

       Predicate

              output-string-p

       Inheritance

              OutputStream

       Constructors

              OutputString (none)
              The OutputString constructor creates a default output string.

              OutputString (String)
              The  OutputString  constructor  creates  an  output  string  by value. The output string stream is
              initialized with the string value.

       Methods

              flush -> none (none)
              The flush method flushes the output stream by resetting the stream buffer.

              length -> Integer (none)
              The length method returns the length of the output string buffer.

              to-string -> String (none)
              The to-string method returns a string representation of the output string buffer.

       OutputBuffer
       The OutputBuffer class provide the facility for an output byte stream. The class is initially  empty  and
       acts  as  a  buffer which accumulate the write method bytes. The to-string method can be used to retrieve
       the buffer content as a string. The format method can be used to retrieve the buffer content as an  octet
       string. content.

       Predicate

              output-buffer-p

       Inheritance

              OutputStream

       Constructors

              OutputBuffer (none)
              The OutputBuffer constructor creates a default output buffer.

              OutputBuffer (String)
              The  OutputBuffer  constructor  creates  an  output  buffer  by value. The output buffer stream is
              initialized with the string value.

       Methods

              flush -> none (none)
              The flush method flushes the output stream by resetting the stream buffer.

              length -> Integer (none)
              The length method returns the length of the output buffer.

              to-string -> String (none)
              The to-string method returns a string representation of the output buffer.

              format -> String (none)
              The format method returns an octet string representation of the output buffer.

       OutputTerm
       The OutputTerm class provide the facility for an output terminal. The output terminal is defined  as  the
       standard  output  stream.  If  the  standard  error  stream needs to be used, the ErrorTerm class is more
       appropriate.

       Predicate

              output-term-p

       Inheritance

              OutputStream

       Constructors

              OutputTerm (none)
              The OutputTerm constructor creates a default output terminal

              ErrorTerm (none)
              The ErrorTerm constructor creates a default error terminal

       Terminal
       The Terminal class provides the facility for an i/o terminal with  line  editing  capability.  The  class
       combines the InputTerm and OutputTerm methods.

       Predicate

              terminal-p

       Inheritance

              InputTermOutputTerm

       Constructors

              Terminal (none)
              The  Terminal  constructor  creates a default terminal which combines an input and output terminal
              with line editing capabilities.

       Methods

              set-primary-prompt -> none (String)
              The set-primary-prompt method sets the terminal primary prompt which is used  when  the  read-line
              method is called.

              set-secondary-prompt -> none (String)
              The  set-secondary-prompt  method  sets the terminal secondary prompt which is used when the read-
              line method is called.

              get-primary-prompt -> String (none)
              The get-primary-prompt method returns the terminal primary prompt.

              get-secondary -> String (none)
              The get-secondary-prompt method returns the terminal secondary prompt.

       Intercom
       The Intercom class is the interpreter communication class. The  class  operates  with  two  streams.  One
       output  stream  is  used  to send serialized data while the input stream is used to deserialize data. The
       send method can be used to send the data, while the recv can be used to receive them.

       Predicate

              intercom-p

       Inheritance

              Object

       Constructors

              Intercom (none)
              The Intercom constructor creates a default interpreter communication object. There  is  no  stream
              attached to it.

              Intercom (InputStream|OutputStream)
              The  Intercom  constructor  creates an interpreter communication object with an input or an output
              stream. In the first form, the input stream object is used by the recv method to read data object.
              In the second form, the output stream object is used by the send method to send data object.

              Intercom (InputStream OutputStream)
              The  Intercom  constructor creates an interpreter communication object with an input and an output
              stream.

       Methods

              send -> none (Object)
              The send method serialize the object argument with the help of the  output  stream  bound  to  the
              interpreter communication object. If there is no output stream, nothing is sent.

              recv -> Object (none)
              The  recv  method deserialize an object with the help of the input stream bound to the interpreter
              communication object. If there is no output stream, nil is returned.

              request -> Object (Object)
              The request method perform an atomic send receive operation.

              set-input-stream -> none (InputStream)
              The set-input-stream method binds an input stream to the interpreter communication object.

              get-input-stream -> InputStream (none)
              The get-input-stream method returns the  input  stream  bound  to  the  interpreter  communication
              object.

              set-output-stream -> none (OutputStream)
              The set-output-stream method binds an output stream to the interpreter communication object.

              get-output-stream -> OutputStream (none)
              The  get-output-stream  method  returns  the  output stream bound to the interpreter communication
              object.

       InputOutput
       The InputOutput class implements an input-output stream with a buffer which holds  character  during  the
       processing  of  transit  between  the  output stream to the input stream. The theory of operation goes as
       follow. The internal buffer is filled with characters with the help of the output stream. The  characters
       are consumed from the buffer with the help of the input stream (read method). If the buffer becomes empty
       the eos-p predicate returns true, the valid-p predicate false and the read method  will  return  the  eos
       character.  The  InputOutput buffer can also be initialized with a buffer. This provides a nice mechanism
       to use a buffer like an input stream. The i/o operations implemented by this class are non-blocking. As a
       consequence,  it  is  not  possible  to  suspend  a  thread  with this class and have it awaken when some
       characters are available in the input stream.

       Predicate

              input-output-p

       Inheritance

              InputStreamOutputStream

       Constructors

              InputOutput (none)
              The InputOutput constructor creates a default input/output stream.

              InputOutput (String)
              The InputOutput constructor creates an input/output stream initialized with the  string  argument.
              The string argument is used to fill the string buffer.

       Methods

              get -> Byte (none)
              The get method returns the next available byte from the input stream but do not remove it.

              set -> none (String)
              The set method sets the input string by first resetting the push-back buffer and then initializing
              the input string with the argument value.

       Selector
       The Selector class provides some facilities to perform i/o  multiplexing.  The  constructor  takes  0  or
       several  stream arguments.The class manages automatically the differentiation between the InputStream and
       the OutputStream objects. Once the class is constructed, it is possible to get the first stream ready for
       reading or writing or all of them. It is also possible to add more steams after construction with the add
       method. When a call to the wait method succeeds, the method returns the first available  stream.  If  the
       waitall  method  is  called,  the  method  returns  a  vector  with all ready steams. The selector can be
       configured to operate in marking mode. In such mode, the selector can be marked  as  ready  by  a  thread
       independently  of  the  bounded  streams. This is a useful mechanism which can be used to cancel a select
       loop. The mark method is designed to mark the selector while the marked-p predicate returns true  if  the
       stream has been marked.

       Predicate

              selector

       Inheritance

              Object

       Constructors

              Selector (none)
              The Selector constructor creates a default stream selector.

              Selector ([Boolean] [InputStream|OutputStream]*)
              The  Selector  constructor creates a stream selector with 0 or more stream arguments. If the first
              argument is a boolean, the selector is constructed marked mode.

       Methods

              add -> none (InputStream|OutputStream)
              The add method adds an input or output stream to the selector. If the stream is both an input  and
              an  output  stream,  the  preference  is  given  to  the  input  stream. If this preference is not
              acceptable, the input-add or the output-add methods might be preferable.

              input-add -> none (InputStream)
              The input-add method adds an input stream to the selector.

              output-add -> none (OutputStream)
              The output-add method adds an output stream to the selector.

              wait -> Stream (none|Integer)
              The wait method waits for a status change in the selector and returns the first  stream  that  has
              change  status. With one argument, the selector time-out after the specified time in milliseconds.
              Note that at the time of the return, several streams may have changed status.

              wait-all -> Vector (none|Integer)
              The wait method waits for a status change in the selector and returns all streams that has  change
              status  in  a  vector object. With one argument, the selector time-out after the specified time in
              milliseconds. If the selector has timed-out, the vector is empty.

              input-get -> InputStream (Integer)
              The input-get method returns the input streams in the selector by index. If the index  is  out  of
              bound, an exception is raised.

              output-get -> OutputStream (Integer)
              The  output-get method returns the output streams in the selector by index. If the index is out of
              bound, an exception is raised.

              input-length -> Integer (none)
              The input-length method returns the number of input streams in the selector.

              output-length -> Integer (none)
              The output-length method returns the number of output streams in the selector.

              mark -> none (none)
              The mark method marks a selector object.

              marked-p -> Boolean (none)
              The marked-p predicate returns true if the selector has been marked.

       Logtee
       The Logtee class provides the facility of a logger object  associated  with  an  output  stream.  When  a
       message  is  added, the message is written to the output stream depending on an internal flag. By default
       the tee mode is false and can be activated with the set-tee method.

       Predicate

              logtee-p

       Inheritance

              Logger

       Constructors

              Logtee (none)
              The Logtee constructor creates a default logger without an output stream.

              Logtee (Integer)
              The Logtee constructor creates a logger with a specific size without an output stream. terminal

              Logtee (OutputStream)
              The Logtee constructor creates a logger with an  output  stream.  The  object  is  initialized  to
              operate in write mode.

              Logtee (Integer OutputStream)
              The  Logtee  constructor  creates  a  logger with a specific size with an output stream. The first
              argument is the logger size. The second argument is the output stream.

              Logtee (Integer String OutputStream)
              The Logtee constructor creates a logger with a specific size, an information string and an  output
              stream.  The  first  argument  is  the logger size. The second argument is information string. The
              third argument is the output stream.

       Methods

              set-tee-stream -> none (OutputStream)
              The set-tee-stream method sets the tee output stream. This stream is  different  from  the  logger
              output stream

              get-tee-stream -> OutputStream (none)
              The get-tee-stream method returns the object output stream.

              set-tee -> none (Boolean)
              The  set-tee  method  sets the object tee flag. When the flag is true, the logger writes the added
              message on the output stream.

              get-tee -> Boolean (none)
              The get-tee method returns the object tee flag. When the flag is true, the logger writes the added
              message on the output stream.

       Pathname
       The  Pathname  class  is  a base class designed to manipulate system i/o paths. The class operates with a
       directory name and a file name. Both names are kept separated to ease the  path  manipulation.  The  path
       components  can  be  extracted  individually.  However,  it shall be noted that the first component has a
       special treatment to process the root directory name.

       Predicate

              pathname-p

       Inheritance

              Object

       Constructors

              Pathname (none)
              The Pathname constructor creates a default path name without file and directory names.

              Pathname (String)
              The Pathname constructor creates a path name with a file name. The first string  argument  is  the
              file name.

              Pathname (String String)
              The  Pathname  constructor  creates  a  pathname  with a file and directory name. The first string
              argument is the file name. The second string argument is the directory name.

       Methods

              reset -> none (none)
              The reset method reset the path name by removing all path and file information.

              dir-p -> Boolean (none)
              The dir-p predicate returns true if the path is a directory.

              file-p -> Boolean (none)
              The file-p predicate returns true if the path is a file.

              set-file-name -> none (String)
              The set-file-name method set the path name file name. The string argument is the file name.

              get-file-name -> String (none)
              The get-file-name method returns the path name file name.

              add-directory-name -> none (String)
              The add-directory-name method add the directory name to the directory path component.  The  string
              argument is the directory name.

              set-directory-name -> none (String)
              The  set-directory-name  method  set  the  directory  name  file  name. The string argument is the
              directory name.

              get-directory-name -> String (none)
              The get-directory-name method returns the path name directory name.

              length -> Integer (none)
              The length method returns the number of directory path elements.

              get-path -> String (Integer)
              The get-path method returns a directory path element by index.

              get-root -> String (none)
              The get-root method returns the root component of a directory name.

              get-full -> String (none)
              The get-full method returns the full path name by combining the directory name with the file name.

              add-path -> none (String)
              The add-path method add a new path component by  name.  The  path  is  separated  into  individual
              component  and  added to the directory path unless it is a root path. If the file name is set, the
              file name is added as a directory component. If the path is a  root  path,  a  new  path  name  is
              rebuilt. This last case is equivalent to a call to set-file-name.

              normalize -> none (none)
              The  normalize  method  rebuild  the path name by determining the full path nature if possible. In
              case of success, the path structure reflects the actual path type.

       Pathlist
       The Pathlist class is a base class designed to ease the manipulation of a file  search  path.  The  class
       acts  like  a  list  of search paths and various facilities are provided to find a valid path for a given
       name. The path list can be manipulated like any other list.

       Predicate

              pathlist-p

       Inheritance

              Object

       Constructors

              Pathlist (none)
              The Pathlist constructor creates a default path list.

              Pathlist (Boolean|String)
              The Pathlist constructor creates a path list with a local search flag  or  with  an  initial  path
              component.  In  the  first  form, a boolean argument controls the local search flag. In the second
              for, a string argument is used as the initial path component.

       Methods

              reset -> none (none)
              The reset method resets the path list by clearing the local search  flag  and  removing  all  path
              components.

              local-p -> Boolean (none)
              The local-p predicate returns true if the local search flag is set.

              set-local-search -> none (Boolean)
              The set-local-search method sets the local search flag.

              length -> Integer (none)
              The length method returns the number of directory path elements.

              get-path -> String (Integer)
              The get-path method returns a directory path element by index.

              add-path -> none (String)
              The add-path method add a new path component by name. The string argument is the name to add.

              file-p -> Boolean (String)
              The  file-p  predicate returns true if the file name argument can be resolved. If the local search
              flag is set, the local directory is check first.

              resolve -> String (String)
              The resolve method returns a string representation of the resolved file path. If the local  search
              flag is set and the file name is found locally, the initial name argument is returned.

       Functions

              dir-p -> Boolean (String)
              The dir-p function returns true if the argument name is a directory name, false otherwise.

              file-p -> Boolean (String)
              The file-p function returns true if the argument name is a regular file name, false otherwise.

              tmp-name -> String (String?)
              The  tmp-name  function  returns  a  name  suitable  for the use as a temporary file name. Without
              argument, a default prefix is used to build the name. An optional string prefix  can  control  the
              original name.

              tmp-path -> String (String?)
              The  tmp-path  function  returns  a  path  suitable  for the use as a temporary file name. Without
              argument, a default prefix is used to build the path. An optional string prefix  can  control  the
              original name.

              absolute-path -> String (String+)
              The  absolute-path function returns an absolute path name from an argument list. Without argument,
              the command returns the root directory name. With one or several argument, the  absolute  path  is
              computed from the root directory.

              relative-path -> String (String+)
              The  relative-path function returns a relative path name from an argument list. With one argument,
              the function returns it. With two or more arguments, the relative path is computed by joining each
              argument with the previous one.

              rmfile -> none (String+)
              The  rmfile function removes one or several files specified as the arguments. If one file fails to
              be removed, an exception is raised.

              mkdir -> none (String+)
              The mkdir function creates one or several directories specified as the arguments. If one directory
              fails to be created, an exception is raised.

              mhdir -> none (String+)
              The  mhdir  function creates hierarchically one or several directories specified as the arguments.
              If one directory fails to be created, an exception is raised.

              rmdir -> none (String+)
              The rmdir function removes one or several directories specified as the arguments. If one directory
              fails to be removed, an exception is raised.

              get-base-name -> String (String)
              The  get-base-name  function returns the base name from a path. The base name can be either a file
              name or a directory name. By definition, a path is made of a base path and a base name.

              get-base-path -> String (String)
              The get-base-path function returns the base path from a path. The base path is a  directory  name.
              By definition, a path is made of a base path and a base name.

              get-extension -> String (String)
              The get-extension function returns the extension from a path.

              remove-extension -> String (String)
              The  remove-extension function returns the extension from a path. In order to get a base file name
              from a path, the get-base-name function must be called first.

       Directory
       The Directory class provides some facilities to access a directory. By default,  a  directory  object  is
       constructed  to  represent  the  current directory. With one argument, the object is constructed from the
       directory name. Once the object is constructed, it is possible to retrieve its content.

       Predicate

              directory-p

       Inheritance

              Object

       Constructors

              Directory (none)
              The Directory constructor creates a directory object those location is the current  directory.  If
              the directory cannot be opened, an exception is raised.

              Directory (String)
              The Directory constructor create a directory object by name. If the directory cannot be opened, an
              exception is raised. The first argument is the directory name to open.

       Methods

              mkdir -> Directory (String)
              The mkdir method creates a new directory in the current one.  The  full  path  is  constructed  by
              taking  the  directory  name  and  adding  the argument. Once the directory is created, the method
              returns a directory object of the newly constructed directory.  An  exception  is  thrown  if  the
              directory cannot be created.

              rmdir -> none (String)
              The  rmdir method removes an empty directory. The full path is constructed by taking the directory
              name and adding the argument. An exception is thrown if the directory cannot be removed.

              rmfile -> none (String)
              The rmfile method removes a file in the current directory. The full path is constructed by  taking
              the directory name and adding the argument. An exception is thrown if the file cannot be removed.

              get-name -> String (none)
              The  get-name  method returns the directory name. If the default directory was created, the method
              returns the full directory path.

              get-list -> List (none)
              The get-list method returns the directory contents. The method returns a list of strings. The list
              contains  all  valid names at the time of the call, including the current directory and the parent
              directory.

              get-files -> List (none)
              The get-files method returns the directory contents. The method  returns  a  list  of  strings  of
              files. The list contains all valid names at the time of the call.

              get-subdirs -> List (none)
              The  get-subdirs  method returns the sub directories. The method returns a list of strings of sub-
              directories. The list contains all valid names at the time of  the  call,  including  the  current
              directory and the parent directory.

              next-name -> String (none)
              The  next-name  method  returns  the next available name from the directory stream. This method is
              useful when operating with a large number of elements.

              next-path -> String (none)
              The next-path method returns the next available path name from the directory stream.  This  method
              is useful when operating with a large number of elements.

              next-file-name -> String (none)
              The  next-file-name  method  returns  the next available file name from the directory stream. This
              method is useful when operating with a large number of elements.

              next-file-path -> String (none)
              The next-file-path method returns the next available file path name  from  the  directory  stream.
              This method is useful when operating with a large number of elements.

              next-dir-name -> String (none)
              The next-dir-name method returns the next available directory name from the directory stream. This
              method is useful when operating with a large number of elements.

              next-dir-path -> String (none)
              The next-dir-path method returns the next available directory path name from the directory stream.
              This method is useful when operating with a large number of elements.

       Logtee
       The  Logtee  class is a message logger facility associated with an output stream. When a message is added
       to the logger object, the message is also sent to the output stream, depending on the controlling  flags.
       The  name  "logtee"  comes  from the contraction of "logger" and "tee". One particularity of the class is
       that without a stream, the class behaves like a regular logger.

       Predicate

              logtee-p

       Inheritance

              Logger

       Constructors

              Logtee (none)
              The Logtee constructor creates a default logger without an output stream

              Logtee (Integer)
              The Logtee constructor creates a logger object with a specific size without an output stream.

              Logtee (Output)
              The Logtee constructor creates a logger object with an output stream.

              Logtee (Integer Output)
              The Logtee constructor creates a logger object with a specific size  and  an  output  stream.  The
              first argument is the logger window size. The second argument is the output stream.

              Logtee (Integer String Output)
              The  Logtee constructor creates a logger object with a specific size, an information string and an
              output stream. The first argument is the logger window size. The second  argument  is  the  logger
              information string. The third argument is the output stream.

       Methods

              set-output-stream -> none (Output)
              The set-output-stream method attaches the output stream to the logtee object.

              get-output-stream -> Output (none)
              The get-output-stream method returns the logtee output stream.

              set-tee -> none (Boolean)
              The  set-tee method sets the logtee control flag. The control flag controls the message display to
              the output stream.

              get-tee -> Boolean (none)
              The get-tee method returns the logtee output stream.

       NamedFifo
       The NameFifo class is a string vector designed to operate as a stream fifo object. The class provides the
       facility  to read or write the fifo content from a stream. The stream can be created by name for writing,
       in which case the named fifo operates as a backup object.

       Predicate

              named-fifo-p

       Inheritance

              StrvecNameable

       Constructors

              NamedFifo (none)
              The NamedFifo constructor creates a default named fifo without a backing name. In  this  case  the
              fifo cannot be read or written by stream.

              NamedFifo (String)
              The  NamedFifo  constructor  creates  a  named  fifo  by name. The name is used as a file name for
              reading or writing the fifo.

              NamedFifo (String Boolean)
              The NamedFifo constructor creates a named fifo by name. The name  is  used  as  a  file  name  for
              reading or writing the fifo.If the boolean argument is true, the fifo is read.

       Methods

              read -> none (none)
              The read method reads the fifo file name and fill the fifo.

              write -> none (none)
              The write method writes the fifo contents to the fifo file name.

              set-name -> none (String)
              The set-name method sets the fifo file name.

       FileInfo
       The  FileInfo is a file information class that holds the primary information related to a file, such like
       its size or its modification time. The file information is set at construction but can  be  updated  with
       the help of the update method.

       Predicate

              file-info-p

       Inheritance

              Nameable

       Constructors

              (String)
              The  FileInfo constructor creates a file information by name. The string argument is the file name
              to query.

       Methods

              length -> Integer (none)
              The length method returns the file size information.

              get-modification-time -> Integer (none)
              The get-modification-time method returns the file modification time. The time can be  used  as  an
              argument to the Time or Date object.

              update -> none (none)
              The update method the file information data.