summaryrefslogtreecommitdiff
path: root/src/itree.h
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2022-09-30 20:37:15 -0400
committerStefan Monnier <monnier@iro.umontreal.ca>2022-09-30 20:37:15 -0400
commitab2926aad3e15c6cfa0e4b31ae9274c47a58baf2 (patch)
treee1d202146ef6c9cfaabf38fe878b875a55627cd3 /src/itree.h
parent009249e0c6d3bb6c4a3714a279ae91807d133c77 (diff)
downloademacs-ab2926aad3e15c6cfa0e4b31ae9274c47a58baf2.tar.gz
emacs-ab2926aad3e15c6cfa0e4b31ae9274c47a58baf2.tar.bz2
emacs-ab2926aad3e15c6cfa0e4b31ae9274c47a58baf2.zip
itree.c: Improve division between tree and iterator
* src/buffer.c (delete_all_overlays): Add comment. * src/itree.c (struct interval_generator): New fields `running`, `file`, and `line` moved from `interval_tree`. (interval_stack_push_flagged): Adjust comment to resolve a FIXME. (interval_tree_clear): Replace assignment with an a (interval_tree_iter_next): Delete function. (interval_tree_clear): Don't set `iter_running` here any more. (interval_generator_create): Set it here instead. (interval_tree_iter_start): Fetch `iter` once and for all. (interval_generator_narrow): Mark it as non-static. (interval_tree_iter_next, interval_tree_iter_narrow): Delete functions. Inline their old bodies in the callers. (interval_tree_iter_finish): Take the iter rather than the whole tree. Adjust all callers. (interval_generator_next): Move `running `assertion here from `interval_tree_iter_next`. * src/buffer.h: Adjust accordingly. * src/itree.h (struct interval_tree): Remove fields `iter_running`, `file`, and `line`, moved to `interval_generator`. (interval_generator_narrow): Replace `interval_tree_iter_narrow`.
Diffstat (limited to 'src/itree.h')
-rw-r--r--src/itree.h9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/itree.h b/src/itree.h
index f1ef7f99463..b9294c5662c 100644
--- a/src/itree.h
+++ b/src/itree.h
@@ -60,9 +60,6 @@ struct interval_tree
uintmax_t otick; /* offset tick, compared with node's otick. */
intmax_t size; /* Number of nodes in the tree. */
struct interval_generator *iter;
- bool_bf iter_running : 1;
- const char* file;
- int line;
};
enum interval_tree_order {
@@ -84,9 +81,9 @@ bool interval_tree_contains (struct interval_tree *, struct interval_node *);
struct interval_node *interval_tree_remove (struct interval_tree *, struct interval_node *);
void interval_tree_iter_start (struct interval_tree *, ptrdiff_t, ptrdiff_t, enum interval_tree_order,
const char* file, int line);
-void interval_tree_iter_narrow (struct interval_tree *, ptrdiff_t, ptrdiff_t);
-void interval_tree_iter_finish (struct interval_tree *);
-struct interval_node *interval_tree_iter_next (struct interval_tree *);
+void interval_generator_narrow (struct interval_generator *, ptrdiff_t, ptrdiff_t);
+void interval_tree_iter_finish (struct interval_generator *);
+struct interval_node *interval_generator_next (struct interval_generator *);
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);