aboutsummaryrefslogtreecommitdiffstats
path: root/src/itree.h
diff options
context:
space:
mode:
authorStefan Monnier2022-09-28 19:05:16 -0400
committerStefan Monnier2022-09-28 19:05:16 -0400
commitea8daec9bb8ebf3cbca35edec4e4ef7b6edac3de (patch)
tree1a34f44adca5fbf08033829dab643db6340bf296 /src/itree.h
parent800ecd4767df48beeefabccdacd089b8c4286529 (diff)
downloademacs-ea8daec9bb8ebf3cbca35edec4e4ef7b6edac3de.tar.gz
emacs-ea8daec9bb8ebf3cbca35edec4e4ef7b6edac3de.zip
itree.[ch]: Add sanity checks, comments, and minor tweaks
* src/alloc.c (mark_overlay): Add sanity check. * src/buffer.c (next_overlay_change, previous_overlay_change): Tweak code to keep the same vars for the bounds. * src/itree.c (interval_tree_clear, interval_tree_insert) (interval_tree_remove, interval_tree_insert_fix, interval_tree_remove_fix): Adjust to the `color` -> `red` change. (interval_tree_clear): Prefer `true/false` for booleans. (interval_generator_create): Use an actual `interval_tree_order` value rather than 0. (interval_generator_next): Simplify a tiny bit. Add comment. (interval_generator_narrow): Add sanity check. * src/itree.h (struct interval_node): Replace `color` field with boolean `red` field. (enum interval_tree_order): Remove unused `ITREE_DEFLT_ORDER` value. * src/pdumper.c (dump_interval_node): Adjust to the `color` -> `red` change.
Diffstat (limited to 'src/itree.h')
-rw-r--r--src/itree.h7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/itree.h b/src/itree.h
index e5d68fbfabb..8f0454dc7a4 100644
--- a/src/itree.h
+++ b/src/itree.h
@@ -45,8 +45,8 @@ struct interval_node
45 ptrdiff_t offset; /* The amount of shift to apply to this subtree. */ 45 ptrdiff_t offset; /* The amount of shift to apply to this subtree. */
46 uintmax_t otick; /* offset modified tick */ 46 uintmax_t otick; /* offset modified tick */
47 Lisp_Object data; /* Exclusively used by the client. */ 47 Lisp_Object data; /* Exclusively used by the client. */
48 enum { ITREE_RED, ITREE_BLACK } color; 48 bool_bf red : 1;
49 bool_bf visited : 1; /* For traversal via generator. */ 49 bool_bf visited : 1; /* Internal to `interval_generator_next`. */
50 bool_bf rear_advance : 1; /* Same as for marker and overlays. */ 50 bool_bf rear_advance : 1; /* Same as for marker and overlays. */
51 bool_bf front_advance : 1; /* Same as for marker and overlays. */ 51 bool_bf front_advance : 1; /* Same as for marker and overlays. */
52}; 52};
@@ -64,8 +64,7 @@ struct interval_tree
64}; 64};
65 65
66enum interval_tree_order { 66enum interval_tree_order {
67 ITREE_ASCENDING = 0, 67 ITREE_ASCENDING,
68 ITREE_DEFLT_ORDER = 0,
69 ITREE_DESCENDING, 68 ITREE_DESCENDING,
70 ITREE_PRE_ORDER, 69 ITREE_PRE_ORDER,
71}; 70};