aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/itree.c22
-rw-r--r--src/itree.h1
2 files changed, 23 insertions, 0 deletions
diff --git a/src/itree.c b/src/itree.c
index 785c83ab798..f43189cabe7 100644
--- a/src/itree.c
+++ b/src/itree.c
@@ -404,6 +404,28 @@ interval_tree_validate (struct interval_tree *tree, struct interval_node *node)
404 return node; 404 return node;
405} 405}
406 406
407/* Fill memory pointed at via NODES with all nodes of TREE in the
408 given ORDER.
409
410 The size of NODES must be sufficiently large.
411 */
412
413void
414interval_tree_nodes (struct interval_tree *tree,
415 struct interval_node **nodes,
416 enum interval_tree_order order)
417{
418 struct interval_node *node;
419
420 interval_tree_iter_start (tree, PTRDIFF_MIN, PTRDIFF_MAX, order);
421 while ((node = interval_tree_iter_next (tree)))
422 {
423 *nodes = node;
424 ++nodes;
425 }
426 interval_tree_iter_finish (tree);
427}
428
407/* Start a generator iterating all intervals in [BEGIN,END) in the 429/* Start a generator iterating all intervals in [BEGIN,END) in the
408 given ORDER. Only one iterator per tree can be running at any 430 given ORDER. Only one iterator per tree can be running at any
409 time. 431 time.
diff --git a/src/itree.h b/src/itree.h
index d35c5afc24c..d685a69eb78 100644
--- a/src/itree.h
+++ b/src/itree.h
@@ -85,4 +85,5 @@ void interval_tree_iter_finish(struct interval_tree *);
85struct interval_node *interval_tree_iter_next(struct interval_tree *); 85struct interval_node *interval_tree_iter_next(struct interval_tree *);
86void interval_tree_insert_gap(struct interval_tree *, ptrdiff_t, ptrdiff_t); 86void interval_tree_insert_gap(struct interval_tree *, ptrdiff_t, ptrdiff_t);
87void interval_tree_delete_gap(struct interval_tree *, ptrdiff_t, ptrdiff_t); 87void interval_tree_delete_gap(struct interval_tree *, ptrdiff_t, ptrdiff_t);
88void interval_tree_nodes (struct interval_tree *tree, struct interval_node **nodes, enum interval_tree_order order);
88#endif 89#endif