X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=XMLTree.cpp;h=ae80fc2a489680d270c6fba2d59939a8c9bddc00;hb=b53633fb64f387edb5cebefbb3308b6347b2389c;hp=9057e31af5f10181b78f29d1c7ca30841c9e0979;hpb=6a9117a97674437c9fe00b099c40ccb61d45d704;p=SXSI%2FXMLTree.git diff --git a/XMLTree.cpp b/XMLTree.cpp index 9057e31..ae80fc2 100644 --- a/XMLTree.cpp +++ b/XMLTree.cpp @@ -1041,23 +1041,24 @@ int XMLTree::CloseDocument() // If we found an attribute then "<@>" is present in the tree // if we didn't then it is not. "<$>" is never present in the tree - uint max_tag = 0; - for(uint i=0;i<(uint)npar-1;i++) - max_tag = max(max_tag,tags_aux[i]); - max_tag++; - tags_aux = (TagType *) urealloc(tags_aux, sizeof(TagType)*(npar + 1)); - tags_aux[npar++] = max_tag; + //uint max_tag = 0; + //for(uint i=0;i<(uint)npar-1;i++) + // max_tag = max(max_tag,tags_aux[i]); + //max_tag++; + //tags_aux = (TagType *) urealloc(tags_aux, sizeof(TagType)*(npar + 1)); + //tags_aux[npar++] = max_tag; //int ntagsize = found_attributes ? 2*ntagnames-1 : 2*ntagnames - 2; int ntagsize = 2*ntagnames + 2; //static_bitsequence_builder * bmb = new static_bitsequence_builder_brw32(20); //static_permutation_builder * pmb = new static_permutation_builder_mrrr(PERM_SAMPLE, bmb); //static_sequence_builder * ssb = new static_sequence_builder_gmr_chunk(bmb, pmb); - static_bitsequence_builder * bmb = new static_bitsequence_builder_brw32(20); + static_bitsequence_builder * bmb = new static_bitsequence_builder_sdarray(); alphabet_mapper *am = new alphabet_mapper_none(); - wt_coder * wc = new wt_coder_huff((uint*)tags_aux,npar,am); - Tags = new static_sequence_wvtree((uint*)tags_aux,npar,wc ,bmb, am); + //wt_coder * wc = new wt_coder_huff((uint*)tags_aux,npar,am); + //Tags = new static_sequence_wvtree((uint*)tags_aux,npar,wc ,bmb, am); //Tags = new static_sequence_gmr((uint *) tags_aux, (uint) npar,ntagsize, bmb, ssb); + Tags = new static_sequence_bs((uint*)tags_aux,npar,am,bmb); cout << "Tags test: " << Tags->test((uint*)tags_aux,npar) << endl; @@ -1252,7 +1253,7 @@ TagType XMLTree::GetTagId(unsigned char *tagname) // this should be changed for more efficient processing for (i=0; i= ntagnames) return NULL; // invalid tag identifier s = (unsigned char *)umalloc((strlen((const char *)TagName[tagid])+1)*sizeof(unsigned char)); strcpy((char *)s, (const char *)TagName[tagid]); @@ -1274,6 +1275,7 @@ unsigned char *XMLTree::GetTagName(TagType tagid) const unsigned char *XMLTree::GetTagNameByRef(TagType tagid) { + if(tagid==(uint)-1) return NULL; if (tagid >= ntagnames) return NULL; // invalid tag identifier return ((const unsigned char*) TagName[tagid]); }