- t)
- ((t)
- (cond ((eq mode :logical-block)
- ;; We've seen the object before in output-object, and now
- ;; a second time in a PPRINT-LOGICAL-BLOCK (for example
- ;; via pprint-dispatch). Don't mark it as circular yet.
- (setf (gethash object *circularity-hash-table*)
- :logical-block)
- nil)
- (t
- ;; second encounter
- (setf (gethash object *circularity-hash-table*) 0)
- ;; It's a circular reference.
- t)))
- ((0 :logical-block-circular)
- ;; It's a circular reference.
- t)))
- (t
- (let ((value (gethash object *circularity-hash-table*)))
- (case value
- ((nil t :logical-block)
- ;; If NIL, we found an object that wasn't there the
- ;; first time around. If T or :LOGICAL-BLOCK, this
- ;; object appears exactly once. Either way, just print
- ;; the thing without any special processing. Note: you
- ;; might argue that finding a new object means that
- ;; something is broken, but this can happen. If someone
- ;; uses the ~@<...~:> format directive, it conses a new
- ;; list each time though format (i.e. the &REST list),
- ;; so we will have different cdrs.
- nil)
+ t)
+ ((t)
+ (cond ((eq mode :logical-block)
+ ;; We've seen the object before in output-object, and now
+ ;; a second time in a PPRINT-LOGICAL-BLOCK (for example
+ ;; via pprint-dispatch). Don't mark it as circular yet.
+ (setf (gethash object *circularity-hash-table*)
+ :logical-block)
+ nil)
+ (t
+ ;; second encounter
+ (setf (gethash object *circularity-hash-table*) 0)
+ ;; It's a circular reference.
+ t)))
+ ((0 :logical-block-circular)
+ ;; It's a circular reference.
+ t)))
+ (t
+ (let ((value (gethash object *circularity-hash-table*)))
+ (case value
+ ((nil t :logical-block)
+ ;; If NIL, we found an object that wasn't there the
+ ;; first time around. If T or :LOGICAL-BLOCK, this
+ ;; object appears exactly once. Either way, just print
+ ;; the thing without any special processing. Note: you
+ ;; might argue that finding a new object means that
+ ;; something is broken, but this can happen. If someone
+ ;; uses the ~@<...~:> format directive, it conses a new
+ ;; list each time though format (i.e. the &REST list),
+ ;; so we will have different cdrs.
+ nil)