Add wxTempFFile, similar to wxTempFile but using buffered I/O

Also add wxTempFFileOutputStream.

Closes #18673.
This commit is contained in:
Dummy
2020-02-21 14:52:40 +01:00
committed by Vadim Zeitlin
parent 8c574e5c2b
commit 3e0780e811
6 changed files with 395 additions and 2 deletions

View File

@@ -114,6 +114,31 @@ private:
wxDECLARE_NO_COPY_CLASS(wxTempFileOutputStream);
};
class WXDLLIMPEXP_BASE wxTempFFileOutputStream : public wxOutputStream
{
public:
wxTempFFileOutputStream(const wxString& fileName);
virtual ~wxTempFFileOutputStream();
bool Close() wxOVERRIDE { return Commit(); }
WXDLLIMPEXP_INLINE_BASE virtual bool Commit() { return m_file->Commit(); }
WXDLLIMPEXP_INLINE_BASE virtual void Discard() { m_file->Discard(); }
virtual wxFileOffset GetLength() const wxOVERRIDE { return m_file->Length(); }
virtual bool IsSeekable() const wxOVERRIDE { return true; }
protected:
virtual size_t OnSysWrite(const void *buffer, size_t size) wxOVERRIDE;
virtual wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode) wxOVERRIDE
{ return m_file->Seek(pos, mode); }
virtual wxFileOffset OnSysTell() const wxOVERRIDE { return m_file->Tell(); }
private:
wxTempFFile *m_file;
wxDECLARE_NO_COPY_CLASS(wxTempFFileOutputStream);
};
class WXDLLIMPEXP_BASE wxFileStream : public wxFileInputStream,
public wxFileOutputStream
{