don't return .c_str() without copying it first
[SXSI/XMLTree.git] / XMLTree.h
index a00487a..c6542a0 100644 (file)
--- a/XMLTree.h
+++ b/XMLTree.h
@@ -87,6 +87,8 @@ class XMLTree {
 \r
    /** The texts in the XML document */\r
    TextCollection *Text;\r
+   /** The texts in the XML document (cached for faster display) */\r
+   vector<string> CachedText;\r
    \r
    /** Flag indicating whether the whole data structure has been constructed or \r
     * not. If the value is true, you cannot add more texts, nodes, etc. */\r
@@ -215,7 +217,14 @@ public:
     * preorder than x and not in the subtree of x. Returns NULLT if there \r
     * is none. */\r
    treeNode TaggedFoll(treeNode x, TagType tag);\r
-   \r
+  \r
+   /** TaggedFollowingSibling(x,tag) */\r
+   treeNode TaggedFollowingSibling(treeNode x, TagType tag);\r
+\r
+   /** TaggedAncestor(x, tag): returns the closest ancestor of x tagged \r
+     * tag. Return NULLT is there is none. */\r
+   treeNode TaggedAncestor(treeNode x, TagType tag);\r
\r
    /** PrevText(x): returns the document identifier of the text to the left of \r
     * node x, or NULLT if x is the root node. */\r
    DocID PrevText(treeNode x);\r
@@ -390,6 +399,11 @@ public:
    uchar* GetText(DocID d) {\r
       return Text->GetText(d);\r
    }\r
+\r
+   uchar* GetCachedText(DocID d) {\r
+     uchar * str = (uchar*) calloc(sizeof(char),(CachedText.at(d).size() + 1));     \r
+     return (uchar*) (str);\r
+   }\r
    \r
    TextCollection *getTextCollection() {\r
       return Text;\r