X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6ea48c514e0b911113020c76fdb83b64f5941ddb..0b822969a677939811d9fb966177031fb5fc625b:/include/wx/stream.h diff --git a/include/wx/stream.h b/include/wx/stream.h index 2452244060..e4838d263c 100644 --- a/include/wx/stream.h +++ b/include/wx/stream.h @@ -21,9 +21,9 @@ #include "wx/string.h" #include "wx/filefn.h" // for wxFileOffset, wxInvalidOffset and wxSeekMode -class WXDLLIMPEXP_BASE wxStreamBase; -class WXDLLIMPEXP_BASE wxInputStream; -class WXDLLIMPEXP_BASE wxOutputStream; +class WXDLLIMPEXP_FWD_BASE wxStreamBase; +class WXDLLIMPEXP_FWD_BASE wxInputStream; +class WXDLLIMPEXP_FWD_BASE wxOutputStream; typedef wxInputStream& (*__wxInputManip)(wxInputStream&); typedef wxOutputStream& (*__wxOutputManip)(wxOutputStream&); @@ -52,7 +52,7 @@ const int wxEOF = -1; // wxStreamBase: common (but non virtual!) base for all stream classes // --------------------------------------------------------------------------- -class WXDLLIMPEXP_BASE wxStreamBase +class WXDLLIMPEXP_BASE wxStreamBase : public wxObject { public: wxStreamBase(); @@ -82,6 +82,7 @@ protected: friend class wxStreamBuffer; + DECLARE_ABSTRACT_CLASS(wxStreamBase) DECLARE_NO_COPY_CLASS(wxStreamBase) }; @@ -216,6 +217,7 @@ protected: friend class wxStreamBuffer; + DECLARE_ABSTRACT_CLASS(wxInputStream) DECLARE_NO_COPY_CLASS(wxInputStream) }; @@ -251,6 +253,7 @@ protected: friend class wxStreamBuffer; + DECLARE_ABSTRACT_CLASS(wxOutputStream) DECLARE_NO_COPY_CLASS(wxOutputStream) }; @@ -278,6 +281,7 @@ protected: size_t m_currentPos; + DECLARE_DYNAMIC_CLASS(wxCountingOutputStream) DECLARE_NO_COPY_CLASS(wxCountingOutputStream) }; @@ -303,6 +307,7 @@ protected: wxInputStream *m_parent_i_stream; bool m_owns; + DECLARE_ABSTRACT_CLASS(wxFilterInputStream) DECLARE_NO_COPY_CLASS(wxFilterInputStream) }; @@ -324,6 +329,7 @@ protected: wxOutputStream *m_parent_o_stream; bool m_owns; + DECLARE_ABSTRACT_CLASS(wxFilterOutputStream) DECLARE_NO_COPY_CLASS(wxFilterOutputStream) }; @@ -348,12 +354,12 @@ public: virtual const wxChar * const *GetProtocols(wxStreamProtocolType type = wxSTREAM_PROTOCOL) const = 0; - bool CanHandle(const wxChar *protocol, + bool CanHandle(const wxString& protocol, wxStreamProtocolType type = wxSTREAM_PROTOCOL) const; protected: - wxString::size_type FindExtension(const wxChar *location) const; + wxString::size_type FindExtension(const wxString& location) const; DECLARE_ABSTRACT_CLASS(wxFilterClassFactoryBase) }; @@ -368,7 +374,7 @@ public: virtual wxFilterInputStream *NewStream(wxInputStream *stream) const = 0; virtual wxFilterOutputStream *NewStream(wxOutputStream *stream) const = 0; - static const wxFilterClassFactory *Find(const wxChar *protocol, + static const wxFilterClassFactory *Find(const wxString& protocol, wxStreamProtocolType type = wxSTREAM_PROTOCOL); @@ -428,6 +434,7 @@ public: // Buffer control void ResetBuffer(); + void Truncate(); // NB: the buffer must always be allocated with malloc() if takeOwn is // true as it will be deallocated by free() @@ -437,7 +444,7 @@ public: void *GetBufferStart() const { return m_buffer_start; } void *GetBufferEnd() const { return m_buffer_end; } void *GetBufferPos() const { return m_buffer_pos; } - size_t GetBufferSize() const { return m_buffer_size; } + size_t GetBufferSize() const { return m_buffer_end - m_buffer_start; } size_t GetIntPosition() const { return m_buffer_pos - m_buffer_start; } void SetIntPosition(size_t pos) { m_buffer_pos = m_buffer_start + pos; } size_t GetLastAccess() const { return m_buffer_end - m_buffer_start; } @@ -452,7 +459,7 @@ public: // misc accessors wxStreamBase *GetStream() const { return m_stream; } - bool HasBuffer() const { return m_buffer_size != 0; } + bool HasBuffer() const { return m_buffer_start != m_buffer_end; } bool IsFixed() const { return m_fixed; } bool IsFlushable() const { return m_flushable; } @@ -492,10 +499,6 @@ protected: *m_buffer_end, *m_buffer_pos; - // the buffer size - // FIXME: isn't it the same as m_buffer_end - m_buffer_start? (VZ) - size_t m_buffer_size; - // the stream we're associated with wxStreamBase *m_stream;