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

index 8913d32..87558d7 100644 (file)
@@ -71,6 +71,9 @@
 (defmacro rtree-right (node)
   `(cddr ,node))
 
+(defmacro rtree-range (node)
+  `(car ,node))
+
 (defsubst rtree-normalise-range (range)
   (when (numberp range)
     (setq range (cons range range)))
     (and (rtree-right tree)
         (rtree-memq (rtree-right tree) number)))))
 
+(defun rtree-extract (tree)
+  "Convert TREE to range form."
+  (nconc (and (rtree-left tree)
+             (rtree-extract (rtree-left tree)))
+        (list
+         (if (= (rtree-low tree)
+                (rtree-high tree))
+             (rtree-low tree)
+           (rtree-range tree)))
+        (and (rtree-right tree)
+             (rtree-extract (rtree-right tree)))))
+
 (provide 'rtree)
 
 ;;; rtree.el ends here