Source
(defmethod db-cursor-pget ((cursor ext-cursor) &key key pkey
;;flags
current first get-both get-both-range
get-recno join-item last
next next-dup next-no-dup
prev prev-no-dup set set-range set-recno
multiple multiple-key rmw not-found)
(let ((key-buffer (when key (make-get-buffer nil)))
(pkey-buffer (when pkey (make-get-buffer nil))))
(unwind-protect
(multiple-value-bind (ret-key ret-pkey ret-data)
(call-next-method cursor
:key (when key
(funcall (buf-writer cursor)
key key-buffer)
key-buffer)
:pkey (when pkey
(funcall (buf-writer cursor)
pkey pkey-buffer)
pkey-buffer)
:current current :first first
:get-both get-both
:get-both-range get-both-range
:get-recno get-recno :join-item join-item
:last last :next next :next-dup next-dup
:next-no-dup next-no-dup :prev prev
:prev-no-dup prev-no-dup :set set
:set-range set-range :set-recno set-recno
:multiple multiple
:multiple-key multiple-key
:rmw rmw :not-found not-found)
(unwind-protect
(values (funcall (buf-reader cursor) ret-key)
(funcall (buf-reader cursor) ret-pkey)
(funcall (buf-reader cursor) ret-data))
(progn
(free-cbuffer ret-key)
(free-cbuffer ret-pkey)
(free-cbuffer ret-data))))
(progn
(when pkey-buffer (free-cbuffer pkey-buffer))
(when key-buffer (free-cbuffer key-buffer))))))
Source Context