Function: cust-print-walk-circle-tree
cust-print-walk-circle-tree is a byte-compiled function defined in
cust-print.el.gz.
Signature
(cust-print-walk-circle-tree OBJECT)
Source Code
;; Defined in /usr/src/emacs/lisp/obsolete/cust-print.el.gz
(defun cust-print-walk-circle-tree (object)
(let (read-equivalent-p tag)
(while object
(setq read-equivalent-p
(or (numberp object)
(and (symbolp object)
;; Check if it is uninterned.
(eq object (intern-soft (symbol-name object)))))
tag (and (not read-equivalent-p)
(assq object (cdr circle-table))))
(cond (tag
;; Seen this object already, so note that.
(setcdr tag t))
((not read-equivalent-p)
;; Add a tag for this object.
(setcdr circle-table
(cons (list object)
(cdr circle-table)))))
(setq object
(cond
(tag ;; No need to descend since we have already.
nil)
((consp object)
;; Walk the car of the list recursively.
(cust-print-walk-circle-tree (car object))
;; But walk the cdr with the above while loop
;; to avoid problems with max-lisp-eval-depth.
;; And it should be faster than recursion.
(cdr object))
((vectorp object)
;; Walk the vector.
(let ((i (length object))
(j 0))
(while (< j i)
(cust-print-walk-circle-tree (aref object j))
(setq j (1+ j))))))))))