X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5fec5bb62084ea8241adbc52945d812bf5e659c3..05c3f0fc73d9124061c08e3d707b4e3d6bab4ff4:/include/wx/wfstream.h diff --git a/include/wx/wfstream.h b/include/wx/wfstream.h index 249453f183..79cdb866cf 100644 --- a/include/wx/wfstream.h +++ b/include/wx/wfstream.h @@ -18,7 +18,7 @@ #include "wx/defs.h" -#if wxUSE_STREAMS && wxUSE_FILE +#if wxUSE_STREAMS #include "wx/object.h" #include "wx/string.h" @@ -26,6 +26,8 @@ #include "wx/file.h" #include "wx/ffile.h" +#if wxUSE_FILE + // ---------------------------------------------------------------------------- // wxFileStream using wxFile // ---------------------------------------------------------------------------- @@ -41,6 +43,7 @@ public: wxFileOffset GetLength() const; bool Ok() const { return m_file->IsOpened(); } + bool IsSeekable() const { return m_file->GetKind() == wxFILE_KIND_DISK; } protected: wxFileInputStream(); @@ -69,6 +72,7 @@ public: wxFileOffset GetLength() const; bool Ok() const { return m_file->IsOpened(); } + bool IsSeekable() const { return m_file->GetKind() == wxFILE_KIND_DISK; } protected: wxFileOutputStream(); @@ -84,6 +88,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 { @@ -94,6 +123,10 @@ private: DECLARE_NO_COPY_CLASS(wxFileStream) }; +#endif //wxUSE_FILE + +#if wxUSE_FFILE + // ---------------------------------------------------------------------------- // wxFFileStream using wxFFile // ---------------------------------------------------------------------------- @@ -109,6 +142,7 @@ public: wxFileOffset GetLength() const; bool Ok() const { return m_file->IsOpened(); } + bool IsSeekable() const { return m_file->GetKind() == wxFILE_KIND_DISK; } protected: wxFFileInputStream(); @@ -137,6 +171,7 @@ public: wxFileOffset GetLength() const; bool Ok() const { return m_file->IsOpened(); } + bool IsSeekable() const { return m_file->GetKind() == wxFILE_KIND_DISK; } protected: wxFFileOutputStream(); @@ -162,6 +197,8 @@ private: DECLARE_NO_COPY_CLASS(wxFFileStream) }; -#endif // wxUSE_STREAMS && wxUSE_FILE +#endif //wxUSE_FFILE + +#endif // wxUSE_STREAMS #endif // _WX_WXFSTREAM_H__