TaggedFollBelow was complete crap (by me). Rewrote it more efficiently.
authorkim <kim@3cdefd35-fc62-479d-8e8d-bae585ffb9ca>
Mon, 27 Apr 2009 09:18:24 +0000 (09:18 +0000)
committerkim <kim@3cdefd35-fc62-479d-8e8d-bae585ffb9ca>
Mon, 27 Apr 2009 09:18:24 +0000 (09:18 +0000)
git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/XMLTree@361 3cdefd35-fc62-479d-8e8d-bae585ffb9ca

XMLTree.cpp

index 2a1da84..bd728af 100644 (file)
@@ -780,18 +780,15 @@ treeNode XMLTree::TaggedFoll(treeNode x, TagType tag)
 treeNode XMLTree::TaggedFollBelow(treeNode x, TagType tag, treeNode root)\r
  {\r
 \r
-    //int r, s;\r
-    int lim = node2tagpos(find_close(Par,root));\r
-    if (x ==NULLT || x == Root())\r
-       return NULLT;\r
-                   \r
-               int s = (int) Tags->select_next(tag,find_close(Par,x));\r
-    /*r = (int) Tags->rank(tag,find_close(Par,x));\r
-    s = (int) Tags->select(tag, r+1);  // select returns -1 in case that there is no r+1-th tag.*/\r
-    if (s==-1 || s >= lim) \r
-      return NULLT;\r
-    else \r
-      return tagpos2node(s);\r
+   if (x == NULLT || x == Root()) return NULLT;\r
+   treeNode s = (treeNode) Tags->select_next(tag,find_close(Par,x));\r
+   /*int r = (int) Tags->rank(tag, find_close(Par, x));\r
+     int s = (int) Tags->select(tag, r+1); */\r
+   if (root == Root())\r
+     return s;\r
+   \r
+   if (s == NULLT || s >= find_close(Par,root)) return NULLT;\r
+   return s;\r
  } \r
 \r
 \r