Use TaggedNext for full subtree iteration instead of TaggedDesc/TaggedFoll
[SXSI/xpathcomp.git] / src / nodeSet.ml
index 2716d61..e1f5476 100644 (file)
@@ -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