template void IDatabase ::Save(IDataStream * stream) { stream->Write32(theDataMap.size()); stream->Write64(newKeyHint); for(DataMapType::iterator iter = theDataMap.begin(); iter != theDataMap.end(); iter++) { stream->Write64((*iter).first); stream->WriteBuf(&((*iter).second), sizeof(DataType)); } } template void IDatabase ::Load(IDataStream * stream) { UInt32 numEntries = stream->Read32(); newKeyHint = stream->Read64(); theDataMap.clear(); for(UInt32 i = 0; i < numEntries; i++) { UInt64 key = stream->Read64(); stream->ReadBuf(&(theDataMap[key]), sizeof(DataType)); } } template bool IDatabase ::SaveToFile(char * name) { IFileStream stream; if(stream.Create(name)) { Save(&stream); return true; } return false; } template bool IDatabase ::LoadFromFile(char * name) { IFileStream stream; if(stream.Open(name)) { Load(&stream); return true; } return false; }