const char* EventLogger::getText(char * dst, size_t dst_len, EventTextFunction textF, const Uint32* theData, NodeId nodeId ) { int pos= 0; if (nodeId != 0) { BaseString::snprintf(dst, dst_len, "Node %u: ", nodeId); pos= strlen(dst); } if (dst_len-pos > 0) textF(dst+pos,dst_len-pos,theData); return dst; }
void IBRTree::SplitDoc() { ifstream textF(textFile.c_str()); map<int, ofstream *> sdhandlers; string line; int count = 0; while(!textF.eof()) { getline(textF, line); if(line == "") continue; int nid = N2SG[count]; map<int, ofstream *>::iterator si = sdhandlers.find(nid); ofstream *op; if(si == sdhandlers.end()) //if the corresponding file not exists, then create it { if(sdhandlers.size() == 500) //the number of files opened by a program is limited... { for(int k=0;k<50;k++) { map<int, ofstream *>::iterator replace = sdhandlers.begin(); replace->second->close(); sdhandlers.erase(replace); } } op = new ofstream((subdocFolder+MyTool::IntToString(nid)).c_str(), ios::app); sdhandlers[nid] = op; } else op = si->second; (*op)<<line<<endl; count++; } map<int, ofstream *>::iterator iter = sdhandlers.begin(); for(;iter != sdhandlers.end(); ++iter) { iter->second->close(); delete iter->second; } textF.close(); }