Exemplo n.º 1
0
void CRecordManager::SaveChunkSubRD(ofstream& outFile,const string& chunkName,ChunkType& subRD)
{
	int nameNum = chunkName.length();
	outFile.write((char*)&nameNum,sizeof(int));
	outFile.write(chunkName.c_str(),nameNum);
	int fileNum = subRD.size();
	outFile.write((char*)&fileNum,sizeof(int));
	for (map<string,RecordData*>::iterator iter = subRD.begin();iter != subRD.end();++iter)
	{
		string strName = iter->first;
		RecordData* pData = iter->second;
		int nameNum = strName.length();
		outFile.write((char*)&nameNum,sizeof(int));
		outFile.write(strName.c_str(),strName.length());
		outFile.write((char*)&pData->ftLastWriteTime,sizeof(FILETIME));
		int parentNum = pData->m_vecParent.size();
		outFile.write((char*)&parentNum,sizeof(int));
		for (int i = 0;i<parentNum;++i)
		{
			string& strParent = pData->m_vecParent[i];
			int pNum = strParent.length();
			outFile.write((char*)&pNum,sizeof(int));
			outFile.write(strParent.c_str(),strParent.length());
		}
		int childNum = pData->m_vecChild.size();
		outFile.write((char*)&childNum,sizeof(int));
		for (int i = 0;i<childNum;++i)
		{
			string& strChild = pData->m_vecChild[i];
			int pNum = strChild.length();
			outFile.write((char*)&pNum,sizeof(int));
			outFile.write(strChild.c_str(),strChild.length());
		}
	}
}