244 |
(define-setf-method getf (&environment env place indicator &optional default) |
(define-setf-method getf (&environment env place indicator &optional default) |
245 |
(multiple-value-bind (vars vals stores store-form access-form) |
(multiple-value-bind (vars vals stores store-form access-form) |
246 |
(get-setf-method place env) |
(get-setf-method place env) |
247 |
(let ((itemp (gensym)) (store (gensym))) |
(let ((itemp (gensym)) |
248 |
(values `(,@vars ,itemp) |
(store (gensym)) |
249 |
`(,@vals ,indicator) |
(def-temp (if default (gensym)))) |
250 |
(list store) |
(values `(,@vars ,itemp ,@(if default `(,def-temp))) |
251 |
`(let ((,(car stores) (si:put-f ,access-form ,store ,itemp))) |
`(,@vals ,indicator ,@(if default `(,default))) |
252 |
,store-form |
(list store) |
253 |
,store) |
`(let ((,(car stores) (si:put-f ,access-form ,store ,itemp))) |
254 |
`(getf ,access-form ,itemp ,default))))) |
,store-form |
255 |
|
,store) |
256 |
|
`(getf ,access-form ,itemp ,@(if default `(,def-temp))))))) |
257 |
|
|
258 |
(defsetf subseq (sequence1 start1 &optional end1) |
(defsetf subseq (sequence1 start1 &optional end1) |
259 |
(sequence2) |
(sequence2) |