X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=XMLTreeBuilder.cpp;h=9f7d060a8cd1638f4543b3a5a742abd00320f236;hb=f32808a35be7a1e62830a5972473178014fa44e5;hp=9c0fc6a0a5d13188578aa399ec0c96bda6dca4f0;hpb=1413ae2197d87e87571c9d8d6fc9f20f691fcea3;p=SXSI%2FXMLTree.git diff --git a/XMLTreeBuilder.cpp b/XMLTreeBuilder.cpp index 9c0fc6a..9f7d060 100644 --- a/XMLTreeBuilder.cpp +++ b/XMLTreeBuilder.cpp @@ -1,6 +1,7 @@ #include "basics.h" #include "XMLTreeBuilder.h" - +#include "timings.h" +using std::string; XMLTreeBuilder::~XMLTreeBuilder(){ @@ -14,7 +15,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 +29,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 +58,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 +138,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++;