X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b23bc769d3d1943ca2b02ca90701d86b00880af9..1f0acb435592470b421b80df854fbbb08cd2853f:/include/wx/stream.h diff --git a/include/wx/stream.h b/include/wx/stream.h index e4838d263c..ed07ce61a8 100644 --- a/include/wx/stream.h +++ b/include/wx/stream.h @@ -64,7 +64,7 @@ public: bool operator!() const { return !IsOk(); } // reset the stream state - void Reset() { m_lasterror = wxSTREAM_NO_ERROR; } + void Reset(wxStreamError error = wxSTREAM_NO_ERROR) { m_lasterror = error; } // this doesn't make sense for all streams, always test its return value virtual size_t GetSize() const; @@ -83,7 +83,7 @@ protected: friend class wxStreamBuffer; DECLARE_ABSTRACT_CLASS(wxStreamBase) - DECLARE_NO_COPY_CLASS(wxStreamBase) + wxDECLARE_NO_COPY_CLASS(wxStreamBase); }; // ---------------------------------------------------------------------------- @@ -218,7 +218,7 @@ protected: friend class wxStreamBuffer; DECLARE_ABSTRACT_CLASS(wxInputStream) - DECLARE_NO_COPY_CLASS(wxInputStream) + wxDECLARE_NO_COPY_CLASS(wxInputStream); }; // ---------------------------------------------------------------------------- @@ -254,7 +254,7 @@ protected: friend class wxStreamBuffer; DECLARE_ABSTRACT_CLASS(wxOutputStream) - DECLARE_NO_COPY_CLASS(wxOutputStream) + wxDECLARE_NO_COPY_CLASS(wxOutputStream); }; // ============================================================================ @@ -282,7 +282,7 @@ protected: size_t m_currentPos; DECLARE_DYNAMIC_CLASS(wxCountingOutputStream) - DECLARE_NO_COPY_CLASS(wxCountingOutputStream) + wxDECLARE_NO_COPY_CLASS(wxCountingOutputStream); }; // --------------------------------------------------------------------------- @@ -308,7 +308,7 @@ protected: bool m_owns; DECLARE_ABSTRACT_CLASS(wxFilterInputStream) - DECLARE_NO_COPY_CLASS(wxFilterInputStream) + wxDECLARE_NO_COPY_CLASS(wxFilterInputStream); }; class WXDLLIMPEXP_BASE wxFilterOutputStream : public wxOutputStream @@ -330,7 +330,7 @@ protected: bool m_owns; DECLARE_ABSTRACT_CLASS(wxFilterOutputStream) - DECLARE_NO_COPY_CLASS(wxFilterOutputStream) + wxDECLARE_NO_COPY_CLASS(wxFilterOutputStream); }; enum wxStreamProtocolType @@ -416,7 +416,23 @@ public: read_write }; - wxStreamBuffer(wxStreamBase& stream, BufMode mode); + wxStreamBuffer(wxStreamBase& stream, BufMode mode) + { + InitWithStream(stream, mode); + } + + wxStreamBuffer(size_t bufsize, wxInputStream& stream) + { + InitWithStream(stream, read); + SetBufferIO(bufsize); + } + + wxStreamBuffer(size_t bufsize, wxOutputStream& stream) + { + InitWithStream(stream, write); + SetBufferIO(bufsize); + } + wxStreamBuffer(const wxStreamBuffer& buf); virtual ~wxStreamBuffer(); @@ -487,6 +503,9 @@ protected: // common part of several ctors void Init(); + // common part of ctors taking wxStreamBase parameter + void InitWithStream(wxStreamBase& stream, BufMode mode); + // init buffer variables to be empty void InitBuffer(); @@ -510,13 +529,8 @@ protected: m_fixed, m_flushable; -private: -// Cannot use -// DECLARE_NO_COPY_CLASS(wxStreamBuffer) -// because copy constructor is explicitly declared above; -// but no copy assignment operator is defined, so declare -// it private to prevent the compiler from defining it: - wxStreamBuffer& operator=(const wxStreamBuffer&); + + wxDECLARE_NO_ASSIGN_CLASS(wxStreamBuffer); }; // --------------------------------------------------------------------------- @@ -526,9 +540,19 @@ private: class WXDLLIMPEXP_BASE wxBufferedInputStream : public wxFilterInputStream { public: - // if a non NULL buffer is given to the stream, it will be deleted by it + // create a buffered stream on top of the specified low-level stream + // + // if a non NULL buffer is given to the stream, it will be deleted by it, + // otherwise a default 1KB buffer will be used wxBufferedInputStream(wxInputStream& stream, wxStreamBuffer *buffer = NULL); + + // ctor allowing to specify the buffer size, it's just a more convenient + // alternative to creating wxStreamBuffer, calling its SetBufferIO(bufsize) + // and using the ctor above + wxBufferedInputStream(wxInputStream& stream, size_t bufsize); + + virtual ~wxBufferedInputStream(); char Peek(); @@ -555,7 +579,7 @@ protected: wxStreamBuffer *m_i_streambuf; - DECLARE_NO_COPY_CLASS(wxBufferedInputStream) + wxDECLARE_NO_COPY_CLASS(wxBufferedInputStream); }; // ---------------------------------------------------------------------------- @@ -565,9 +589,18 @@ protected: class WXDLLIMPEXP_BASE wxBufferedOutputStream : public wxFilterOutputStream { public: - // if a non NULL buffer is given to the stream, it will be deleted by it + // create a buffered stream on top of the specified low-level stream + // + // if a non NULL buffer is given to the stream, it will be deleted by it, + // otherwise a default 1KB buffer will be used wxBufferedOutputStream(wxOutputStream& stream, wxStreamBuffer *buffer = NULL); + + // ctor allowing to specify the buffer size, it's just a more convenient + // alternative to creating wxStreamBuffer, calling its SetBufferIO(bufsize) + // and using the ctor above + wxBufferedOutputStream(wxOutputStream& stream, size_t bufsize); + virtual ~wxBufferedOutputStream(); wxOutputStream& Write(const void *buffer, size_t size); @@ -598,7 +631,7 @@ protected: wxStreamBuffer *m_o_streambuf; - DECLARE_NO_COPY_CLASS(wxBufferedOutputStream) + wxDECLARE_NO_COPY_CLASS(wxBufferedOutputStream); }; #if WXWIN_COMPATIBILITY_2_6