Add nextNodeBefore primitive.
[SXSI/XMLTree.git] / XMLTree.h
index 313f7ca..3b07aaf 100644 (file)
--- a/XMLTree.h
+++ b/XMLTree.h
@@ -773,6 +773,14 @@ public:
          else return NULLT;
   };
 
+  inline treeNode NextNodeBefore(treeNode x, treeNode ancestor_closing)
+  {
+    treeNode close = fast_find_close(Par, x);
+    int rank = rank_open(Par, close);
+    treeNode y = select_open(Par, rank+1);
+    return (y < ancestor_closing) ? y : NULLT;
+  };
+
 // TaggedSibling(x,tag): returns the first sibling of node x tagged tag, or NULLT if there is none.
 treeNode TaggedFollowingSibling(treeNode x, TagType tag)
 {