Page 8 Table of Contents Index Page 10
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 2. CONVENTIONS


2.6 Specialized Arguments to Generic Functions

Unless otherwise stated, this specification uses the following convention for specifying which
arguments to generic functions are specialized:
2.7 Multiple Value setf

Some functions in CLIM that return multiple values have setf functions associated with them.
For example, output-record-position returns the position of an output record as two values
that correspond to the x and y coordinates. In order to change the position of an output record,
the programmer would like to invoke (setf output-record-position). Normally however,
setf only takes a single value with which to modify the specified place. CLIM provides a
"multiple value" version of setf that allows an expression that returns multiple values to be
used in updating the specified place. In this specification, this facility will be referred to as
setf*.

For example, the modifying function for output-record-position might be called in either of
the following two ways:

 (setf (output-record-position record) (values nx ny))

 (setf (output-record-position record1) (output-record-position record2))

 
The second form works because output-record-position itself returns two values.

2.8 Sheet, Stream, or Medium Arguments to Macros

There are many macros that take a sheet, stream, or medium as one of the arguments, for
example, with-new-output-record and formatting-table. In CLIM, this argument must be
a variable bound to a sheet, stream, or medium; it may not be an arbitrary form that evaluates
to a sheet, stream, or medium. t and sometimes nil are usually allowed as special cases;
this causes the variable to be interpreted as a reference to another stream variable (usually
*standard-output* for output macros, or *query-io* for input macros). Note that, while the


Page 8 Table of Contents Index Page 10
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