]> git.eshelyaron.com Git - emacs.git/commit
itree.c: Get rid of the old iterator code scratch/noverlay
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 17 Nov 2022 23:09:37 +0000 (18:09 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 17 Nov 2022 23:09:37 +0000 (18:09 -0500)
commit091e0f04ffe494ee4cddb67670f0c495a7c9b691
tree3e93d67eed88aeea94cc78951e987fedffd7d8ea
parentfb7f1864da4aa4c09756cfe47db6c56b4e87bd14
itree.c: Get rid of the old iterator code

Only use the new iterator which relies on a fixed size (and small)
state in the iterator.
This makes non-local exits safe within ITREE_FOREACH loops.

* src/itree.c (make_nav, nav_nodeptr, nav_flag, itree_stack_clear)
(itree_stack_push_flagged): Delete functions.
(nodeptr_and_flag): Delete type.
(struct itree_stack): Make the array hold plain pointers instead.
(itree_stack_push): Inline the former code of `itree_stack_push_flagged`.
(itree_stack_pop): Change return type.
(itree_contains): Don't call `ITREE_FOREACH_ABORT` any more.
(itree_insert_gap): Simplify access to the stack of nodes.
(itree_delete_gap, itree_insert_gap): Adjust code to new return type of
`itree_stack_pop`.
(itree_iterator_finish): Delete function.
(itree_iterator_start): Don't setup the `stack` field any more.
(itree_iterator_next): Delete function.
(itree_iter_next): Rename to `itree_iterator_next` and make it non-static.
(itree_iterator_narrow): Don't check the `running` flag any more.

* src/itree.h (itree_iterator_finish): Remove declaration.
(struct itree_iterator): Remove the `stack` and `running` fields.
(ITREE_FOREACH_ABORT): Delete macro.
(ITREE_FOREACH): Don't call `itree_iterator_finish` any more.

* src/xdisp.c (strings_with_newlines):
* src/buffer.c (overlays_in, next_overlay_change, overlay_touches_p):
Don't call `ITREE_FOREACH_ABORT` any more.
src/buffer.c
src/itree.c
src/itree.h
src/xdisp.c