Update of /project/cl-store/cvsroot/cl-store/doc In directory common-lisp.net:/tmp/cvs-serv9440/doc
Modified Files: cl-store.texi Log Message: Changelog 2005-02-01 Date: Tue Feb 1 00:27:40 2005 Author: sross
Index: cl-store/doc/cl-store.texi diff -u cl-store/doc/cl-store.texi:1.5 cl-store/doc/cl-store.texi:1.6 --- cl-store/doc/cl-store.texi:1.5 Thu Dec 2 02:32:02 2004 +++ cl-store/doc/cl-store.texi Tue Feb 1 00:27:40 2005 @@ -468,7 +468,7 @@ @end deffn
@anchor {Macro resolving-object} -@deffn {Macro} resolving-object object &body body +@deffn {Macro} resolving-object (var create) &body body Executes @emph{body} resolving circularities detected in @emph{object}. Resolving-object works by creating a closure, containing code to set a particular place in @emph{object}, which is then pushed onto a list. @@ -477,9 +477,9 @@ Example. @lisp (defrestore-cl-store (cons stream) - (resolving-object (cons nil nil) - (setting car (restore-object stream)) - (setting cdr (restore-object stream)))) + (resolving-object (object (cons nil nil)) + (setting (car object) (restore-object stream)) + (setting (cdr object) (restore-object stream)))) @end lisp @end deffn
@@ -489,24 +489,18 @@ @deffn {Macro} setting place get This macro can only be used inside @code{resolving-object}. It sets the value designated by @emph{place} to @emph{get} for the object that is being resolved. -@emph{Place} should be either a symbol or a list. By default we assume that the -order of the arguments to (setf @emph{place}) is first the object to set and then -the rest of the arguments. To work around instances where the order is reversed -as in gethash, there is a variable called @code{*postfix-setters*}. -If the first element of place is in @code{*postfix-setters*} the setting macro -will adjust accordingly.
Example. @lisp (defrestore-cl-store (simple-vector stream) (let* ((size (restore-object stream)) (res (make-array size))) - (resolving-object res + (resolving-object (object res) (loop repeat size for i from 0 do ;; we need to copy the index so that ;; it's value is preserved for after the loop. (let ((x i)) - (setting (aref x) (restore-object stream))))) + (setting (aref object x) (restore-object stream))))) res)) @end lisp @end deffn @@ -528,7 +522,7 @@ :rehash-size rehash-size :rehash-threshold rehash-threshold :size size))) - (resolving-object hash + (resolving-object (obj hash) (loop repeat count do (setting-hash (restore-object stream) (restore-object stream))))