Added SWCSA
[SXSI/XMLTree.git] / XMLTreeBuilder.cpp
index 9c0fc6a..9f7d060 100644 (file)
@@ -1,6 +1,7 @@
 #include "basics.h"\r
 #include "XMLTreeBuilder.h"\r
-\r
+#include "timings.h"\r
+using std::string;\r
 \r
 XMLTreeBuilder::~XMLTreeBuilder(){\r
   \r
@@ -14,7 +15,8 @@ int XMLTreeBuilder::OpenDocument(bool empty_texts, int sample_rate_text, bool dt
     npar = 0;\r
     parArraySize = 1;\r
     disable_tc = dtc;\r
-    \r
+\r
+    STARTTIMER();\r
    \r
     par_aux = (pb *)umalloc(sizeof(pb)*parArraySize);\r
     \r
@@ -27,6 +29,7 @@ int XMLTreeBuilder::OpenDocument(bool empty_texts, int sample_rate_text, bool dt
     REGISTER_TAG(TagName,tIdMap,ATTRIBUTE_OPEN_TAG);\r
     REGISTER_TAG(TagName,tIdMap,PCDATA_OPEN_TAG);\r
     REGISTER_TAG(TagName,tIdMap,ATTRIBUTE_DATA_OPEN_TAG);\r
+    REGISTER_TAG(TagName,tIdMap,CLOSING_TAG);\r
     REGISTER_TAG(TagName,tIdMap,DOCUMENT_CLOSE_TAG);\r
     REGISTER_TAG(TagName,tIdMap,ATTRIBUTE_CLOSE_TAG);\r
     REGISTER_TAG(TagName,tIdMap,PCDATA_CLOSE_TAG);\r
@@ -55,12 +58,19 @@ XMLTree *XMLTreeBuilder::CloseDocument()
     //npar++;\r
     \r
     // makes the text collection static\r
+   STOPTIMER(Parsing);\r
+   PRINTTIME("Parsing XML Document", Parsing);\r
+\r
     if (!disable_tc) {\r
        assert(Text == 0);\r
        assert(TextBuilder != 0);\r
+       STARTTIMER();\r
        Text = TextBuilder->InitTextCollection();\r
        delete TextBuilder;\r
        TextBuilder = 0;\r
+       STOPTIMER(Building);\r
+       PRINTTIME("Building TextCollection", Building);\r
+\r
     }\r
     \r
     XMLTree *T = new XMLTree(par_aux,\r
@@ -128,20 +138,20 @@ int XMLTreeBuilder::NewClosingTag(string tagname)
     \r
     setbit(par_aux,npar,CP);  // marks a new closing parenthesis\r
     \r
-    tagname.insert(0,"/");\r
+    //tagname.insert(0,"/");\r
 \r
-    TagIdMapIT tag_id = tIdMap->find(tagname);    \r
+    //TagIdMapIT tag_id = tIdMap->find(tagname);    \r
 \r
-    if (tag_id == tIdMap->end()){\r
-      REGISTER_TAG(TagName,tIdMap,tagname);\r
-      i = TagName->size() - 1;\r
-    }\r
-    else\r
-      i = tag_id->second;\r
+    // if (tag_id == tIdMap->end()){\r
+    //   REGISTER_TAG(TagName,tIdMap,tagname);\r
+    //   i = TagName->size() - 1;\r
+    // }\r
+    // else\r
+    //   i = tag_id->second;\r
 \r
     tags_aux = (TagType *)urealloc(tags_aux, sizeof(TagType)*(npar + 1));\r
 \r
-    tags_aux[npar] = i; // inserts the new tag id within the preorder sequence of tags\r
+    tags_aux[npar] = CLOSING_TAG_ID; // inserts the new tag id within the preorder sequence of tags\r
     \r
     npar++;\r
 \r