OutputDataStream::OutputDataStream()
{
}
OutputDataStream::~OutputDataStream()
{
}
void OutputDataStream::SaveToFile(const String &Filename)
{
FILE *File = Utility::CheckedFOpen(Filename.CString(), "wb");
UINT MyLength = _Data.Length();
Utility::CheckedFWrite(&MyLength, sizeof(UINT), 1, File);
Utility::CheckedFWrite(_Data.CArray(), sizeof(BYTE), MyLength, File);
fclose(File);
}
void OutputDataStream::SaveToFileNoHeader(const String &Filename)
{
FILE *File = Utility::CheckedFOpen(Filename.CString(), "wb");
Utility::CheckedFWrite(_Data.CArray(), sizeof(BYTE), _Data.Length(), File);
fclose(File);
}
void OutputDataStream::WriteData(const BYTE *Data, UINT BytesToWrite)
{
if(BytesToWrite > 0)
{
UINT StartLength = _Data.Length();
_Data.ReSize(StartLength + BytesToWrite);
memcpy(_Data.CArray() + StartLength, Data, BytesToWrite);
}
}
OutputDataStream& operator << (OutputDataStream &S, const String &V)
{
UINT Length = V.Length();
S << Length;
S.WriteData((const BYTE *)V.CString(), Length);
return S;
}