Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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();
}