X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d775fa82354a1f8d5db87ad1d71ab00ef7d9123c..d95c5149add596d0dec940599332a24edf96dc38:/include/wx/stream.h diff --git a/include/wx/stream.h b/include/wx/stream.h index 0d5cc56279..ca3b84eb57 100644 --- a/include/wx/stream.h +++ b/include/wx/stream.h @@ -12,10 +12,6 @@ #ifndef _WX_WXSTREAM_H__ #define _WX_WXSTREAM_H__ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma interface "stream.h" -#endif - #include "wx/defs.h" #if wxUSE_STREAMS @@ -23,7 +19,7 @@ #include #include "wx/object.h" #include "wx/string.h" -#include "wx/filefn.h" // for off_t, wxInvalidOffset and wxSeekMode +#include "wx/filefn.h" // for wxFileOffset, wxInvalidOffset and wxSeekMode class WXDLLIMPEXP_BASE wxStreamBase; class WXDLLIMPEXP_BASE wxInputStream; @@ -46,19 +42,6 @@ enum wxStreamError wxSTREAM_READ_ERROR // generic read error }; -// compatibility -#if WXWIN_COMPATIBILITY_2_2 - #define wxStream_NOERROR wxSTREAM_NOERROR - #define wxStream_EOF wxSTREAM_EOF - #define wxStream_WRITE_ERR wxSTREAM_WRITE_ERROR - #define wxStream_READ_ERR wxSTREAM_READ_ERROR - - #define wxSTREAM_NO_ERR wxSTREAM_NO_ERROR - #define wxSTREAM_NOERROR wxSTREAM_NO_ERROR - #define wxSTREAM_WRITE_ERR wxSTREAM_WRITE_ERROR - #define wxSTREAM_READ_ERR wxSTREAM_READ_ERROR -#endif // WXWIN_COMPATIBILITY_2_2 - // ============================================================================ // base stream classes: wxInputStream and wxOutputStream // ============================================================================ @@ -82,17 +65,15 @@ public: void Reset() { m_lasterror = wxSTREAM_NO_ERROR; } // this doesn't make sense for all streams, always test its return value - virtual size_t GetSize() const { return 0; } + virtual size_t GetSize() const; + virtual wxFileOffset GetLength() const { return wxInvalidOffset; } -#if WXWIN_COMPATIBILITY_2_2 - // deprecated, for compatibility only - wxStreamError LastError() const { return m_lasterror; } - size_t StreamSize() const { return GetSize(); } -#endif // WXWIN_COMPATIBILITY_2_2 + // returns true if the streams supports seeking to arbitrary offsets + virtual bool IsSeekable() const { return false; } protected: - virtual off_t OnSysSeek(off_t seek, wxSeekMode mode); - virtual off_t OnSysTell() const; + virtual wxFileOffset OnSysSeek(wxFileOffset seek, wxSeekMode mode); + virtual wxFileOffset OnSysTell() const; size_t m_lastcount; wxStreamError m_lasterror; @@ -192,10 +173,10 @@ public: // it) // // returns wxInvalidOffset on error - virtual off_t SeekI(off_t pos, wxSeekMode mode = wxFromStart); + virtual wxFileOffset SeekI(wxFileOffset pos, wxSeekMode mode = wxFromStart); // return the current position of the stream pointer or wxInvalidOffset - virtual off_t TellI() const; + virtual wxFileOffset TellI() const; // stream-like operators @@ -207,7 +188,7 @@ public: protected: // do read up to size bytes of data into the provided buffer // - // this method should return 0 if EOF has been reached or an error occured + // this method should return 0 if EOF has been reached or an error occurred // (m_lasterror should be set accordingly as well) or the number of bytes // read virtual size_t OnSysRead(void *buffer, size_t size) = 0; @@ -250,12 +231,13 @@ public: virtual wxOutputStream& Write(const void *buffer, size_t size); wxOutputStream& Write(wxInputStream& stream_in); - virtual off_t SeekO(off_t pos, wxSeekMode mode = wxFromStart); - virtual off_t TellO() const; + virtual wxFileOffset SeekO(wxFileOffset pos, wxSeekMode mode = wxFromStart); + virtual wxFileOffset TellO() const; virtual size_t LastWrite() const { return wxStreamBase::m_lastcount; } virtual void Sync(); + virtual bool Close() { return true; } wxOutputStream& operator<<(wxInputStream& out) { return Write(out); } wxOutputStream& operator<<( __wxOutputManip func) { return func(*this); } @@ -283,13 +265,13 @@ class WXDLLIMPEXP_BASE wxCountingOutputStream : public wxOutputStream public: wxCountingOutputStream(); - size_t GetSize() const; + wxFileOffset GetLength() const; bool Ok() const { return true; } protected: virtual size_t OnSysWrite(const void *buffer, size_t size); - virtual off_t OnSysSeek(off_t pos, wxSeekMode mode); - virtual off_t OnSysTell() const; + virtual wxFileOffset OnSysSeek(wxFileOffset pos, wxSeekMode mode); + virtual wxFileOffset OnSysTell() const; size_t m_currentPos; @@ -309,7 +291,7 @@ public: char Peek() { return m_parent_i_stream->Peek(); } - size_t GetSize() const { return m_parent_i_stream->GetSize(); } + wxFileOffset GetLength() const { return m_parent_i_stream->GetLength(); } wxInputStream *GetFilterInputStream() const { return m_parent_i_stream; } @@ -326,7 +308,7 @@ public: wxFilterOutputStream(wxOutputStream& stream); virtual ~wxFilterOutputStream(); - size_t GetSize() const { return m_parent_o_stream->GetSize(); } + wxFileOffset GetLength() const { return m_parent_o_stream->GetLength(); } wxOutputStream *GetFilterOutputStream() const { return m_parent_o_stream; } @@ -368,8 +350,8 @@ public: virtual char Peek(); virtual char GetChar(); virtual void PutChar(char c); - virtual off_t Tell() const; - virtual off_t Seek(off_t pos, wxSeekMode mode); + virtual wxFileOffset Tell() const; + virtual wxFileOffset Seek(wxFileOffset pos, wxSeekMode mode); // Buffer control void ResetBuffer(); @@ -406,8 +388,10 @@ public: wxInputStream *GetInputStream() const; wxOutputStream *GetOutputStream() const; +#if WXWIN_COMPATIBILITY_2_6 // deprecated, for compatibility only - wxStreamBase *Stream() { return m_stream; } + wxDEPRECATED( wxStreamBase *Stream() ); +#endif // WXWIN_COMPATIBILITY_2_6 // this constructs a dummy wxStreamBuffer, used by (and exists for) // wxMemoryStreams only, don't use! @@ -475,20 +459,23 @@ public: wxInputStream& Read(void *buffer, size_t size); // Position functions - off_t SeekI(off_t pos, wxSeekMode mode = wxFromStart); - off_t TellI() const; + wxFileOffset SeekI(wxFileOffset pos, wxSeekMode mode = wxFromStart); + wxFileOffset TellI() const; + bool IsSeekable() const { return m_parent_i_stream->IsSeekable(); } // the buffer given to the stream will be deleted by it void SetInputStreamBuffer(wxStreamBuffer *buffer); wxStreamBuffer *GetInputStreamBuffer() const { return m_i_streambuf; } +#if WXWIN_COMPATIBILITY_2_6 // deprecated, for compatibility only - wxStreamBuffer *InputStreamBuffer() const { return m_i_streambuf; } + wxDEPRECATED( wxStreamBuffer *InputStreamBuffer() const ); +#endif // WXWIN_COMPATIBILITY_2_6 protected: virtual size_t OnSysRead(void *buffer, size_t bufsize); - virtual off_t OnSysSeek(off_t seek, wxSeekMode mode); - virtual off_t OnSysTell() const; + virtual wxFileOffset OnSysSeek(wxFileOffset seek, wxSeekMode mode); + virtual wxFileOffset OnSysTell() const; wxStreamBuffer *m_i_streambuf; @@ -510,31 +497,40 @@ public: wxOutputStream& Write(const void *buffer, size_t size); // Position functions - off_t SeekO(off_t pos, wxSeekMode mode = wxFromStart); - off_t TellO() const; + wxFileOffset SeekO(wxFileOffset pos, wxSeekMode mode = wxFromStart); + wxFileOffset TellO() const; + bool IsSeekable() const { return m_parent_o_stream->IsSeekable(); } void Sync(); + bool Close(); - size_t GetSize() const; + wxFileOffset GetLength() const; // the buffer given to the stream will be deleted by it void SetOutputStreamBuffer(wxStreamBuffer *buffer); wxStreamBuffer *GetOutputStreamBuffer() const { return m_o_streambuf; } +#if WXWIN_COMPATIBILITY_2_6 // deprecated, for compatibility only - wxStreamBuffer *OutputStreamBuffer() const { return m_o_streambuf; } + wxDEPRECATED( wxStreamBuffer *OutputStreamBuffer() const ); +#endif // WXWIN_COMPATIBILITY_2_6 protected: virtual size_t OnSysWrite(const void *buffer, size_t bufsize); - virtual off_t OnSysSeek(off_t seek, wxSeekMode mode); - virtual off_t OnSysTell() const; + virtual wxFileOffset OnSysSeek(wxFileOffset seek, wxSeekMode mode); + virtual wxFileOffset OnSysTell() const; wxStreamBuffer *m_o_streambuf; DECLARE_NO_COPY_CLASS(wxBufferedOutputStream) }; +#if WXWIN_COMPATIBILITY_2_6 + inline wxStreamBase *wxStreamBuffer::Stream() { return m_stream; } + inline wxStreamBuffer *wxBufferedInputStream::InputStreamBuffer() const { return m_i_streambuf; } + inline wxStreamBuffer *wxBufferedOutputStream::OutputStreamBuffer() const { return m_o_streambuf; } +#endif // WXWIN_COMPATIBILITY_2_6 + #endif // wxUSE_STREAMS #endif // _WX_WXSTREAM_H__ -