Simplify rtree-extract.
authorLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Wed, 1 Dec 2010 22:53:43 +0000 (23:53 +0100)
committerLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Wed, 1 Dec 2010 22:53:43 +0000 (23:53 +0100)
lisp/rtree.el

index 094a8fc..b72f923 100644 (file)
 
 (defun rtree-extract (tree)
   "Convert TREE to range form."
-  (let ((stack (list tree))
-       result)
-    (while stack
-      (setq tree (pop stack))
-      (while (rtree-right tree)
-       (push tree stack)
-       (let ((a (rtree-right tree)))
-         (rtree-set-right tree nil)
-         (setq tree a)))
-      (push (if (= (rtree-low tree)
-                  (rtree-high tree))
-               (rtree-low tree)
-             (rtree-range tree))
-           result)
-      (when (rtree-left tree)
-       (push (rtree-left tree) stack)))
+  (let (stack result)
+    (while (or stack
+              tree)
+      (if tree
+         (progn
+           (push tree stack)
+           (setq tree (rtree-right tree)))
+       (setq tree (pop stack))
+       (push (if (= (rtree-low tree)
+                    (rtree-high tree))
+                 (rtree-low tree)
+               (rtree-range tree))
+             result)
+       (setq tree (rtree-left tree))))
     result))
 
 (provide 'rtree)