aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatt Armstrong2022-10-19 15:56:07 -0700
committerStefan Monnier2022-10-19 21:35:09 -0400
commitf421b58db5d34f45773a73c699b4b1a5a5b9da03 (patch)
tree3bddc5b3bb76bb6054e30fbae30765d8211a37f8 /src
parent06252617b2c4cc9bcdd9407f1e709a7e0908cf27 (diff)
downloademacs-f421b58db5d34f45773a73c699b4b1a5a5b9da03.tar.gz
emacs-f421b58db5d34f45773a73c699b4b1a5a5b9da03.zip
Prefix all itree.h type names with itree_
Rename interval_node -> itree_node, interval_tree -> itree_tree, interval_tree_order -> itree_order. * src/alloc.c: Renames. * src/buffer.c: ditto. * src/itree.c: ditto. * src/itree.h: ditto. * src/lisp.h: ditto. * src/pdumper.h: ditto. * src/textprop.h: ditto. * src/xdisp.h: ditto.
Diffstat (limited to 'src')
-rw-r--r--src/alloc.c4
-rw-r--r--src/buffer.c40
-rw-r--r--src/buffer.h2
-rw-r--r--src/itree.c160
-rw-r--r--src/itree.h47
-rw-r--r--src/lisp.h2
-rw-r--r--src/pdumper.c10
-rw-r--r--src/textprop.c2
-rw-r--r--src/xdisp.c4
9 files changed, 135 insertions, 136 deletions
diff --git a/src/alloc.c b/src/alloc.c
index d7e0a99ffe7..a08249b1b11 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -3711,7 +3711,7 @@ build_overlay (bool front_advance, bool rear_advance,
3711 struct Lisp_Overlay *p = ALLOCATE_PSEUDOVECTOR (struct Lisp_Overlay, plist, 3711 struct Lisp_Overlay *p = ALLOCATE_PSEUDOVECTOR (struct Lisp_Overlay, plist,
3712 PVEC_OVERLAY); 3712 PVEC_OVERLAY);
3713 Lisp_Object overlay = make_lisp_ptr (p, Lisp_Vectorlike); 3713 Lisp_Object overlay = make_lisp_ptr (p, Lisp_Vectorlike);
3714 struct interval_node *node = xmalloc (sizeof (*node)); 3714 struct itree_node *node = xmalloc (sizeof (*node));
3715 interval_node_init (node, front_advance, rear_advance, overlay); 3715 interval_node_init (node, front_advance, rear_advance, overlay);
3716 p->interval = node; 3716 p->interval = node;
3717 p->buffer = NULL; 3717 p->buffer = NULL;
@@ -6518,7 +6518,7 @@ mark_overlay (struct Lisp_Overlay *ov)
6518/* Mark the overlay subtree rooted at NODE. */ 6518/* Mark the overlay subtree rooted at NODE. */
6519 6519
6520static void 6520static void
6521mark_overlays (struct interval_node *node) 6521mark_overlays (struct itree_node *node)
6522{ 6522{
6523 if (node == NULL) 6523 if (node == NULL)
6524 return; 6524 return;
diff --git a/src/buffer.c b/src/buffer.c
index 74c6705cbd3..228c6e60560 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -655,7 +655,7 @@ static void
655copy_overlays (struct buffer *from, struct buffer *to) 655copy_overlays (struct buffer *from, struct buffer *to)
656{ 656{
657 eassert (to && ! to->overlays); 657 eassert (to && ! to->overlays);
658 struct interval_node *node; 658 struct itree_node *node;
659 659
660 ITREE_FOREACH (node, from->overlays, PTRDIFF_MIN, PTRDIFF_MAX, ASCENDING) 660 ITREE_FOREACH (node, from->overlays, PTRDIFF_MIN, PTRDIFF_MAX, ASCENDING)
661 { 661 {
@@ -932,13 +932,13 @@ drop_overlay (struct Lisp_Overlay *ov)
932void 932void
933delete_all_overlays (struct buffer *b) 933delete_all_overlays (struct buffer *b)
934{ 934{
935 struct interval_node *node; 935 struct itree_node *node;
936 936
937 if (! b->overlays) 937 if (! b->overlays)
938 return; 938 return;
939 939
940 /* FIXME: This loop sets the overlays' `buffer` field to NULL but 940 /* FIXME: This loop sets the overlays' `buffer` field to NULL but
941 doesn't set the interval_nodes' `parent`, `left` and `right` 941 doesn't set the itree_nodes' `parent`, `left` and `right`
942 fields accordingly. I believe it's harmless, but a bit untidy since 942 fields accordingly. I believe it's harmless, but a bit untidy since
943 other parts of the code are careful to set those fields to NULL when 943 other parts of the code are careful to set those fields to NULL when
944 the overlay is deleted. 944 the overlay is deleted.
@@ -978,8 +978,8 @@ set_overlays_multibyte (bool multibyte)
978 if (! current_buffer->overlays || Z == Z_BYTE) 978 if (! current_buffer->overlays || Z == Z_BYTE)
979 return; 979 return;
980 980
981 struct interval_node **nodes = NULL; 981 struct itree_node **nodes = NULL;
982 struct interval_tree *tree = current_buffer->overlays; 982 struct itree_tree *tree = current_buffer->overlays;
983 const intmax_t size = interval_tree_size (tree); 983 const intmax_t size = interval_tree_size (tree);
984 984
985 /* We can't use `interval_node_set_region` at the same time 985 /* We can't use `interval_node_set_region` at the same time
@@ -988,14 +988,14 @@ set_overlays_multibyte (bool multibyte)
988 USE_SAFE_ALLOCA; 988 USE_SAFE_ALLOCA;
989 SAFE_NALLOCA (nodes, 1, size); 989 SAFE_NALLOCA (nodes, 1, size);
990 { 990 {
991 struct interval_node *node, **cursor = nodes; 991 struct itree_node *node, **cursor = nodes;
992 ITREE_FOREACH (node, tree, PTRDIFF_MIN, PTRDIFF_MAX, ASCENDING) 992 ITREE_FOREACH (node, tree, PTRDIFF_MIN, PTRDIFF_MAX, ASCENDING)
993 *(cursor++) = node; 993 *(cursor++) = node;
994 } 994 }
995 995
996 for (int i = 0; i < size; ++i, ++nodes) 996 for (int i = 0; i < size; ++i, ++nodes)
997 { 997 {
998 struct interval_node * const node = *nodes; 998 struct itree_node * const node = *nodes;
999 999
1000 if (multibyte) 1000 if (multibyte)
1001 { 1001 {
@@ -2436,7 +2436,7 @@ advance_to_char_boundary (ptrdiff_t byte_pos)
2436static void 2436static void
2437swap_buffer_overlays (struct buffer *buffer, struct buffer *other) 2437swap_buffer_overlays (struct buffer *buffer, struct buffer *other)
2438{ 2438{
2439 struct interval_node *node; 2439 struct itree_node *node;
2440 2440
2441 ITREE_FOREACH (node, buffer->overlays, PTRDIFF_MIN, PTRDIFF_MAX, ASCENDING) 2441 ITREE_FOREACH (node, buffer->overlays, PTRDIFF_MIN, PTRDIFF_MAX, ASCENDING)
2442 XOVERLAY (node->data)->buffer = other; 2442 XOVERLAY (node->data)->buffer = other;
@@ -2965,7 +2965,7 @@ overlays_in (ptrdiff_t beg, ptrdiff_t end, bool extend,
2965 ptrdiff_t len = *len_ptr; 2965 ptrdiff_t len = *len_ptr;
2966 ptrdiff_t next = ZV; 2966 ptrdiff_t next = ZV;
2967 Lisp_Object *vec = *vec_ptr; 2967 Lisp_Object *vec = *vec_ptr;
2968 struct interval_node *node; 2968 struct itree_node *node;
2969 2969
2970 ITREE_FOREACH (node, current_buffer->overlays, beg, 2970 ITREE_FOREACH (node, current_buffer->overlays, beg,
2971 /* Find empty OV at Z ? */ 2971 /* Find empty OV at Z ? */
@@ -3026,7 +3026,7 @@ ptrdiff_t
3026next_overlay_change (ptrdiff_t pos) 3026next_overlay_change (ptrdiff_t pos)
3027{ 3027{
3028 ptrdiff_t next = ZV; 3028 ptrdiff_t next = ZV;
3029 struct interval_node *node; 3029 struct itree_node *node;
3030 3030
3031 ITREE_FOREACH (node, current_buffer->overlays, pos, next, ASCENDING) 3031 ITREE_FOREACH (node, current_buffer->overlays, pos, next, ASCENDING)
3032 { 3032 {
@@ -3052,7 +3052,7 @@ next_overlay_change (ptrdiff_t pos)
3052ptrdiff_t 3052ptrdiff_t
3053previous_overlay_change (ptrdiff_t pos) 3053previous_overlay_change (ptrdiff_t pos)
3054{ 3054{
3055 struct interval_node *node; 3055 struct itree_node *node;
3056 ptrdiff_t prev = BEGV; 3056 ptrdiff_t prev = BEGV;
3057 3057
3058 ITREE_FOREACH (node, current_buffer->overlays, prev, pos, DESCENDING) 3058 ITREE_FOREACH (node, current_buffer->overlays, prev, pos, DESCENDING)
@@ -3135,7 +3135,7 @@ disable_line_numbers_overlay_at_eob (void)
3135bool 3135bool
3136overlay_touches_p (ptrdiff_t pos) 3136overlay_touches_p (ptrdiff_t pos)
3137{ 3137{
3138 struct interval_node *node; 3138 struct itree_node *node;
3139 3139
3140 /* We need to find overlays ending in pos, as well as empty ones at 3140 /* We need to find overlays ending in pos, as well as empty ones at
3141 pos. */ 3141 pos. */
@@ -3347,7 +3347,7 @@ ptrdiff_t
3347overlay_strings (ptrdiff_t pos, struct window *w, unsigned char **pstr) 3347overlay_strings (ptrdiff_t pos, struct window *w, unsigned char **pstr)
3348{ 3348{
3349 bool multibyte = ! NILP (BVAR (current_buffer, enable_multibyte_characters)); 3349 bool multibyte = ! NILP (BVAR (current_buffer, enable_multibyte_characters));
3350 struct interval_node *node; 3350 struct itree_node *node;
3351 3351
3352 overlay_heads.used = overlay_heads.bytes = 0; 3352 overlay_heads.used = overlay_heads.bytes = 0;
3353 overlay_tails.used = overlay_tails.bytes = 0; 3353 overlay_tails.used = overlay_tails.bytes = 0;
@@ -3848,7 +3848,7 @@ However, the overlays you get are the real objects that the buffer uses. */)
3848 (void) 3848 (void)
3849{ 3849{
3850 Lisp_Object overlays = Qnil; 3850 Lisp_Object overlays = Qnil;
3851 struct interval_node *node; 3851 struct itree_node *node;
3852 3852
3853 ITREE_FOREACH (node, current_buffer->overlays, BEG, Z, DESCENDING) 3853 ITREE_FOREACH (node, current_buffer->overlays, BEG, Z, DESCENDING)
3854 overlays = Fcons (node->data, overlays); 3854 overlays = Fcons (node->data, overlays);
@@ -3980,7 +3980,7 @@ report_overlay_modification (Lisp_Object start, Lisp_Object end, bool after,
3980 3980
3981 if (!after) 3981 if (!after)
3982 { 3982 {
3983 struct interval_node *node; 3983 struct itree_node *node;
3984 EMACS_INT begin_arg = XFIXNUM (start); 3984 EMACS_INT begin_arg = XFIXNUM (start);
3985 EMACS_INT end_arg = XFIXNUM (end); 3985 EMACS_INT end_arg = XFIXNUM (end);
3986 /* We are being called before a change. 3986 /* We are being called before a change.
@@ -4072,7 +4072,7 @@ void
4072evaporate_overlays (ptrdiff_t pos) 4072evaporate_overlays (ptrdiff_t pos)
4073{ 4073{
4074 Lisp_Object hit_list = Qnil; 4074 Lisp_Object hit_list = Qnil;
4075 struct interval_node *node; 4075 struct itree_node *node;
4076 4076
4077 ITREE_FOREACH (node, current_buffer->overlays, pos, pos, ASCENDING) 4077 ITREE_FOREACH (node, current_buffer->overlays, pos, pos, ASCENDING)
4078 { 4078 {
@@ -4913,7 +4913,7 @@ defvar_per_buffer (struct Lisp_Buffer_Objfwd *bo_fwd, const char *namestring,
4913 4913
4914#ifdef ITREE_DEBUG 4914#ifdef ITREE_DEBUG
4915static Lisp_Object 4915static Lisp_Object
4916make_lispy_interval_node (const struct interval_node *node) 4916make_lispy_itree_node (const struct itree_node *node)
4917{ 4917{
4918 return listn (12, 4918 return listn (12,
4919 intern (":begin"), 4919 intern (":begin"),
@@ -4931,12 +4931,12 @@ make_lispy_interval_node (const struct interval_node *node)
4931} 4931}
4932 4932
4933static Lisp_Object 4933static Lisp_Object
4934overlay_tree (const struct interval_tree *tree, 4934overlay_tree (const struct itree_tree *tree,
4935 const struct interval_node *node) 4935 const struct itree_node *node)
4936{ 4936{
4937 if (node == ITREE_NULL) 4937 if (node == ITREE_NULL)
4938 return Qnil; 4938 return Qnil;
4939 return list3 (make_lispy_interval_node (node), 4939 return list3 (make_lispy_itree_node (node),
4940 overlay_tree (tree, node->left), 4940 overlay_tree (tree, node->left),
4941 overlay_tree (tree, node->right)); 4941 overlay_tree (tree, node->right));
4942} 4942}
diff --git a/src/buffer.h b/src/buffer.h
index afcdfcd9a02..ee0c8dd8361 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -698,7 +698,7 @@ struct buffer
698 bool_bf long_line_optimizations_p : 1; 698 bool_bf long_line_optimizations_p : 1;
699 699
700 /* The inveral tree containing this buffer's overlays. */ 700 /* The inveral tree containing this buffer's overlays. */
701 struct interval_tree *overlays; 701 struct itree_tree *overlays;
702 702
703 /* Changes in the buffer are recorded here for undo, and t means 703 /* Changes in the buffer are recorded here for undo, and t means
704 don't record anything. This information belongs to the base 704 don't record anything. This information belongs to the base
diff --git a/src/itree.c b/src/itree.c
index f7597ef86ad..6d54a36c3bb 100644
--- a/src/itree.c
+++ b/src/itree.c
@@ -135,7 +135,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
135typedef uintptr_t nodeptr_and_flag; 135typedef uintptr_t nodeptr_and_flag;
136 136
137static inline nodeptr_and_flag 137static inline nodeptr_and_flag
138make_nav (struct interval_node *ptr, bool flag) 138make_nav (struct itree_node *ptr, bool flag)
139{ 139{
140 uintptr_t v = (uintptr_t) ptr; 140 uintptr_t v = (uintptr_t) ptr;
141 /* We assume alignment imposes the LSB is clear for us to use it. */ 141 /* We assume alignment imposes the LSB is clear for us to use it. */
@@ -143,10 +143,10 @@ make_nav (struct interval_node *ptr, bool flag)
143 return v | !!flag; 143 return v | !!flag;
144} 144}
145 145
146static inline struct interval_node * 146static inline struct itree_node *
147nav_nodeptr (nodeptr_and_flag nav) 147nav_nodeptr (nodeptr_and_flag nav)
148{ 148{
149 return (struct interval_node *) (nav & (~(uintptr_t)1)); 149 return (struct itree_node *) (nav & (~(uintptr_t)1));
150} 150}
151 151
152static inline bool 152static inline bool
@@ -170,7 +170,7 @@ interval_stack_create (intmax_t initial_size)
170{ 170{
171 struct interval_stack *stack = xmalloc (sizeof (struct interval_stack)); 171 struct interval_stack *stack = xmalloc (sizeof (struct interval_stack));
172 stack->size = max (0, initial_size); 172 stack->size = max (0, initial_size);
173 stack->nodes = xmalloc (stack->size * sizeof (struct interval_node*)); 173 stack->nodes = xmalloc (stack->size * sizeof (struct itree_node*));
174 stack->length = 0; 174 stack->length = 0;
175 return stack; 175 return stack;
176} 176}
@@ -206,7 +206,7 @@ interval_stack_ensure_space (struct interval_stack *stack, intmax_t nelements)
206 206
207static inline void 207static inline void
208interval_stack_push_flagged (struct interval_stack *stack, 208interval_stack_push_flagged (struct interval_stack *stack,
209 struct interval_node *node, bool flag) 209 struct itree_node *node, bool flag)
210{ 210{
211 eassert (node && node != NULL); 211 eassert (node && node != NULL);
212 212
@@ -223,7 +223,7 @@ interval_stack_push_flagged (struct interval_stack *stack,
223} 223}
224 224
225static inline void 225static inline void
226interval_stack_push (struct interval_stack *stack, struct interval_node *node) 226interval_stack_push (struct interval_stack *stack, struct itree_node *node)
227{ 227{
228 interval_stack_push_flagged (stack, node, false); 228 interval_stack_push_flagged (stack, node, false);
229} 229}
@@ -246,7 +246,7 @@ struct itree_iterator
246 ptrdiff_t begin; 246 ptrdiff_t begin;
247 ptrdiff_t end; 247 ptrdiff_t end;
248 uintmax_t otick; /* A copy of the tree's `otick`. */ 248 uintmax_t otick; /* A copy of the tree's `otick`. */
249 enum interval_tree_order order; 249 enum itree_order order;
250 bool running; 250 bool running;
251 const char* file; 251 const char* file;
252 int line; 252 int line;
@@ -260,7 +260,7 @@ struct itree_iterator
260static struct itree_iterator *iter; 260static struct itree_iterator *iter;
261 261
262static int 262static int
263interval_tree_max_height (const struct interval_tree *tree) 263interval_tree_max_height (const struct itree_tree *tree)
264{ 264{
265 return 2 * log (tree->size + 1) / log (2) + 0.5; 265 return 2 * log (tree->size + 1) / log (2) + 0.5;
266} 266}
@@ -268,7 +268,7 @@ interval_tree_max_height (const struct interval_tree *tree)
268/* Allocate a new iterator for TREE. */ 268/* Allocate a new iterator for TREE. */
269 269
270static struct itree_iterator * 270static struct itree_iterator *
271itree_iterator_create (struct interval_tree *tree) 271itree_iterator_create (struct itree_tree *tree)
272{ 272{
273 struct itree_iterator *g = xmalloc (sizeof *g); 273 struct itree_iterator *g = xmalloc (sizeof *g);
274 /* 19 here just avoids starting with a silly-small stack. 274 /* 19 here just avoids starting with a silly-small stack.
@@ -300,7 +300,7 @@ struct check_subtree_result
300}; 300};
301 301
302static struct check_subtree_result 302static struct check_subtree_result
303check_subtree (struct interval_node *node, 303check_subtree (struct itree_node *node,
304 bool check_red_black_invariants, uintmax_t tree_otick, 304 bool check_red_black_invariants, uintmax_t tree_otick,
305 ptrdiff_t offset, ptrdiff_t min_begin, 305 ptrdiff_t offset, ptrdiff_t min_begin,
306 ptrdiff_t max_begin) 306 ptrdiff_t max_begin)
@@ -369,7 +369,7 @@ check_subtree (struct interval_node *node,
369 entire tree and validates all invariants. 369 entire tree and validates all invariants.
370*/ 370*/
371static bool 371static bool
372check_tree (struct interval_tree *tree, 372check_tree (struct itree_tree *tree,
373 bool check_red_black_invariants) 373 bool check_red_black_invariants)
374{ 374{
375 eassert (tree != NULL); 375 eassert (tree != NULL);
@@ -380,7 +380,7 @@ check_tree (struct interval_tree *tree,
380 eassert (tree->root->parent == NULL); 380 eassert (tree->root->parent == NULL);
381 eassert (!check_red_black_invariants || !tree->root->red); 381 eassert (!check_red_black_invariants || !tree->root->red);
382 382
383 struct interval_node *node = tree->root; 383 struct itree_node *node = tree->root;
384 struct check_subtree_result result 384 struct check_subtree_result result
385 = check_subtree (node, check_red_black_invariants, tree->otick, 385 = check_subtree (node, check_red_black_invariants, tree->otick,
386 node->offset, PTRDIFF_MIN, 386 node->offset, PTRDIFF_MIN,
@@ -396,19 +396,19 @@ check_tree (struct interval_tree *tree,
396 * +=======================================================================+ */ 396 * +=======================================================================+ */
397 397
398static bool 398static bool
399null_safe_is_red (struct interval_node *node) 399null_safe_is_red (struct itree_node *node)
400{ 400{
401 return node != NULL && node->red; 401 return node != NULL && node->red;
402} 402}
403 403
404static bool 404static bool
405null_safe_is_black (struct interval_node *node) 405null_safe_is_black (struct itree_node *node)
406{ 406{
407 return node == NULL || !node->red; /* NULL nodes are black */ 407 return node == NULL || !node->red; /* NULL nodes are black */
408} 408}
409 409
410static inline ptrdiff_t 410static inline ptrdiff_t
411itree_newlimit (struct interval_node *node) 411itree_newlimit (struct itree_node *node)
412{ 412{
413 eassert (node != NULL); 413 eassert (node != NULL);
414 return max (node->end, 414 return max (node->end,
@@ -423,7 +423,7 @@ itree_newlimit (struct interval_node *node)
423/* Update NODE's limit attribute according to its children. */ 423/* Update NODE's limit attribute according to its children. */
424 424
425static void 425static void
426interval_tree_update_limit (struct interval_node *node) 426interval_tree_update_limit (struct itree_node *node)
427{ 427{
428 if (node == NULL) 428 if (node == NULL)
429 return; 429 return;
@@ -438,7 +438,7 @@ interval_tree_update_limit (struct interval_node *node)
438*/ 438*/
439 439
440static void 440static void
441interval_tree_inherit_offset (uintmax_t otick, struct interval_node *node) 441interval_tree_inherit_offset (uintmax_t otick, struct itree_node *node)
442{ 442{
443 eassert (node->parent == NULL || node->parent->otick >= node->otick); 443 eassert (node->parent == NULL || node->parent->otick >= node->otick);
444 if (node->otick == otick) 444 if (node->otick == otick)
@@ -475,7 +475,7 @@ interval_tree_inherit_offset (uintmax_t otick, struct interval_node *node)
475 stable, i.e. new_limit = old_limit. */ 475 stable, i.e. new_limit = old_limit. */
476 476
477static void 477static void
478interval_tree_propagate_limit (struct interval_node *node) 478interval_tree_propagate_limit (struct itree_node *node)
479{ 479{
480 if (node == NULL) 480 if (node == NULL)
481 return; 481 return;
@@ -491,8 +491,8 @@ interval_tree_propagate_limit (struct interval_node *node)
491 } 491 }
492} 492}
493 493
494static struct interval_node* 494static struct itree_node*
495interval_tree_validate (struct interval_tree *tree, struct interval_node *node) 495interval_tree_validate (struct itree_tree *tree, struct itree_node *node)
496{ 496{
497 497
498 if (tree->otick == node->otick || node == NULL) 498 if (tree->otick == node->otick || node == NULL)
@@ -511,7 +511,7 @@ interval_tree_validate (struct interval_tree *tree, struct interval_node *node)
511/* Initialize an allocated node. */ 511/* Initialize an allocated node. */
512 512
513void 513void
514interval_node_init (struct interval_node *node, 514interval_node_init (struct itree_node *node,
515 bool front_advance, bool rear_advance, 515 bool front_advance, bool rear_advance,
516 Lisp_Object data) 516 Lisp_Object data)
517{ 517{
@@ -528,8 +528,8 @@ interval_node_init (struct interval_node *node,
528/* Return NODE's begin value, computing it if necessary. */ 528/* Return NODE's begin value, computing it if necessary. */
529 529
530ptrdiff_t 530ptrdiff_t
531interval_node_begin (struct interval_tree *tree, 531interval_node_begin (struct itree_tree *tree,
532 struct interval_node *node) 532 struct itree_node *node)
533{ 533{
534 interval_tree_validate (tree, node); 534 interval_tree_validate (tree, node);
535 return node->begin; 535 return node->begin;
@@ -538,8 +538,8 @@ interval_node_begin (struct interval_tree *tree,
538/* Return NODE's end value, computing it if necessary. */ 538/* Return NODE's end value, computing it if necessary. */
539 539
540ptrdiff_t 540ptrdiff_t
541interval_node_end (struct interval_tree *tree, 541interval_node_end (struct itree_tree *tree,
542 struct interval_node *node) 542 struct itree_node *node)
543{ 543{
544 interval_tree_validate (tree, node); 544 interval_tree_validate (tree, node);
545 return node->end; 545 return node->end;
@@ -547,7 +547,7 @@ interval_node_end (struct interval_tree *tree,
547 547
548/* Allocate an interval_tree. Free with interval_tree_destroy. */ 548/* Allocate an interval_tree. Free with interval_tree_destroy. */
549 549
550struct interval_tree* 550struct itree_tree*
551interval_tree_create (void) 551interval_tree_create (void)
552{ 552{
553 /* FIXME? Maybe avoid the initialization of itree_null in the same 553 /* FIXME? Maybe avoid the initialization of itree_null in the same
@@ -555,7 +555,7 @@ interval_tree_create (void)
555 important though. */ 555 important though. */
556 itree_init (); 556 itree_init ();
557 557
558 struct interval_tree *tree = xmalloc (sizeof (*tree)); 558 struct itree_tree *tree = xmalloc (sizeof (*tree));
559 interval_tree_clear (tree); 559 interval_tree_clear (tree);
560 return tree; 560 return tree;
561} 561}
@@ -563,7 +563,7 @@ interval_tree_create (void)
563/* Reset the tree TREE to its empty state. */ 563/* Reset the tree TREE to its empty state. */
564 564
565void 565void
566interval_tree_clear (struct interval_tree *tree) 566interval_tree_clear (struct itree_tree *tree)
567{ 567{
568 tree->root = NULL; 568 tree->root = NULL;
569 tree->otick = 1; 569 tree->otick = 1;
@@ -583,7 +583,7 @@ interval_tree_init (struct interval_tree *tree)
583 583
584/* Release a tree, freeing its allocated memory. */ 584/* Release a tree, freeing its allocated memory. */
585void 585void
586interval_tree_destroy (struct interval_tree *tree) 586interval_tree_destroy (struct itree_tree *tree)
587{ 587{
588 eassert (tree->root == NULL); 588 eassert (tree->root == NULL);
589 /* if (tree->iter) 589 /* if (tree->iter)
@@ -594,7 +594,7 @@ interval_tree_destroy (struct interval_tree *tree)
594/* Return the number of nodes in TREE. */ 594/* Return the number of nodes in TREE. */
595 595
596intmax_t 596intmax_t
597interval_tree_size (struct interval_tree *tree) 597interval_tree_size (struct itree_tree *tree)
598{ 598{
599 return tree->size; 599 return tree->size;
600} 600}
@@ -602,12 +602,12 @@ interval_tree_size (struct interval_tree *tree)
602/* Perform the familiar left-rotation on node NODE. */ 602/* Perform the familiar left-rotation on node NODE. */
603 603
604static void 604static void
605interval_tree_rotate_left (struct interval_tree *tree, 605interval_tree_rotate_left (struct itree_tree *tree,
606 struct interval_node *node) 606 struct itree_node *node)
607{ 607{
608 eassert (node->right != NULL); 608 eassert (node->right != NULL);
609 609
610 struct interval_node *right = node->right; 610 struct itree_node *right = node->right;
611 611
612 interval_tree_inherit_offset (tree->otick, node); 612 interval_tree_inherit_offset (tree->otick, node);
613 interval_tree_inherit_offset (tree->otick, right); 613 interval_tree_inherit_offset (tree->otick, right);
@@ -645,12 +645,12 @@ interval_tree_rotate_left (struct interval_tree *tree,
645/* Perform the familiar right-rotation on node NODE. */ 645/* Perform the familiar right-rotation on node NODE. */
646 646
647static void 647static void
648interval_tree_rotate_right (struct interval_tree *tree, 648interval_tree_rotate_right (struct itree_tree *tree,
649 struct interval_node *node) 649 struct itree_node *node)
650{ 650{
651 eassert (tree && node && node->left != NULL); 651 eassert (tree && node && node->left != NULL);
652 652
653 struct interval_node *left = node->left; 653 struct itree_node *left = node->left;
654 654
655 interval_tree_inherit_offset (tree->otick, node); 655 interval_tree_inherit_offset (tree->otick, node);
656 interval_tree_inherit_offset (tree->otick, left); 656 interval_tree_inherit_offset (tree->otick, left);
@@ -684,8 +684,8 @@ interval_tree_rotate_right (struct interval_tree *tree,
684 Rebalance the parents as needed to re-establish the RB invariants. */ 684 Rebalance the parents as needed to re-establish the RB invariants. */
685 685
686static void 686static void
687interval_tree_insert_fix (struct interval_tree *tree, 687interval_tree_insert_fix (struct itree_tree *tree,
688 struct interval_node *node) 688 struct itree_node *node)
689{ 689{
690 eassert (tree->root->red == false); 690 eassert (tree->root->red == false);
691 691
@@ -699,7 +699,7 @@ interval_tree_insert_fix (struct interval_tree *tree,
699 { 699 {
700 /* We're on the left side of our grandparent, and OTHER is 700 /* We're on the left side of our grandparent, and OTHER is
701 our "uncle". */ 701 our "uncle". */
702 struct interval_node *uncle = node->parent->parent->right; 702 struct itree_node *uncle = node->parent->parent->right;
703 703
704 if (null_safe_is_red (uncle)) /* case 1.a */ 704 if (null_safe_is_red (uncle)) /* case 1.a */
705 { 705 {
@@ -729,7 +729,7 @@ interval_tree_insert_fix (struct interval_tree *tree,
729 else 729 else
730 { 730 {
731 /* This is the symmetrical case of above. */ 731 /* This is the symmetrical case of above. */
732 struct interval_node *uncle = node->parent->parent->left; 732 struct itree_node *uncle = node->parent->parent->left;
733 733
734 if (null_safe_is_red (uncle)) /* case 1.b */ 734 if (null_safe_is_red (uncle)) /* case 1.b */
735 { 735 {
@@ -763,7 +763,7 @@ interval_tree_insert_fix (struct interval_tree *tree,
763 Note, that inserting a node twice results in undefined behaviour. */ 763 Note, that inserting a node twice results in undefined behaviour. */
764 764
765static void 765static void
766interval_tree_insert (struct interval_tree *tree, struct interval_node *node) 766interval_tree_insert (struct itree_tree *tree, struct itree_node *node)
767{ 767{
768 eassert (node->begin <= node->end && node != NULL); 768 eassert (node->begin <= node->end && node != NULL);
769 /* FIXME: The assertion below fails because `delete_all_overlays` 769 /* FIXME: The assertion below fails because `delete_all_overlays`
@@ -772,8 +772,8 @@ interval_tree_insert (struct interval_tree *tree, struct interval_node *node)
772 && node->parent == NULL) */; 772 && node->parent == NULL) */;
773 eassert (check_tree (tree, true)); /* FIXME: Too expensive. */ 773 eassert (check_tree (tree, true)); /* FIXME: Too expensive. */
774 774
775 struct interval_node *parent = NULL; 775 struct itree_node *parent = NULL;
776 struct interval_node *child = tree->root; 776 struct itree_node *child = tree->root;
777 uintmax_t otick = tree->otick; 777 uintmax_t otick = tree->otick;
778 /* It's the responsability of the caller to set `otick` on the node, 778 /* It's the responsability of the caller to set `otick` on the node,
779 to "confirm" that the begin/end fields are up to date. */ 779 to "confirm" that the begin/end fields are up to date. */
@@ -821,7 +821,7 @@ interval_tree_insert (struct interval_tree *tree, struct interval_node *node)
821} 821}
822 822
823void 823void
824itree_insert_node (struct interval_tree *tree, struct interval_node *node, 824itree_insert_node (struct itree_tree *tree, struct itree_node *node,
825 ptrdiff_t begin, ptrdiff_t end) 825 ptrdiff_t begin, ptrdiff_t end)
826{ 826{
827 node->begin = begin; 827 node->begin = begin;
@@ -833,8 +833,8 @@ itree_insert_node (struct interval_tree *tree, struct interval_node *node,
833/* Safely modify a node's interval. */ 833/* Safely modify a node's interval. */
834 834
835void 835void
836interval_node_set_region (struct interval_tree *tree, 836interval_node_set_region (struct itree_tree *tree,
837 struct interval_node *node, 837 struct itree_node *node,
838 ptrdiff_t begin, ptrdiff_t end) 838 ptrdiff_t begin, ptrdiff_t end)
839{ 839{
840 interval_tree_validate (tree, node); 840 interval_tree_validate (tree, node);
@@ -856,10 +856,10 @@ interval_node_set_region (struct interval_tree *tree,
856/* Return true, if NODE is a member of TREE. */ 856/* Return true, if NODE is a member of TREE. */
857 857
858static bool 858static bool
859interval_tree_contains (struct interval_tree *tree, struct interval_node *node) 859interval_tree_contains (struct itree_tree *tree, struct itree_node *node)
860{ 860{
861 eassert (node); 861 eassert (node);
862 struct interval_node *other; 862 struct itree_node *other;
863 ITREE_FOREACH (other, tree, node->begin, PTRDIFF_MAX, ASCENDING) 863 ITREE_FOREACH (other, tree, node->begin, PTRDIFF_MAX, ASCENDING)
864 if (other == node) 864 if (other == node)
865 { 865 {
@@ -871,7 +871,7 @@ interval_tree_contains (struct interval_tree *tree, struct interval_node *node)
871} 871}
872 872
873static bool 873static bool
874itree_limit_is_stable (struct interval_node *node) 874itree_limit_is_stable (struct itree_node *node)
875{ 875{
876 if (node == NULL) 876 if (node == NULL)
877 return true; 877 return true;
@@ -879,8 +879,8 @@ itree_limit_is_stable (struct interval_node *node)
879 return (newlimit == node->limit); 879 return (newlimit == node->limit);
880} 880}
881 881
882static struct interval_node* 882static struct itree_node*
883interval_tree_subtree_min (uintmax_t otick, struct interval_node *node) 883interval_tree_subtree_min (uintmax_t otick, struct itree_node *node)
884{ 884{
885 if (node == NULL) 885 if (node == NULL)
886 return node; 886 return node;
@@ -895,9 +895,9 @@ interval_tree_subtree_min (uintmax_t otick, struct interval_node *node)
895 so re-balance the parents to re-establish the RB invariants. */ 895 so re-balance the parents to re-establish the RB invariants. */
896 896
897static void 897static void
898interval_tree_remove_fix (struct interval_tree *tree, 898interval_tree_remove_fix (struct itree_tree *tree,
899 struct interval_node *node, 899 struct itree_node *node,
900 struct interval_node *parent) 900 struct itree_node *parent)
901{ 901{
902 if (parent == NULL) 902 if (parent == NULL)
903 eassert (node == tree->root); 903 eassert (node == tree->root);
@@ -910,7 +910,7 @@ interval_tree_remove_fix (struct interval_tree *tree,
910 910
911 if (node == parent->left) 911 if (node == parent->left)
912 { 912 {
913 struct interval_node *other = parent->right; 913 struct itree_node *other = parent->right;
914 914
915 if (null_safe_is_red (other)) /* case 1.a */ 915 if (null_safe_is_red (other)) /* case 1.a */
916 { 916 {
@@ -947,7 +947,7 @@ interval_tree_remove_fix (struct interval_tree *tree,
947 } 947 }
948 else 948 else
949 { 949 {
950 struct interval_node *other = parent->left; 950 struct itree_node *other = parent->left;
951 951
952 if (null_safe_is_red (other)) /* 1.b */ 952 if (null_safe_is_red (other)) /* 1.b */
953 { 953 {
@@ -991,7 +991,7 @@ interval_tree_remove_fix (struct interval_tree *tree,
991 991
992/* Return accumulated offsets of NODE's parents. */ 992/* Return accumulated offsets of NODE's parents. */
993static ptrdiff_t 993static ptrdiff_t
994itree_total_offset (struct interval_node *node) 994itree_total_offset (struct itree_node *node)
995{ 995{
996 eassert (node != NULL); 996 eassert (node != NULL);
997 ptrdiff_t offset = 0; 997 ptrdiff_t offset = 0;
@@ -1011,9 +1011,9 @@ itree_total_offset (struct interval_node *node)
1011 unchanged. Caller is responsible for recalculation of `limit`. 1011 unchanged. Caller is responsible for recalculation of `limit`.
1012 Requires both nodes to be using the same effective `offset`. */ 1012 Requires both nodes to be using the same effective `offset`. */
1013static void 1013static void
1014interval_tree_replace_child (struct interval_tree *tree, 1014interval_tree_replace_child (struct itree_tree *tree,
1015 struct interval_node *source, 1015 struct itree_node *source,
1016 struct interval_node *dest) 1016 struct itree_node *dest)
1017{ 1017{
1018 eassert (tree && dest != NULL); 1018 eassert (tree && dest != NULL);
1019 eassert (source == NULL 1019 eassert (source == NULL
@@ -1037,9 +1037,9 @@ interval_tree_replace_child (struct interval_tree *tree,
1037 recalculation of `limit`. Requires both nodes to be using the same 1037 recalculation of `limit`. Requires both nodes to be using the same
1038 effective `offset`. */ 1038 effective `offset`. */
1039static void 1039static void
1040interval_tree_transplant (struct interval_tree *tree, 1040interval_tree_transplant (struct itree_tree *tree,
1041 struct interval_node *source, 1041 struct itree_node *source,
1042 struct interval_node *dest) 1042 struct itree_node *dest)
1043{ 1043{
1044 interval_tree_replace_child (tree, source, dest); 1044 interval_tree_replace_child (tree, source, dest);
1045 source->left = dest->left; 1045 source->left = dest->left;
@@ -1053,8 +1053,8 @@ interval_tree_transplant (struct interval_tree *tree,
1053 1053
1054/* Remove NODE from TREE and return it. NODE must exist in TREE. */ 1054/* Remove NODE from TREE and return it. NODE must exist in TREE. */
1055 1055
1056struct interval_node* 1056struct itree_node*
1057interval_tree_remove (struct interval_tree *tree, struct interval_node *node) 1057interval_tree_remove (struct itree_tree *tree, struct itree_node *node)
1058{ 1058{
1059 eassert (interval_tree_contains (tree, node)); 1059 eassert (interval_tree_contains (tree, node));
1060 eassert (check_tree (tree, true)); /* FIXME: Too expensive. */ 1060 eassert (check_tree (tree, true)); /* FIXME: Too expensive. */
@@ -1063,7 +1063,7 @@ interval_tree_remove (struct interval_tree *tree, struct interval_node *node)
1063 `node` has at most one child this is `node` itself. Otherwise, 1063 `node` has at most one child this is `node` itself. Otherwise,
1064 it is the in order successor of `node`. */ 1064 it is the in order successor of `node`. */
1065 interval_tree_inherit_offset (tree->otick, node); 1065 interval_tree_inherit_offset (tree->otick, node);
1066 struct interval_node *splice 1066 struct itree_node *splice
1067 = (node->left == NULL || node->right == NULL) 1067 = (node->left == NULL || node->right == NULL)
1068 ? node 1068 ? node
1069 : interval_tree_subtree_min (tree->otick, node->right); 1069 : interval_tree_subtree_min (tree->otick, node->right);
@@ -1072,12 +1072,12 @@ interval_tree_remove (struct interval_tree *tree, struct interval_node *node)
1072 `subtree` will not be modified other than changing its parent to 1072 `subtree` will not be modified other than changing its parent to
1073 `splice`. */ 1073 `splice`. */
1074 eassert (splice->left == NULL || splice->right == NULL); 1074 eassert (splice->left == NULL || splice->right == NULL);
1075 struct interval_node *subtree 1075 struct itree_node *subtree
1076 = (splice->left != NULL) ? splice->left : splice->right; 1076 = (splice->left != NULL) ? splice->left : splice->right;
1077 1077
1078 /* Save a pointer to the parent of where `subtree` will eventually 1078 /* Save a pointer to the parent of where `subtree` will eventually
1079 be in `subtree_parent`. */ 1079 be in `subtree_parent`. */
1080 struct interval_node *subtree_parent 1080 struct itree_node *subtree_parent
1081 = (splice->parent != node) ? splice->parent : splice; 1081 = (splice->parent != node) ? splice->parent : splice;
1082 1082
1083 /* If `splice` is black removing it may violate Red-Black 1083 /* If `splice` is black removing it may violate Red-Black
@@ -1135,8 +1135,8 @@ itree_iterator_busy_p (void)
1135 given ORDER. Only one iterator per tree can be running at any time. */ 1135 given ORDER. Only one iterator per tree can be running at any time. */
1136 1136
1137struct itree_iterator * 1137struct itree_iterator *
1138itree_iterator_start (struct interval_tree *tree, ptrdiff_t begin, 1138itree_iterator_start (struct itree_tree *tree, ptrdiff_t begin,
1139 ptrdiff_t end, enum interval_tree_order order, 1139 ptrdiff_t end, enum itree_order order,
1140 const char *file, int line) 1140 const char *file, int line)
1141{ 1141{
1142 /* struct itree_iterator *iter = tree->iter; */ 1142 /* struct itree_iterator *iter = tree->iter; */
@@ -1181,7 +1181,7 @@ itree_iterator_finish (struct itree_iterator *iter)
1181 front_advance setting. */ 1181 front_advance setting. */
1182 1182
1183void 1183void
1184interval_tree_insert_gap (struct interval_tree *tree, 1184interval_tree_insert_gap (struct itree_tree *tree,
1185 ptrdiff_t pos, ptrdiff_t length) 1185 ptrdiff_t pos, ptrdiff_t length)
1186{ 1186{
1187 if (length <= 0 || tree->root == NULL) 1187 if (length <= 0 || tree->root == NULL)
@@ -1193,7 +1193,7 @@ interval_tree_insert_gap (struct interval_tree *tree,
1193 /* Nodes with front_advance starting at pos may mess up the tree 1193 /* Nodes with front_advance starting at pos may mess up the tree
1194 order, so we need to remove them first. */ 1194 order, so we need to remove them first. */
1195 struct interval_stack *saved = interval_stack_create (0); 1195 struct interval_stack *saved = interval_stack_create (0);
1196 struct interval_node *node = NULL; 1196 struct itree_node *node = NULL;
1197 ITREE_FOREACH (node, tree, pos, pos + 1, PRE_ORDER) 1197 ITREE_FOREACH (node, tree, pos, pos + 1, PRE_ORDER)
1198 { 1198 {
1199 if (node->begin == pos && node->front_advance 1199 if (node->begin == pos && node->front_advance
@@ -1265,7 +1265,7 @@ interval_tree_insert_gap (struct interval_tree *tree,
1265 intersecting it. */ 1265 intersecting it. */
1266 1266
1267void 1267void
1268interval_tree_delete_gap (struct interval_tree *tree, 1268interval_tree_delete_gap (struct itree_tree *tree,
1269 ptrdiff_t pos, ptrdiff_t length) 1269 ptrdiff_t pos, ptrdiff_t length)
1270{ 1270{
1271 if (length <= 0 || tree->root == NULL) 1271 if (length <= 0 || tree->root == NULL)
@@ -1277,7 +1277,7 @@ interval_tree_delete_gap (struct interval_tree *tree,
1277 might unintentionally bring shifted nodes back into our search space. */ 1277 might unintentionally bring shifted nodes back into our search space. */
1278 const int size = interval_tree_max_height (tree) + 1; 1278 const int size = interval_tree_max_height (tree) + 1;
1279 struct interval_stack *stack = interval_stack_create (size); 1279 struct interval_stack *stack = interval_stack_create (size);
1280 struct interval_node *node; 1280 struct itree_node *node;
1281 1281
1282 interval_stack_push (stack, tree->root); 1282 interval_stack_push (stack, tree->root);
1283 nodeptr_and_flag nav; 1283 nodeptr_and_flag nav;
@@ -1327,7 +1327,7 @@ interval_tree_delete_gap (struct interval_tree *tree,
1327 a NODE2 strictly bigger than NODE1 should also be included). */ 1327 a NODE2 strictly bigger than NODE1 should also be included). */
1328 1328
1329static inline bool 1329static inline bool
1330interval_node_intersects (const struct interval_node *node, 1330interval_node_intersects (const struct itree_node *node,
1331 ptrdiff_t begin, ptrdiff_t end) 1331 ptrdiff_t begin, ptrdiff_t end)
1332{ 1332{
1333 return (begin < node->end && node->begin < end) 1333 return (begin < node->end && node->begin < end)
@@ -1337,13 +1337,13 @@ interval_node_intersects (const struct interval_node *node,
1337/* Return the next node of the iterator in the order given when it was 1337/* Return the next node of the iterator in the order given when it was
1338 started; or NULL if there are no more nodes. */ 1338 started; or NULL if there are no more nodes. */
1339 1339
1340struct interval_node * 1340struct itree_node *
1341itree_iterator_next (struct itree_iterator *g) 1341itree_iterator_next (struct itree_iterator *g)
1342{ 1342{
1343 eassert (g->running); 1343 eassert (g->running);
1344 1344
1345 struct interval_node * const null = NULL; 1345 struct itree_node * const null = NULL;
1346 struct interval_node *node; 1346 struct itree_node *node;
1347 1347
1348 /* The `visited` flag stored in each node is used here (and only here): 1348 /* The `visited` flag stored in each node is used here (and only here):
1349 We keep a "workstack" of nodes we need to consider. This stack 1349 We keep a "workstack" of nodes we need to consider. This stack
@@ -1363,8 +1363,8 @@ itree_iterator_next (struct itree_iterator *g)
1363 visited = nav_flag (nav), 1363 visited = nav_flag (nav),
1364 node && !visited)) 1364 node && !visited))
1365 { 1365 {
1366 struct interval_node * const left = node->left; 1366 struct itree_node * const left = node->left;
1367 struct interval_node * const right = node->right; 1367 struct itree_node * const right = node->right;
1368 1368
1369 interval_tree_inherit_offset (g->otick, node); 1369 interval_tree_inherit_offset (g->otick, node);
1370 eassert (itree_limit_is_stable (node)); 1370 eassert (itree_limit_is_stable (node));
diff --git a/src/itree.h b/src/itree.h
index b0f7a1d193b..b4116a1fb75 100644
--- a/src/itree.h
+++ b/src/itree.h
@@ -36,15 +36,14 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
36 returns as a side-effect. See ITREE_FOREACH. 36 returns as a side-effect. See ITREE_FOREACH.
37 */ 37 */
38 38
39struct interval_node; 39struct itree_node
40struct interval_node
41{ 40{
42 /* The normal parent, left and right links found in binary trees. 41 /* The normal parent, left and right links found in binary trees.
43 See also `red`, below, which completes the Red-Black tree 42 See also `red`, below, which completes the Red-Black tree
44 representation. */ 43 representation. */
45 struct interval_node *parent; 44 struct itree_node *parent;
46 struct interval_node *left; 45 struct itree_node *left;
47 struct interval_node *right; 46 struct itree_node *right;
48 47
49 /* The following five fields comprise the interval abstraction. 48 /* The following five fields comprise the interval abstraction.
50 49
@@ -63,7 +62,7 @@ struct interval_node
63 62
64 OTICK determines whether BEGIN, END, LIMIT and OFFSET are 63 OTICK determines whether BEGIN, END, LIMIT and OFFSET are
65 considered dirty. A node is clean when its OTICK is equal to the 64 considered dirty. A node is clean when its OTICK is equal to the
66 OTICK of its tree (see struct interval_tree). Otherwise, it is 65 OTICK of its tree (see struct itree_tree). Otherwise, it is
67 dirty. 66 dirty.
68 67
69 In a clean node, BEGIN, END and LIMIT are correct buffer 68 In a clean node, BEGIN, END and LIMIT are correct buffer
@@ -95,44 +94,44 @@ struct interval_node
95 bool_bf front_advance : 1; /* Same as for marker and overlays. */ 94 bool_bf front_advance : 1; /* Same as for marker and overlays. */
96}; 95};
97 96
98struct interval_tree 97struct itree_tree
99{ 98{
100 struct interval_node *root; 99 struct itree_node *root;
101 uintmax_t otick; /* offset tick, compared with node's otick. */ 100 uintmax_t otick; /* offset tick, compared with node's otick. */
102 intmax_t size; /* Number of nodes in the tree. */ 101 intmax_t size; /* Number of nodes in the tree. */
103}; 102};
104 103
105enum interval_tree_order { 104enum itree_order {
106 ITREE_ASCENDING, 105 ITREE_ASCENDING,
107 ITREE_DESCENDING, 106 ITREE_DESCENDING,
108 ITREE_PRE_ORDER, 107 ITREE_PRE_ORDER,
109}; 108};
110 109
111void interval_node_init (struct interval_node *, bool, bool, Lisp_Object); 110void interval_node_init (struct itree_node *, bool, bool, Lisp_Object);
112ptrdiff_t interval_node_begin (struct interval_tree *, struct interval_node *); 111ptrdiff_t interval_node_begin (struct itree_tree *, struct itree_node *);
113ptrdiff_t interval_node_end (struct interval_tree *, struct interval_node *); 112ptrdiff_t interval_node_end (struct itree_tree *, struct itree_node *);
114void interval_node_set_region (struct interval_tree *, struct interval_node *, ptrdiff_t, ptrdiff_t); 113void interval_node_set_region (struct itree_tree *, struct itree_node *, ptrdiff_t, ptrdiff_t);
115struct interval_tree *interval_tree_create (void); 114struct itree_tree *interval_tree_create (void);
116void interval_tree_destroy (struct interval_tree *); 115void interval_tree_destroy (struct itree_tree *);
117intmax_t interval_tree_size (struct interval_tree *); 116intmax_t interval_tree_size (struct itree_tree *);
118void interval_tree_clear (struct interval_tree *); 117void interval_tree_clear (struct itree_tree *);
119void itree_insert_node (struct interval_tree *tree, struct interval_node *node, 118void itree_insert_node (struct itree_tree *tree, struct itree_node *node,
120 ptrdiff_t begin, ptrdiff_t end); 119 ptrdiff_t begin, ptrdiff_t end);
121struct interval_node *interval_tree_remove (struct interval_tree *, struct interval_node *); 120struct itree_node *interval_tree_remove (struct itree_tree *, struct itree_node *);
122void interval_tree_insert_gap (struct interval_tree *, ptrdiff_t, ptrdiff_t); 121void interval_tree_insert_gap (struct itree_tree *, ptrdiff_t, ptrdiff_t);
123void interval_tree_delete_gap (struct interval_tree *, ptrdiff_t, ptrdiff_t); 122void interval_tree_delete_gap (struct itree_tree *, ptrdiff_t, ptrdiff_t);
124 123
125/* Iteration functions. Almost all code should use ITREE_FOREACH 124/* Iteration functions. Almost all code should use ITREE_FOREACH
126 instead. */ 125 instead. */
127bool itree_iterator_busy_p (void); 126bool itree_iterator_busy_p (void);
128struct itree_iterator * 127struct itree_iterator *
129itree_iterator_start (struct interval_tree *tree, ptrdiff_t begin, 128itree_iterator_start (struct itree_tree *tree, ptrdiff_t begin,
130 ptrdiff_t end, enum interval_tree_order order, 129 ptrdiff_t end, enum itree_order order,
131 const char *file, int line); 130 const char *file, int line);
132void itree_iterator_narrow (struct itree_iterator *, ptrdiff_t, 131void itree_iterator_narrow (struct itree_iterator *, ptrdiff_t,
133 ptrdiff_t); 132 ptrdiff_t);
134void itree_iterator_finish (struct itree_iterator *); 133void itree_iterator_finish (struct itree_iterator *);
135struct interval_node *itree_iterator_next (struct itree_iterator *); 134struct itree_node *itree_iterator_next (struct itree_iterator *);
136 135
137/* Iterate over the intervals between BEG and END in the tree T. 136/* Iterate over the intervals between BEG and END in the tree T.
138 N will hold successive nodes. ORDER can be one of : `ASCENDING`, 137 N will hold successive nodes. ORDER can be one of : `ASCENDING`,
diff --git a/src/lisp.h b/src/lisp.h
index 7cd78712814..b256d65efcd 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -2604,7 +2604,7 @@ struct Lisp_Overlay
2604 union vectorlike_header header; 2604 union vectorlike_header header;
2605 Lisp_Object plist; 2605 Lisp_Object plist;
2606 struct buffer *buffer; /* eassert (live buffer || NULL). */ 2606 struct buffer *buffer; /* eassert (live buffer || NULL). */
2607 struct interval_node *interval; 2607 struct itree_node *interval;
2608 } GCALIGNED_STRUCT; 2608 } GCALIGNED_STRUCT;
2609 2609
2610struct Lisp_Misc_Ptr 2610struct Lisp_Misc_Ptr
diff --git a/src/pdumper.c b/src/pdumper.c
index 1a2ecea71e6..1830c6bd18b 100644
--- a/src/pdumper.c
+++ b/src/pdumper.c
@@ -2134,13 +2134,13 @@ dump_marker (struct dump_context *ctx, const struct Lisp_Marker *marker)
2134} 2134}
2135 2135
2136static dump_off 2136static dump_off
2137dump_interval_node (struct dump_context *ctx, struct interval_node *node, 2137dump_interval_node (struct dump_context *ctx, struct itree_node *node,
2138 dump_off parent_offset) 2138 dump_off parent_offset)
2139{ 2139{
2140#if CHECK_STRUCTS && !defined (HASH_interval_node_5765524F7E) 2140#if CHECK_STRUCTS && !defined (HASH_interval_node_5765524F7E)
2141# error "interval_node changed. See CHECK_STRUCTS comment in config.h." 2141# error "interval_node changed. See CHECK_STRUCTS comment in config.h."
2142#endif 2142#endif
2143 struct interval_node out; 2143 struct itree_node out;
2144 dump_object_start (ctx, &out, sizeof (out)); 2144 dump_object_start (ctx, &out, sizeof (out));
2145 if (node->parent) 2145 if (node->parent)
2146 dump_field_fixup_later (ctx, &out, node, &node->parent); 2146 dump_field_fixup_later (ctx, &out, node, &node->parent);
@@ -2161,17 +2161,17 @@ dump_interval_node (struct dump_context *ctx, struct interval_node *node,
2161 if (node->parent) 2161 if (node->parent)
2162 dump_remember_fixup_ptr_raw 2162 dump_remember_fixup_ptr_raw
2163 (ctx, 2163 (ctx,
2164 offset + dump_offsetof (struct interval_node, parent), 2164 offset + dump_offsetof (struct itree_node, parent),
2165 dump_interval_node (ctx, node->parent, offset)); 2165 dump_interval_node (ctx, node->parent, offset));
2166 if (node->left) 2166 if (node->left)
2167 dump_remember_fixup_ptr_raw 2167 dump_remember_fixup_ptr_raw
2168 (ctx, 2168 (ctx,
2169 offset + dump_offsetof (struct interval_node, left), 2169 offset + dump_offsetof (struct itree_node, left),
2170 dump_interval_node (ctx, node->left, offset)); 2170 dump_interval_node (ctx, node->left, offset));
2171 if (node->right) 2171 if (node->right)
2172 dump_remember_fixup_ptr_raw 2172 dump_remember_fixup_ptr_raw
2173 (ctx, 2173 (ctx,
2174 offset + dump_offsetof (struct interval_node, right), 2174 offset + dump_offsetof (struct itree_node, right),
2175 dump_interval_node (ctx, node->right, offset)); 2175 dump_interval_node (ctx, node->right, offset));
2176 return offset; 2176 return offset;
2177} 2177}
diff --git a/src/textprop.c b/src/textprop.c
index b34246f5bc7..45ead993a60 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -634,7 +634,7 @@ get_char_property_and_overlay (Lisp_Object position, register Lisp_Object prop,
634 if (BUFFERP (object)) 634 if (BUFFERP (object))
635 { 635 {
636 struct buffer *b = XBUFFER (object); 636 struct buffer *b = XBUFFER (object);
637 struct interval_node *node; 637 struct itree_node *node;
638 struct sortvec items[2]; 638 struct sortvec items[2];
639 struct sortvec *result = NULL; 639 struct sortvec *result = NULL;
640 Lisp_Object result_tem = Qnil; 640 Lisp_Object result_tem = Qnil;
diff --git a/src/xdisp.c b/src/xdisp.c
index d585d57fd05..ca7e2820f42 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -6534,7 +6534,7 @@ load_overlay_strings (struct it *it, ptrdiff_t charpos)
6534 struct overlay_entry entriesbuf[20]; 6534 struct overlay_entry entriesbuf[20];
6535 ptrdiff_t size = ARRAYELTS (entriesbuf); 6535 ptrdiff_t size = ARRAYELTS (entriesbuf);
6536 struct overlay_entry *entries = entriesbuf; 6536 struct overlay_entry *entries = entriesbuf;
6537 struct interval_node *node; 6537 struct itree_node *node;
6538 6538
6539 USE_SAFE_ALLOCA; 6539 USE_SAFE_ALLOCA;
6540 6540
@@ -7001,7 +7001,7 @@ back_to_previous_line_start (struct it *it)
7001static bool 7001static bool
7002strings_with_newlines (ptrdiff_t startpos, ptrdiff_t endpos, struct window *w) 7002strings_with_newlines (ptrdiff_t startpos, ptrdiff_t endpos, struct window *w)
7003{ 7003{
7004 struct interval_node *node; 7004 struct itree_node *node;
7005 /* Process overlays. */ 7005 /* Process overlays. */
7006 ITREE_FOREACH (node, current_buffer->overlays, startpos, endpos, DESCENDING) 7006 ITREE_FOREACH (node, current_buffer->overlays, startpos, endpos, DESCENDING)
7007 { 7007 {