A character output stream can be created by defining a class that includes fundamental-character-output-stream and defining methods for the following generic functions.
stream-write-char [Generic Function]
Arguments: stream character
Summary: Writes character to stream , and returns character as its value. Every subclass of fundamental-character-output-stream must have a method defined for this function.
stream-line-column [Generic Function]
Summary: This function returns the column number where the next character will be written on
if that is not meaningful. The first column on a line is numbered 0. This function is used in the implementation of
directive. Every character output stream class must define a method for this, although it is permissible for it to always return
stream-start-line-p [Generic Function]
Summary: Returns t if stream is positioned at the beginning of a line; otherwise, it returns nil . It is permissible to always return nil . This is used in the implementation of fresh-line .
Note that while a value of 0 from stream-line-column also indicates the beginning of a line, there are cases where stream-start-line-p can be meaningfully implemented when stream-line-column cannot. For example, for a window using variable-width characters, the column number isn't very meaningful, but the beginning of the line does have a clear meaning. The default method for stream-start-line-p on class fundamental-character-output-stream uses stream-line-column , so if that is defined to return nil , a method should be provided for either stream-start-line-p or stream-fresh-line .
stream-write-string [Generic Function]
Arguments: stream string
Summary: Writes the string string to stream . If start and end are supplied, they specify what part of string to output. string is returned as the value. This is used by write-string . The default method provided by fundamental-character-output-stream uses repeated calls to stream-write-char .
stream-terpri [Generic Function]
Summary: Writes an end-of-line character on
. This is used by
. The default method does
stream-fresh-line [Generic Function]
Summary: Writes an end-of-line character on stream only if the stream is not at the beginning of the line. This is used by fresh-line . The default method uses stream-start-line-p and stream-terpri .
stream-finish-output [Generic Function]
Summary: Ensures that all the output sent to stream has reached its destination, and only then return nil . This is used by finish-output . The default method does nothing.
stream-force-output [Generic Function]
Summary: Like stream-finish-output , except that it may return nil without waiting for the output to complete. This is used by force-output . The default method does nothing.
stream-clear-output [Generic Function]
Summary: Aborts any outstanding output operation in progress and returns nil . This is used by clear-output . The default method does nothing.
stream-advance-to-column [Generic Function]
Arguments: stream column
Summary: Writes enough blank space on
so that the next character will be written at the position specified by
if the operation is successful, or
if it is not supported for this stream. This is intended for use by
. The default method uses
and repeated calls to
character; it returns
Common Lisp Interface Manager 2.0 User's Guide - 7 Aug 2017