emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] feature/noverlay 3945c01 1/2: Add a function collecting al


From: Andreas Politz
Subject: [Emacs-diffs] feature/noverlay 3945c01 1/2: Add a function collecting all interval nodes
Date: Fri, 6 Oct 2017 15:44:50 -0400 (EDT)

branch: feature/noverlay
commit 3945c019ecc8bea75bf868bb388fa56881cb82b6
Author: Andreas Politz <address@hidden>
Commit: Andreas Politz <address@hidden>

    Add a function collecting all interval nodes
    
    * src/itree.c (interval_tree_nodes): New function
---
 src/itree.c | 22 ++++++++++++++++++++++
 src/itree.h |  1 +
 2 files changed, 23 insertions(+)

diff --git a/src/itree.c b/src/itree.c
index 785c83a..f43189c 100644
--- a/src/itree.c
+++ b/src/itree.c
@@ -404,6 +404,28 @@ interval_tree_validate (struct interval_tree *tree, struct 
interval_node *node)
   return node;
 }
 
+/* Fill memory pointed at via NODES with all nodes of TREE in the
+   given ORDER.
+
+   The size of NODES must be sufficiently large.
+ */
+
+void
+interval_tree_nodes (struct interval_tree *tree,
+                     struct interval_node **nodes,
+                     enum interval_tree_order order)
+{
+  struct interval_node *node;
+
+  interval_tree_iter_start (tree, PTRDIFF_MIN, PTRDIFF_MAX, order);
+  while ((node = interval_tree_iter_next (tree)))
+    {
+      *nodes = node;
+      ++nodes;
+    }
+  interval_tree_iter_finish (tree);
+}
+
 /* Start a generator iterating all intervals in [BEGIN,END) in the
    given ORDER. Only one iterator per tree can be running at any
    time.
diff --git a/src/itree.h b/src/itree.h
index d35c5af..d685a69 100644
--- a/src/itree.h
+++ b/src/itree.h
@@ -85,4 +85,5 @@ void interval_tree_iter_finish(struct interval_tree *);
 struct interval_node *interval_tree_iter_next(struct interval_tree *);
 void interval_tree_insert_gap(struct interval_tree *, ptrdiff_t, ptrdiff_t);
 void interval_tree_delete_gap(struct interval_tree *, ptrdiff_t, ptrdiff_t);
+void interval_tree_nodes (struct interval_tree *tree, struct interval_node 
**nodes, enum interval_tree_order order);
 #endif



reply via email to

[Prev in Thread] Current Thread [Next in Thread]