X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=src%2FnodeSet.ml;h=e1f54769438319f70b99da1fc5cc0ca02d871cdc;hb=1975eef2d0933da3c01faec1cd14bc8fbf6bf146;hp=2716d61fe683161899be31e06b4b2b6bacf47897;hpb=4b52da1a20a4fe031930bb96d2ca46bec06dc529;p=SXSI%2Fxpathcomp.git diff --git a/src/nodeSet.ml b/src/nodeSet.ml index 2716d61..e1f5476 100644 --- a/src/nodeSet.ml +++ b/src/nodeSet.ml @@ -141,21 +141,19 @@ module Mat : S with type t = Tree.node mat = let tag_fold f tree t tag acc = let rec loop close node acc = - if node == Tree.nil then acc + if node > Tree.nil && node < close then acc else let acc = f node acc in - let acc' = loop close (Tree.tagged_descendant tree node tag) acc in - loop close (Tree.tagged_following_before tree node tag close) acc' + loop close (Tree.tagged_next tree node tag) acc in - let t = fst_tagged tree t tag in - loop (Tree.closing tree t) t acc + let t' = fst_tagged tree t tag in + loop (Tree.closing tree t) t' acc let tag_iter f tree t tag = let rec loop close node = - if node != Tree.nil then begin + if node > Tree.nil && node < close then begin f node; - loop close (Tree.tagged_descendant tree node tag); - loop close (Tree.tagged_following_before tree node tag close); + loop close (Tree.tagged_next tree node tag); end in let t' = fst_tagged tree t tag in