From d4b3b5272a584e67df051a575d8a6a9edd8dee1e Mon Sep 17 00:00:00 2001 From: fclaude Date: Sun, 8 Mar 2009 08:54:43 +0000 Subject: [PATCH] more changes git-svn-id: svn+ssh://idea.nguyen.vg/svn/sxsi/trunk/XMLTree@220 3cdefd35-fc62-479d-8e8d-bae585ffb9ca --- XMLTree.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/XMLTree.cpp b/XMLTree.cpp index 6fee8f4..057a117 100644 --- a/XMLTree.cpp +++ b/XMLTree.cpp @@ -862,18 +862,21 @@ 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++; int ntagsize = found_attributes ? 2*ntagnames-1 : 2*ntagnames - 2; + tags_aux = (TagType *) urealloc(tags_aux, sizeof(TagType)*(npar + 1)); + tags_aux[npar++] = max_tag; static_bitsequence_builder * bmb = new static_bitsequence_builder_brw32(20); alphabet_mapper *am = new alphabet_mapper_none(); - wt_coder * wc = new wt_coder_huff((uint*)tags_aux,npar-1,am); - Tags = new static_sequence_wvtree((uint*)tags_aux,npar-1,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-1,ntagsize, bmb, ssb); - uint max_tag = 0; - for(uint i=0;i<(uint)npar-1;i++) - max_tag = max(max_tag,tags_aux[i]); tags_blen = bits(max_tag); - tags_len = (uint)npar-1; + tags_len = (uint)npar; tags_fix = new uint[uint_len(tags_blen,tags_len)]; for(uint i=0;i<(uint)npar-1;i++) set_field(tags_fix,tags_blen,i,tags_aux[i]); @@ -1061,7 +1064,7 @@ TagType XMLTree::GetTagId(unsigned char *tagname) // this should be changed for more efficient processing for (i=0; i