All Manuals > CLIM 2.0 User Guide > Appendix D: Common Lisp Streams

D.4 Character Output

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

stream-write-char 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

stream-line-column stream

Summary: This function returns the column number where the next character will be written on stream, or nil if that is not meaningful. The first column on a line is numbered 0. This function is used in the implementation of pprint and the format ~T directive. Every character output stream class must define a method for this, although it is permissible for it to always return nil.

stream-start-line-p Generic Function

stream-start-line-p stream

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

stream-write-string stream string &optional (start 0) end

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

stream-terpri stream

Summary: Writes an end-of-line character on stream and returns nil. This is used by terpri. The default method does stream-write-char of #\Newline.

stream-fresh-line Generic Function

stream-fresh-line stream

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

stream-finish-output stream

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

stream-force-output stream

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

stream-clear-output stream

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

stream-advance-to-column stream column

Summary: Writes enough blank space on stream so that the next character will be written at the position specified by column. Returns t if the operation is successful, or nil if it is not supported for this stream. This is intended for use by pprint and format ~T. The default method uses stream-line-column and repeated calls to stream-write-char with a #\Space character; it returns nil if stream-line-column returns nil.


CLIM 2.0 User Guide - 01 Dec 2021 19:39:02