X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/859906241dff9079dbfe73a39abda5c9aed2f150..bc07ab17bf5370f452e899128bf89cc7ca7b98f0:/include/wx/wfstream.h?ds=sidebyside diff --git a/include/wx/wfstream.h b/include/wx/wfstream.h index d0d50a608c..63c90a0961 100644 --- a/include/wx/wfstream.h +++ b/include/wx/wfstream.h @@ -12,10 +12,6 @@ #ifndef _WX_WXFSTREAM_H__ #define _WX_WXFSTREAM_H__ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma interface "wfstream.h" -#endif - #include "wx/defs.h" #if wxUSE_STREAMS @@ -38,11 +34,12 @@ public: wxFileInputStream(const wxString& ifileName); wxFileInputStream(wxFile& file); wxFileInputStream(int fd); - ~wxFileInputStream(); + virtual ~wxFileInputStream(); wxFileOffset GetLength() const; - bool Ok() const { return m_file->IsOpened(); } + bool Ok() const { return IsOk(); } + virtual bool IsOk() const { return (wxStreamBase::IsOk() && m_file->IsOpened()); } bool IsSeekable() const { return m_file->GetKind() == wxFILE_KIND_DISK; } protected: @@ -71,7 +68,8 @@ public: bool Close() { return m_file_destroy ? m_file->Close() : true; } wxFileOffset GetLength() const; - bool Ok() const { return m_file->IsOpened(); } + bool Ok() const { return IsOk(); } + virtual bool IsOk() const { return (wxStreamBase::IsOk() && m_file->IsOpened()); } bool IsSeekable() const { return m_file->GetKind() == wxFILE_KIND_DISK; } protected: @@ -88,6 +86,31 @@ protected: DECLARE_NO_COPY_CLASS(wxFileOutputStream) }; +class WXDLLIMPEXP_BASE wxTempFileOutputStream : public wxOutputStream +{ +public: + wxTempFileOutputStream(const wxString& fileName); + virtual ~wxTempFileOutputStream(); + + bool Close() { return Commit(); } + virtual bool Commit() { return m_file->Commit(); } + virtual void Discard() { m_file->Discard(); } + + wxFileOffset GetLength() const { return m_file->Length(); } + bool IsSeekable() const { return true; } + +protected: + size_t OnSysWrite(const void *buffer, size_t size); + wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode) + { return m_file->Seek(pos, mode); } + wxFileOffset OnSysTell() const { return m_file->Tell(); } + +private: + wxTempFile *m_file; + + DECLARE_NO_COPY_CLASS(wxTempFileOutputStream) +}; + class WXDLLIMPEXP_BASE wxFileStream : public wxFileInputStream, public wxFileOutputStream { @@ -112,11 +135,12 @@ public: wxFFileInputStream(const wxString& fileName, const wxChar *mode = _T("rb")); wxFFileInputStream(wxFFile& file); wxFFileInputStream(FILE *file); - ~wxFFileInputStream(); + virtual ~wxFFileInputStream(); wxFileOffset GetLength() const; - bool Ok() const { return m_file->IsOpened(); } + bool Ok() const { return IsOk(); } + virtual bool IsOk() const { return (wxStreamBase::IsOk() && m_file->IsOpened()); } bool IsSeekable() const { return m_file->GetKind() == wxFILE_KIND_DISK; } protected: @@ -145,7 +169,8 @@ public: bool Close() { return m_file_destroy ? m_file->Close() : true; } wxFileOffset GetLength() const; - bool Ok() const { return m_file->IsOpened(); } + bool Ok() const { return IsOk(); } + virtual bool IsOk() const { return (wxStreamBase::IsOk() && m_file->IsOpened()); } bool IsSeekable() const { return m_file->GetKind() == wxFILE_KIND_DISK; } protected: