+ XML_Tree->TagName = new vector<string>();\r
+ XML_Tree->tIdMap = new std::unordered_map<string,int>();\r
+ \r
+ string s;\r
+ int ntags;\r
+ \r
+ // Load the tag names\r
+ ufread(&ntags, sizeof(int), 1, fp);\r
+\r
+ for (i=0; i<ntags;i++) {\r
+ char * r = fgets(buffer,1023,fp);\r
+ if (r==NULL)\r
+ throw "Cannot read tag list";\r
+ s = (const char*) buffer;\r
+ // remove the trailing \n\r
+ s.erase(s.size()-1); \r
+ XML_Tree->TagName->push_back(s);\r
+ XML_Tree->tIdMap->insert(std::make_pair(s,i));\r
+ \r
+ };\r
+ STOPTIMER(Loading);\r
+ PRINTTIME("Loading tag names struct", Loading);\r
+ STARTTIMER();\r
+\r
+ // loads the tag structure\r
+ XML_Tree->Tags = static_sequence::load(fp);\r
+ ufread(&XML_Tree->tags_blen,sizeof(uint),1,fp);\r
+ ufread(&XML_Tree->tags_len,sizeof(uint),1,fp);\r
+ XML_Tree->tags_fix = new uint[uint_len(XML_Tree->tags_blen,XML_Tree->tags_len)];\r
+ ufread(XML_Tree->tags_fix,sizeof(uint),uint_len(XML_Tree->tags_blen,XML_Tree->tags_len),fp);\r
+\r
+ // TODO ask francisco about this\r
+ /// FIXME:UGLY tests!\r
+ uint * seq = new uint[XML_Tree->tags_len];\r
+ for(uint i=0;i<XML_Tree->tags_len;i++)\r
+ seq[i] = get_field(XML_Tree->tags_fix,XML_Tree->tags_blen,i);\r
+ //cout << "Tags test: " << XML_Tree->Tags->test(seq,XML_Tree->tags_len) << endl;\r
+ XML_Tree->Tags->test(seq,XML_Tree->tags_len);\r
+ delete [] seq;\r
+ /// End ugly tests\r
+ \r
+ STOPTIMER(Loading);\r
+ PRINTTIME("Loading tag struct", Loading);\r
+ STARTTIMER();\r