Page 345 Table of Contents Index Page 347
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



APPENDIX B. THE CLIM-SYS PACKAGE


B.3 Locks

=> with-lock-held (place &optional state) &body body [Macro]
Evaluates body with the lock named by place. place is a reference to a lock created by make-lock.

On systems that do not support locking, with-lock-held is equivalent to progn.

=> make-lock &optional name [Function]
Creates a lock whose name is name. On systems that do not support locking, this will return a
new list of one element, nil.

=> with-recursive-lock-held (place &optional state) &body body [Macro]
Evaluates body with the recursive lock named by place. place is a reference to a recursive lock
created by make-recursive-lock.

On systems that do not support locking, with-recursive-lock-held is equivalent to progn.

=> make-recursive-lock &optional name [Function]
Creates a recursive lock whose name is name. On systems that do not support locking, this will
return a new list of one element, nil. A recursive lock differs from an ordinary lock in that a
process that already holds the recursive lock can call with-recursive-lock-held on the same
lock without blocking.

B.4 Multiple Value setf

CLIM provides a facility, sometimes referred to as setf*, that allows setf to be used on "places"
that name multiple values. 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. The setf* facility provides a "multiple value" version of setf that allows an expression
that returns multiple values to be used to update the specified place.

=> defgeneric* name lambda-list &body options [Macro]
Defines a setf* generic function named name. The last argument in lambda-list is intended
to be class specialized, just as is the case for normal setf generic functions. options is as for
defgeneric.

=> defmethod* name {method-qualifier}* specialized-lambda-list &body body [Macro]
Defines a setf* method for the generic function name. The last argument in specialized-lambda-
list
is intended to be class specialized, just as is the case for normal setf methods. {method-


Page 345 Table of Contents Index Page 347
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