Add auxiliary function to export tag symbol
authorkim <kim@3cdefd35-fc62-479d-8e8d-bae585ffb9ca>
Fri, 18 Feb 2011 12:59:13 +0000 (12:59 +0000)
committerkim <kim@3cdefd35-fc62-479d-8e8d-bae585ffb9ca>
Fri, 18 Feb 2011 12:59:13 +0000 (12:59 +0000)
git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/XMLTree@1009 3cdefd35-fc62-479d-8e8d-bae585ffb9ca

XMLTree.h

index 93999a6..90f6b15 100644 (file)
--- a/XMLTree.h
+++ b/XMLTree.h
@@ -228,6 +228,11 @@ public:
           return TagName->size();\r
    }\r
 \r
+   int TagsBinaryLength(){ return tags_blen; };\r
+   unsigned int TagStructLength(){ return uint_len(tags_blen,tags_len); };\r
+   unsigned int * TagStruct() { return tags_fix; };\r
+\r
+\r
    /** SubtreeSize(x): the number of nodes (and attributes) in the subtree of \r
     * node x. */\r
    int SubtreeSize(treeNode x);\r
@@ -340,7 +345,7 @@ public:
 \r
    treeNode SelectFollowingBelow(treeNode x, TagIdSet * tags, treeNode ancestor);\r
 \r
-   treeNode TaggedFollowingBefore(treeNode x, TagType tag,treeNode closing);\r
+   //   treeNode TaggedFollowingBefore(treeNode x, TagType tag,treeNode closing);\r
 \r
    treeNode SelectFollowingBefore(treeNode x, TagIdSet * tags, treeNode closing);\r
 \r
@@ -530,7 +535,10 @@ public:
    inline TagType Tag(treeNode x) const throw () {\r
          if (tags_blen == 8)\r
                  return  (TagType) (((uchar*)tags_fix)[(int) x]);\r
-         else { \r
+         else \r
+                 return get_field(tags_fix, tags_blen, x);\r
+                 /*\r
+                 { \r
          size_t idxlen = x * tags_blen;\r
          size_t j = idxlen % W;\r
          size_t i = idxlen / W; \r
@@ -540,7 +548,7 @@ public:
          return (offset2 >= 0)\r
                  ? ( w << offset2 ) >> offset\r
                  : ( w >> j) | (tags_fix[i+1] << (W+offset2)) >> offset;\r
-         }; \r
+                 }; */\r
 \r
   }\r
 \r
@@ -615,7 +623,7 @@ public:
          return (fast_is_ancestor(Par,x,y) ? y : NULLT);\r
   };\r
   \r
-  inline treeNode TaggedFollowingBelow(treeNode x, TagType tag,treeNode ancestor)\r
+  inline treeNode TaggedFollowingBelow(treeNode x, TagType tag, treeNode ancestor)\r
   {\r
          treeNode close = fast_find_close(Par, x);\r
          treeNode s = tagpos2node(Tags->select_next(tag, close));\r
@@ -623,6 +631,15 @@ public:
          if (ancestor == Root() || s == NULLT || s < fast_find_close(Par,ancestor)) return s;\r
          else return NULLT;\r
   };\r
+\r
+  inline treeNode TaggedFollowingBefore(treeNode x, TagType tag, treeNode ancestor_closing)\r
+  {\r
+         treeNode close = fast_find_close(Par, x);\r
+         treeNode s = tagpos2node(Tags->select_next(tag, close));\r
+         \r
+         if (ancestor_closing == Root() || s == NULLT || s < ancestor_closing) return s;\r
+         else return NULLT;\r
+  };\r
     \r
 };\r
 \r