Appendix E Common Lisp Streams

CLIM performs all of its character-based input and output operations on objects called
streams. Streams are divided into two layers, the
basic stream protocol
, which is character-based and compatible with existing Common Lisp programs, and the
extended stream protocol
, which introduces extended gestures such as pointer gestures and synchronous window-manager communication.

This appendix describes the basic stream-based input and output protocol used by CLIM. The protocol is taken from the
STREAM-DEFINITION-BY-USER
proposal to the X3J13 committee, made by David Gray of TI. This proposal was not accepted as part of the ANSI Common Lisp language definition, but CLIM provides an implementation of the basic output stream facilities. For a description of the CLIM specialization of this protocol, see Chapter 15, Extended Stream Input Facilities

Note that in CLIM, many of the generic functions described in the following sections are called by Common Lisp stream functions. For example,
force-output
calls
stream-force-output
.