summaryrefslogtreecommitdiffstats
path: root/tests/010/tree.tl
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-05-11 23:33:49 -0700
committerKaz Kylheku <kaz@kylheku.com>2021-05-11 23:33:49 -0700
commit556dd7362f7a7ccb946c87b88e0685e606c7a9a6 (patch)
tree5be2830e50d79ec1a4f95e5715909b4c6169c3df /tests/010/tree.tl
parent00e87d26df9f2cd0580b48f92db8ea93a845fbf7 (diff)
downloadtxr-556dd7362f7a7ccb946c87b88e0685e606c7a9a6.tar.gz
txr-556dd7362f7a7ccb946c87b88e0685e606c7a9a6.tar.bz2
txr-556dd7362f7a7ccb946c87b88e0685e606c7a9a6.zip
tree: streamline iteration; provide high limit.
Getting rid of tree-begin-at and tree-reset-at. Now tree-begin takes two optional parameters, for specifying high and low range. * tree.c (struct tree_diter): New members, tree and highkey. We need tree due to requiring access to the less function. If the iterator has no highkey, the iterator itself is stored in that member to indicate this. (tree_iter_mark): Mark the tree and highkey. (tree_begin): Take optional lowkey and highkey arguments, initializing iterator acordingly. (tree_begin_at): Function removed. (copy_tree_iter, replace_tree_iter): Copy tree and highkey members. The latter require special handling due to the funny convention for indicating highkey absence. (tree_reset): Take optional lowkey and highkey arguments, configuring these in the iterator being reset. (tree_reset_at): Function removed. (tree_next, tree_peek): Implement highkey semantics. (sub_tree): Simplified: from and to arguments are just passed through to tree_begin, and there is no need for a separate loop which enforces the upper limit, that now being handled by the iterator itself. (tree_begin): Update registrations of tree-begin and tree-reset; remove tree-begin-at and tree-reset-at intrinsics. * tree.h (tree_begin_at, tree_reset_at): Declarations removed. (tree_begin, tree_reset): Declarations updated. * lib.c (seq_iter_rewind, seq_iter_init_with_info, where, populate_obj_hash): Default new optional arguments in tree_begin and tree_reset calls. * parser.c (circ_backpatch): Likewise. * tests/010/tree.tl: Affected cases updated. * txr.1: Documentation updated. * share/txr/stdlib/doc-syms.tl: Regenerated.
Diffstat (limited to 'tests/010/tree.tl')
-rw-r--r--tests/010/tree.tl14
1 files changed, 7 insertions, 7 deletions
diff --git a/tests/010/tree.tl b/tests/010/tree.tl
index 38144476..b41e7973 100644
--- a/tests/010/tree.tl
+++ b/tests/010/tree.tl
@@ -84,28 +84,28 @@
(test (tree-delete tr 6) 6)
-(vtest (build (for* ((i (tree-begin-at tr 6))
+(vtest (build (for* ((i (tree-begin tr 6))
(n (tree-next i)))
(n)
((set n (tree-next i)))
(add (key n))))
(range 7 19))
-(vtest (build (for* ((i (tree-begin-at tr 0))
+(vtest (build (for* ((i (tree-begin tr 0))
(n (tree-next i)))
(n)
((set n (tree-next i)))
(add (key n))))
(rlist 0..5 7..19))
-(vtest (build (for* ((i (tree-begin-at tr 8))
+(vtest (build (for* ((i (tree-begin tr 8))
(n (tree-next i)))
(n)
((set n (tree-next i)))
(add (key n))))
(range 8 19))
-(vtest (build (for* ((i (tree-reset-at (tree-begin #T(())) tr 8))
+(vtest (build (for* ((i (tree-reset (tree-begin #T(())) tr 8))
(n (tree-next i)))
(n)
((set n (tree-next i)))
@@ -132,10 +132,10 @@
(key (tree-next t2))))
(1 2 1 2))
-(test (tree-next (tree-begin-at tr 20)) nil)
+(test (tree-next (tree-begin tr 20)) nil)
-(test (tree-next (tree-begin-at #T(()) 0)) nil)
-(test (key (tree-next (tree-begin-at #T(() 1) 1))) 1)
+(test (tree-next (tree-begin #T(()) 0)) nil)
+(test (key (tree-next (tree-begin #T(() 1) 1))) 1)
(mtest
(tree-delete tr 0) 0