4
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

55 lines
1.1 KiB (Stored with Git LFS)

template <class DataType>
void IDatabase <DataType>::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 <class DataType>
void IDatabase <DataType>::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 <class DataType>
bool IDatabase <DataType>::SaveToFile(char * name)
{
IFileStream stream;
if(stream.Create(name))
{
Save(&stream);
return true;
}
return false;
}
template <class DataType>
bool IDatabase <DataType>::LoadFromFile(char * name)
{
IFileStream stream;
if(stream.Open(name))
{
Load(&stream);
return true;
}
return false;
}