X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=XMLTree.cpp;h=bb861a9765e31a34e4114013c26abbeb093b987f;hb=0f2d33d4ee4291d61750769c2918263c7e485ffa;hp=dbc4d83b7eda36016e58519efb55101301c34853;hpb=4dc580ecf57a71c74097fd7adc62e75e23f5298d;p=SXSI%2FXMLTree.git diff --git a/XMLTree.cpp b/XMLTree.cpp index dbc4d83..bb861a9 100644 --- a/XMLTree.cpp +++ b/XMLTree.cpp @@ -184,7 +184,6 @@ XMLTree *XMLTree::Load(unsigned char *filename, int sample_rate_text) // loads the tags XML_Tree->Tags = static_sequence::load(fp); - s_tree+= XML_Tree->Tags->size(); s_text = ftell(fp); @@ -201,6 +200,10 @@ XMLTree *XMLTree::Load(unsigned char *filename, int sample_rate_text) fclose(fp); std::cerr << "Tree part is " << s_tree/1024 << " Kbytes,\n" + << "with node->tagid part " << XML_Tree->Tags->size()/1024 << "Kbytes \n" + << "size of Tag part : " << XML_Tree->Tags->length () << " elements\n" + << "sizof(unsigned int)* " << XML_Tree->Tags->length () << " = " << + sizeof(unsigned int) * XML_Tree->Tags->length () / 1024 << " Kbytes\n" << "Tag part is " << s_tags/1024 << " Kbytes,\n" << "Text collection is " << s_text/1024 << " Kbytes \n"; return XML_Tree; @@ -536,6 +539,9 @@ treeNode XMLTree::TaggedFoll(treeNode x, TagType tag) } int r, s; + if (x == Root() || (next_sibling(Par,x) == -1 )) + return NULLT; + r = (int) Tags->rank(tag, node2tagpos(next_sibling(Par, x))-1); s = (int) Tags->select(tag, r+1); // select returns -1 in case that there is no r+1-th tag. if (s==-1) return NULLT;