summaryrefslogtreecommitdiff
path: root/src/itree.h
diff options
context:
space:
mode:
authorMatt Armstrong <matt@rfc20.org>2022-10-16 16:03:30 -0700
committerStefan Monnier <monnier@iro.umontreal.ca>2022-10-17 13:03:28 -0400
commit75bfb2614d310f0708619f66f9088784f5733c49 (patch)
tree94e3bfb05554c514eb249a72bbb6ec4e583efc09 /src/itree.h
parent4020dde296b9a1e5b313c39291fdc61a4fc42d96 (diff)
downloademacs-75bfb2614d310f0708619f66f9088784f5733c49.tar.gz
Rename itree iterators with itree_iterator prefix
* src/itree.h: Rename struct interval_generator -> itree_iterator. Rename functions: itree_busy_p -> itree_iterator_busy_p, interval_tree_iter_start -> itree_iterator_start, interval_generator_narrow -> itree_iterator_narrow, interval_tree_iter_finish -> itree_iterator_finish, interval_generator_next -> itree_iterator_next. * src/itree.c: Use new names everywhere. * src/eval.c: ditto.
Diffstat (limited to 'src/itree.h')
-rw-r--r--src/itree.h34
1 files changed, 20 insertions, 14 deletions
diff --git a/src/itree.h b/src/itree.h
index 0e2e7d1f81f..f98f028ea52 100644
--- a/src/itree.h
+++ b/src/itree.h
@@ -32,8 +32,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
node.end directly, is while the node is not part of any tree.
NOTE: It is safe to read node.begin and node.end directly, if the
- node came from a generator, because it validates the nodes it
- returns as a side-effect.
+ node came from an iterator, because it validates the nodes it
+ returns as a side-effect. See ITREE_FOREACH.
*/
struct interval_node;
@@ -122,14 +122,20 @@ void interval_tree_clear (struct interval_tree *);
void itree_insert_node (struct interval_tree *tree, struct interval_node *node,
ptrdiff_t begin, ptrdiff_t end);
struct interval_node *interval_tree_remove (struct interval_tree *, struct interval_node *);
-struct interval_generator *interval_tree_iter_start (struct interval_tree *, ptrdiff_t, ptrdiff_t, enum interval_tree_order,
- const char* file, int line);
-void interval_generator_narrow (struct interval_generator *, ptrdiff_t, ptrdiff_t);
-void interval_tree_iter_finish (struct interval_generator *);
-struct interval_node *interval_generator_next (struct interval_generator *);
void interval_tree_insert_gap (struct interval_tree *, ptrdiff_t, ptrdiff_t);
void interval_tree_delete_gap (struct interval_tree *, ptrdiff_t, ptrdiff_t);
-bool itree_busy_p (void);
+
+/* Iteration functions. Almost all code should use ITREE_FOREACH
+ instead. */
+bool itree_iterator_busy_p (void);
+struct itree_iterator *
+itree_iterator_start (struct interval_tree *tree, ptrdiff_t begin,
+ ptrdiff_t end, enum interval_tree_order order,
+ const char *file, int line);
+void itree_iterator_narrow (struct itree_iterator *, ptrdiff_t,
+ ptrdiff_t);
+void itree_iterator_finish (struct itree_iterator *);
+struct interval_node *itree_iterator_next (struct itree_iterator *);
/* Iterate over the intervals between BEG and END in the tree T.
N will hold successive nodes. ORDER can be one of : `ASCENDING`,
@@ -162,16 +168,16 @@ bool itree_busy_p (void);
if (!t) \
{ } \
else \
- for (struct interval_generator *itree_iter_ \
- = interval_tree_iter_start (t, beg, end, ITREE_##order, \
+ for (struct itree_iterator *itree_iter_ \
+ = itree_iterator_start (t, beg, end, ITREE_##order, \
__FILE__, __LINE__); \
- ((n = interval_generator_next (itree_iter_)) \
- || (interval_tree_iter_finish (itree_iter_), false));)
+ ((n = itree_iterator_next (itree_iter_)) \
+ || (itree_iterator_finish (itree_iter_), false));)
#define ITREE_FOREACH_ABORT() \
- interval_tree_iter_finish (itree_iter_)
+ itree_iterator_finish (itree_iter_)
#define ITREE_FOREACH_NARROW(beg, end) \
- interval_generator_narrow (itree_iter_, beg, end)
+ itree_iterator_narrow (itree_iter_, beg, end)
#endif