+class lex_index_count : public lex_index {
+public:
+ vector<pair<int32_t,int32_t>> tcountVector;
+ vector<pair<int32_t,int32_t>> tcount2Vector;
+ void createCounts(xml_tree * tree);
+ void print();
+};
+
+void lex_index_count::createCounts(xml_tree * tree){
+ int k;
+ int i=0;
+ while((i+1)<tagVector.size())
+ {
+ k=1;
+ while(strcmp((const char*) tree->get_text(tagVector[i]),
+ (const char*) tree->get_text(tagVector[i+1]))==0){
+ k++;
+ tcountVector.push_back(make_pair(tagVector[i],1));
+ i++;
+ }
+ if(k>1) tcountVector[i-k+1]=make_pair((tcountVector[i-k+1]).first,k);
+ tcountVector.push_back(make_pair(tagVector[i],1));
+ i++;
+ }
+ if(i<tagVector.size())
+ tcountVector.push_back(make_pair(tagVector[i],1));
+ i=0;
+ while((i+1)<tag2Vector.size())
+ {
+ k=1;
+ while(strcmp((const char*) tree->get_text(tag2Vector[i]),
+ (const char*) tree->get_text(tag2Vector[i+1]))==0){
+ k++;
+ tcount2Vector.push_back(make_pair(tag2Vector[i],1));
+ i++;
+ }
+ if(k>1) tcount2Vector[i-k+1]=make_pair((tcount2Vector[i-k+1]).first,k);
+ tcount2Vector.push_back(make_pair(tag2Vector[i],1));
+ i++;
+ }
+ if(i<tag2Vector.size())
+ tcount2Vector.push_back(make_pair(tag2Vector[i],1));
+}
+
+void lex_index_count::print(){
+ printf("%i-vector: ", tag);
+ printPairVector(tcountVector);
+ printf("%i-vector: ", tag2);
+ printPairVector(tcount2Vector);
+}
+