diff options
| author | Matt Armstrong | 2022-10-19 15:56:07 -0700 |
|---|---|---|
| committer | Stefan Monnier | 2022-10-19 21:35:09 -0400 |
| commit | f421b58db5d34f45773a73c699b4b1a5a5b9da03 (patch) | |
| tree | 3bddc5b3bb76bb6054e30fbae30765d8211a37f8 /src | |
| parent | 06252617b2c4cc9bcdd9407f1e709a7e0908cf27 (diff) | |
| download | emacs-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.c | 4 | ||||
| -rw-r--r-- | src/buffer.c | 40 | ||||
| -rw-r--r-- | src/buffer.h | 2 | ||||
| -rw-r--r-- | src/itree.c | 160 | ||||
| -rw-r--r-- | src/itree.h | 47 | ||||
| -rw-r--r-- | src/lisp.h | 2 | ||||
| -rw-r--r-- | src/pdumper.c | 10 | ||||
| -rw-r--r-- | src/textprop.c | 2 | ||||
| -rw-r--r-- | src/xdisp.c | 4 |
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 | ||
| 6520 | static void | 6520 | static void |
| 6521 | mark_overlays (struct interval_node *node) | 6521 | mark_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 | |||
| 655 | copy_overlays (struct buffer *from, struct buffer *to) | 655 | copy_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) | |||
| 932 | void | 932 | void |
| 933 | delete_all_overlays (struct buffer *b) | 933 | delete_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) | |||
| 2436 | static void | 2436 | static void |
| 2437 | swap_buffer_overlays (struct buffer *buffer, struct buffer *other) | 2437 | swap_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 | |||
| 3026 | next_overlay_change (ptrdiff_t pos) | 3026 | next_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) | |||
| 3052 | ptrdiff_t | 3052 | ptrdiff_t |
| 3053 | previous_overlay_change (ptrdiff_t pos) | 3053 | previous_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) | |||
| 3135 | bool | 3135 | bool |
| 3136 | overlay_touches_p (ptrdiff_t pos) | 3136 | overlay_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 | |||
| 3347 | overlay_strings (ptrdiff_t pos, struct window *w, unsigned char **pstr) | 3347 | overlay_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 | |||
| 4072 | evaporate_overlays (ptrdiff_t pos) | 4072 | evaporate_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 |
| 4915 | static Lisp_Object | 4915 | static Lisp_Object |
| 4916 | make_lispy_interval_node (const struct interval_node *node) | 4916 | make_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 | ||
| 4933 | static Lisp_Object | 4933 | static Lisp_Object |
| 4934 | overlay_tree (const struct interval_tree *tree, | 4934 | overlay_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/>. */ | |||
| 135 | typedef uintptr_t nodeptr_and_flag; | 135 | typedef uintptr_t nodeptr_and_flag; |
| 136 | 136 | ||
| 137 | static inline nodeptr_and_flag | 137 | static inline nodeptr_and_flag |
| 138 | make_nav (struct interval_node *ptr, bool flag) | 138 | make_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 | ||
| 146 | static inline struct interval_node * | 146 | static inline struct itree_node * |
| 147 | nav_nodeptr (nodeptr_and_flag nav) | 147 | nav_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 | ||
| 152 | static inline bool | 152 | static 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 | ||
| 207 | static inline void | 207 | static inline void |
| 208 | interval_stack_push_flagged (struct interval_stack *stack, | 208 | interval_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 | ||
| 225 | static inline void | 225 | static inline void |
| 226 | interval_stack_push (struct interval_stack *stack, struct interval_node *node) | 226 | interval_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 | |||
| 260 | static struct itree_iterator *iter; | 260 | static struct itree_iterator *iter; |
| 261 | 261 | ||
| 262 | static int | 262 | static int |
| 263 | interval_tree_max_height (const struct interval_tree *tree) | 263 | interval_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 | ||
| 270 | static struct itree_iterator * | 270 | static struct itree_iterator * |
| 271 | itree_iterator_create (struct interval_tree *tree) | 271 | itree_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 | ||
| 302 | static struct check_subtree_result | 302 | static struct check_subtree_result |
| 303 | check_subtree (struct interval_node *node, | 303 | check_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 | */ |
| 371 | static bool | 371 | static bool |
| 372 | check_tree (struct interval_tree *tree, | 372 | check_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 | ||
| 398 | static bool | 398 | static bool |
| 399 | null_safe_is_red (struct interval_node *node) | 399 | null_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 | ||
| 404 | static bool | 404 | static bool |
| 405 | null_safe_is_black (struct interval_node *node) | 405 | null_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 | ||
| 410 | static inline ptrdiff_t | 410 | static inline ptrdiff_t |
| 411 | itree_newlimit (struct interval_node *node) | 411 | itree_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 | ||
| 425 | static void | 425 | static void |
| 426 | interval_tree_update_limit (struct interval_node *node) | 426 | interval_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 | ||
| 440 | static void | 440 | static void |
| 441 | interval_tree_inherit_offset (uintmax_t otick, struct interval_node *node) | 441 | interval_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 | ||
| 477 | static void | 477 | static void |
| 478 | interval_tree_propagate_limit (struct interval_node *node) | 478 | interval_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 | ||
| 494 | static struct interval_node* | 494 | static struct itree_node* |
| 495 | interval_tree_validate (struct interval_tree *tree, struct interval_node *node) | 495 | interval_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 | ||
| 513 | void | 513 | void |
| 514 | interval_node_init (struct interval_node *node, | 514 | interval_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 | ||
| 530 | ptrdiff_t | 530 | ptrdiff_t |
| 531 | interval_node_begin (struct interval_tree *tree, | 531 | interval_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 | ||
| 540 | ptrdiff_t | 540 | ptrdiff_t |
| 541 | interval_node_end (struct interval_tree *tree, | 541 | interval_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 | ||
| 550 | struct interval_tree* | 550 | struct itree_tree* |
| 551 | interval_tree_create (void) | 551 | interval_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 | ||
| 565 | void | 565 | void |
| 566 | interval_tree_clear (struct interval_tree *tree) | 566 | interval_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. */ |
| 585 | void | 585 | void |
| 586 | interval_tree_destroy (struct interval_tree *tree) | 586 | interval_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 | ||
| 596 | intmax_t | 596 | intmax_t |
| 597 | interval_tree_size (struct interval_tree *tree) | 597 | interval_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 | ||
| 604 | static void | 604 | static void |
| 605 | interval_tree_rotate_left (struct interval_tree *tree, | 605 | interval_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 | ||
| 647 | static void | 647 | static void |
| 648 | interval_tree_rotate_right (struct interval_tree *tree, | 648 | interval_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 | ||
| 686 | static void | 686 | static void |
| 687 | interval_tree_insert_fix (struct interval_tree *tree, | 687 | interval_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 | ||
| 765 | static void | 765 | static void |
| 766 | interval_tree_insert (struct interval_tree *tree, struct interval_node *node) | 766 | interval_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 | ||
| 823 | void | 823 | void |
| 824 | itree_insert_node (struct interval_tree *tree, struct interval_node *node, | 824 | itree_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 | ||
| 835 | void | 835 | void |
| 836 | interval_node_set_region (struct interval_tree *tree, | 836 | interval_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 | ||
| 858 | static bool | 858 | static bool |
| 859 | interval_tree_contains (struct interval_tree *tree, struct interval_node *node) | 859 | interval_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 | ||
| 873 | static bool | 873 | static bool |
| 874 | itree_limit_is_stable (struct interval_node *node) | 874 | itree_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 | ||
| 882 | static struct interval_node* | 882 | static struct itree_node* |
| 883 | interval_tree_subtree_min (uintmax_t otick, struct interval_node *node) | 883 | interval_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 | ||
| 897 | static void | 897 | static void |
| 898 | interval_tree_remove_fix (struct interval_tree *tree, | 898 | interval_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. */ |
| 993 | static ptrdiff_t | 993 | static ptrdiff_t |
| 994 | itree_total_offset (struct interval_node *node) | 994 | itree_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`. */ |
| 1013 | static void | 1013 | static void |
| 1014 | interval_tree_replace_child (struct interval_tree *tree, | 1014 | interval_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`. */ |
| 1039 | static void | 1039 | static void |
| 1040 | interval_tree_transplant (struct interval_tree *tree, | 1040 | interval_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 | ||
| 1056 | struct interval_node* | 1056 | struct itree_node* |
| 1057 | interval_tree_remove (struct interval_tree *tree, struct interval_node *node) | 1057 | interval_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 | ||
| 1137 | struct itree_iterator * | 1137 | struct itree_iterator * |
| 1138 | itree_iterator_start (struct interval_tree *tree, ptrdiff_t begin, | 1138 | itree_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 | ||
| 1183 | void | 1183 | void |
| 1184 | interval_tree_insert_gap (struct interval_tree *tree, | 1184 | interval_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 | ||
| 1267 | void | 1267 | void |
| 1268 | interval_tree_delete_gap (struct interval_tree *tree, | 1268 | interval_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 | ||
| 1329 | static inline bool | 1329 | static inline bool |
| 1330 | interval_node_intersects (const struct interval_node *node, | 1330 | interval_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 | ||
| 1340 | struct interval_node * | 1340 | struct itree_node * |
| 1341 | itree_iterator_next (struct itree_iterator *g) | 1341 | itree_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 | ||
| 39 | struct interval_node; | 39 | struct itree_node |
| 40 | struct 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 | ||
| 98 | struct interval_tree | 97 | struct 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 | ||
| 105 | enum interval_tree_order { | 104 | enum 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 | ||
| 111 | void interval_node_init (struct interval_node *, bool, bool, Lisp_Object); | 110 | void interval_node_init (struct itree_node *, bool, bool, Lisp_Object); |
| 112 | ptrdiff_t interval_node_begin (struct interval_tree *, struct interval_node *); | 111 | ptrdiff_t interval_node_begin (struct itree_tree *, struct itree_node *); |
| 113 | ptrdiff_t interval_node_end (struct interval_tree *, struct interval_node *); | 112 | ptrdiff_t interval_node_end (struct itree_tree *, struct itree_node *); |
| 114 | void interval_node_set_region (struct interval_tree *, struct interval_node *, ptrdiff_t, ptrdiff_t); | 113 | void interval_node_set_region (struct itree_tree *, struct itree_node *, ptrdiff_t, ptrdiff_t); |
| 115 | struct interval_tree *interval_tree_create (void); | 114 | struct itree_tree *interval_tree_create (void); |
| 116 | void interval_tree_destroy (struct interval_tree *); | 115 | void interval_tree_destroy (struct itree_tree *); |
| 117 | intmax_t interval_tree_size (struct interval_tree *); | 116 | intmax_t interval_tree_size (struct itree_tree *); |
| 118 | void interval_tree_clear (struct interval_tree *); | 117 | void interval_tree_clear (struct itree_tree *); |
| 119 | void itree_insert_node (struct interval_tree *tree, struct interval_node *node, | 118 | void 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); |
| 121 | struct interval_node *interval_tree_remove (struct interval_tree *, struct interval_node *); | 120 | struct itree_node *interval_tree_remove (struct itree_tree *, struct itree_node *); |
| 122 | void interval_tree_insert_gap (struct interval_tree *, ptrdiff_t, ptrdiff_t); | 121 | void interval_tree_insert_gap (struct itree_tree *, ptrdiff_t, ptrdiff_t); |
| 123 | void interval_tree_delete_gap (struct interval_tree *, ptrdiff_t, ptrdiff_t); | 122 | void 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. */ |
| 127 | bool itree_iterator_busy_p (void); | 126 | bool itree_iterator_busy_p (void); |
| 128 | struct itree_iterator * | 127 | struct itree_iterator * |
| 129 | itree_iterator_start (struct interval_tree *tree, ptrdiff_t begin, | 128 | itree_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); |
| 132 | void itree_iterator_narrow (struct itree_iterator *, ptrdiff_t, | 131 | void itree_iterator_narrow (struct itree_iterator *, ptrdiff_t, |
| 133 | ptrdiff_t); | 132 | ptrdiff_t); |
| 134 | void itree_iterator_finish (struct itree_iterator *); | 133 | void itree_iterator_finish (struct itree_iterator *); |
| 135 | struct interval_node *itree_iterator_next (struct itree_iterator *); | 134 | struct 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 | ||
| 2610 | struct Lisp_Misc_Ptr | 2610 | struct 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 | ||
| 2136 | static dump_off | 2136 | static dump_off |
| 2137 | dump_interval_node (struct dump_context *ctx, struct interval_node *node, | 2137 | dump_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) | |||
| 7001 | static bool | 7001 | static bool |
| 7002 | strings_with_newlines (ptrdiff_t startpos, ptrdiff_t endpos, struct window *w) | 7002 | strings_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 | { |