X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=XMLTreeBuilder.cpp;fp=XMLTreeBuilder.cpp;h=595ca798a3a13df4341923d2b879aaac93aa9585;hb=1c40b498ddd6d66b09aff3a22b9f7ddd845250dc;hp=9c0fc6a0a5d13188578aa399ec0c96bda6dca4f0;hpb=912ff50e1d38de484b503d8ef877a49a65765ab9;p=SXSI%2FXMLTree.git diff --git a/XMLTreeBuilder.cpp b/XMLTreeBuilder.cpp index 9c0fc6a..595ca79 100644 --- a/XMLTreeBuilder.cpp +++ b/XMLTreeBuilder.cpp @@ -1,6 +1,6 @@ #include "basics.h" #include "XMLTreeBuilder.h" - +#include "timings.h" XMLTreeBuilder::~XMLTreeBuilder(){ @@ -14,7 +14,8 @@ int XMLTreeBuilder::OpenDocument(bool empty_texts, int sample_rate_text, bool dt npar = 0; parArraySize = 1; disable_tc = dtc; - + + STARTTIMER(); par_aux = (pb *)umalloc(sizeof(pb)*parArraySize); @@ -27,6 +28,7 @@ int XMLTreeBuilder::OpenDocument(bool empty_texts, int sample_rate_text, bool dt REGISTER_TAG(TagName,tIdMap,ATTRIBUTE_OPEN_TAG); REGISTER_TAG(TagName,tIdMap,PCDATA_OPEN_TAG); REGISTER_TAG(TagName,tIdMap,ATTRIBUTE_DATA_OPEN_TAG); + REGISTER_TAG(TagName,tIdMap,CLOSING_TAG); REGISTER_TAG(TagName,tIdMap,DOCUMENT_CLOSE_TAG); REGISTER_TAG(TagName,tIdMap,ATTRIBUTE_CLOSE_TAG); REGISTER_TAG(TagName,tIdMap,PCDATA_CLOSE_TAG); @@ -55,12 +57,19 @@ XMLTree *XMLTreeBuilder::CloseDocument() //npar++; // makes the text collection static + STOPTIMER(Parsing); + PRINTTIME("Parsing XML Document", Parsing); + if (!disable_tc) { assert(Text == 0); assert(TextBuilder != 0); + STARTTIMER(); Text = TextBuilder->InitTextCollection(); delete TextBuilder; TextBuilder = 0; + STOPTIMER(Building); + PRINTTIME("Building TextCollection", Building); + } XMLTree *T = new XMLTree(par_aux, @@ -128,20 +137,20 @@ int XMLTreeBuilder::NewClosingTag(string tagname) setbit(par_aux,npar,CP); // marks a new closing parenthesis - tagname.insert(0,"/"); + //tagname.insert(0,"/"); - TagIdMapIT tag_id = tIdMap->find(tagname); + //TagIdMapIT tag_id = tIdMap->find(tagname); - if (tag_id == tIdMap->end()){ - REGISTER_TAG(TagName,tIdMap,tagname); - i = TagName->size() - 1; - } - else - i = tag_id->second; + // if (tag_id == tIdMap->end()){ + // REGISTER_TAG(TagName,tIdMap,tagname); + // i = TagName->size() - 1; + // } + // else + // i = tag_id->second; tags_aux = (TagType *)urealloc(tags_aux, sizeof(TagType)*(npar + 1)); - tags_aux[npar] = i; // inserts the new tag id within the preorder sequence of tags + tags_aux[npar] = CLOSING_TAG_ID; // inserts the new tag id within the preorder sequence of tags npar++;