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 .