Page 142 Table of Contents Index Page 144
Chapters
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
A, B, C, D, E



CHAPTER 16. OUTPUT RECORDING

A CLIM stream that supports output recording has an output history object, which is a special
kind of output record that supports some other operations. CLIM defines a standard set of
output history implementations and a standard set of output record types.

The output recording mechanism is defined so as to permit application specific or host win-
dow system specific implementations of the various recording protocols. CLIM implementations
should provide several types of standard output records with different characteristics for search,
storage, and retrieval. Two examples are "sequence" output records (which store elements in a
sequence, and whose insertion and retrieval complexity is O(n)) and "tree" output records (which
store elements in some sort of tree based on the location of the element, and whose insertion and
retrieval complexity is O(log n)).

Major issue: There is a proposal on the table to unify the sheet and output record pro-
tocols, not by unifying the class structure, but by making them implement the same generic
functions where that makes sense. For instance, sheets and output records both have regions,
transformations (that relate sheets to their parents), both support a repainting operation, and
so forth.

In particular,
sheet-parent and output-record-parent are equivalent, as are sheet-children
and output-record-children, sheet-adopt-child and add-output-record, sheet-disown-child
and delete-output-record, and repaint-sheet and replay-output-record, and the map-
ping functions.
output-record-position and its setf function have sheet analogs. The sheet
and output record notification functions are also equivalent.

This simplifies the conceptual framework of CLIM, and could eventually simplify the implemen-
tation as well. Doing this work now opens the door for later unifications, such unifying the pane
layout functionality with table formatting. | York, SWM

16.2 Output Records

=> output-record [Protocol Class]
The protocol class that is used to indicate that an object is an output record, that is, an
object that contains other output records. This is a subclass of bounding-rectangle, and as
such, output records obey the bounding rectangle protocol. If you want to create a new class
that behaves like an output record, it should be a subclass of output-record. Subclasses of
output-record must obey the output record protocol.

All output records are mutable.

=> output-record-p object [Function]
Returns true if object is an output record, otherwise returns false.

=> displayed-output-record [Protocol Class]
The protocol class that is used to indicate that an object is a displayed output record, that
is, an object that represents a visible piece of output on some output stream. This is a


Page 142 Table of Contents Index Page 144
Chapters
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
A, B, C, D, E