X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8907154c1a8a6882c6797d1f16393ddfb23e7f3a..8e509c4b0c60bc066958574e4122a3db8ffcf491:/include/wx/zstream.h?ds=sidebyside diff --git a/include/wx/zstream.h b/include/wx/zstream.h index 74ece7fb5b..fd3cb5eb0a 100644 --- a/include/wx/zstream.h +++ b/include/wx/zstream.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: zstream.h +// Name: wx/zstream.h // Purpose: Memory stream classes // Author: Guilhem Lavaux // Modified by: Mike Wetherell @@ -39,6 +39,7 @@ enum { class WXDLLIMPEXP_BASE wxZlibInputStream: public wxFilterInputStream { public: wxZlibInputStream(wxInputStream& stream, int flags = wxZLIB_AUTO); + wxZlibInputStream(wxInputStream *stream, int flags = wxZLIB_AUTO); virtual ~wxZlibInputStream(); char Peek() { return wxInputStream::Peek(); } @@ -50,6 +51,9 @@ class WXDLLIMPEXP_BASE wxZlibInputStream: public wxFilterInputStream { size_t OnSysRead(void *buffer, size_t size); wxFileOffset OnSysTell() const { return m_pos; } + private: + void Init(int flags); + protected: size_t m_z_size; unsigned char *m_z_buffer; @@ -65,6 +69,7 @@ class WXDLLIMPEXP_BASE wxZlibInputStream: public wxFilterInputStream { class WXDLLIMPEXP_BASE wxZlibOutputStream: public wxFilterOutputStream { public: wxZlibOutputStream(wxOutputStream& stream, int level = -1, int flags = wxZLIB_ZLIB); + wxZlibOutputStream(wxOutputStream *stream, int level = -1, int flags = wxZLIB_ZLIB); virtual ~wxZlibOutputStream() { Close(); } void Sync() { DoFlush(false); } @@ -79,6 +84,9 @@ class WXDLLIMPEXP_BASE wxZlibOutputStream: public wxFilterOutputStream { virtual void DoFlush(bool final); + private: + void Init(int level, int flags); + protected: size_t m_z_size; unsigned char *m_z_buffer; @@ -88,6 +96,48 @@ class WXDLLIMPEXP_BASE wxZlibOutputStream: public wxFilterOutputStream { DECLARE_NO_COPY_CLASS(wxZlibOutputStream) }; +class WXDLLIMPEXP_BASE wxZlibClassFactory: public wxFilterClassFactory +{ +public: + wxZlibClassFactory(); + + wxFilterInputStream *NewStream(wxInputStream& stream) const + { return new wxZlibInputStream(stream); } + wxFilterOutputStream *NewStream(wxOutputStream& stream) const + { return new wxZlibOutputStream(stream, -1); } + wxFilterInputStream *NewStream(wxInputStream *stream) const + { return new wxZlibInputStream(stream); } + wxFilterOutputStream *NewStream(wxOutputStream *stream) const + { return new wxZlibOutputStream(stream, -1); } + + const wxChar * const *GetProtocols(wxStreamProtocolType type + = wxSTREAM_PROTOCOL) const; + +private: + DECLARE_DYNAMIC_CLASS(wxZlibClassFactory) +}; + +class WXDLLIMPEXP_BASE wxGzipClassFactory: public wxFilterClassFactory +{ +public: + wxGzipClassFactory(); + + wxFilterInputStream *NewStream(wxInputStream& stream) const + { return new wxZlibInputStream(stream); } + wxFilterOutputStream *NewStream(wxOutputStream& stream) const + { return new wxZlibOutputStream(stream, -1); } + wxFilterInputStream *NewStream(wxInputStream *stream) const + { return new wxZlibInputStream(stream); } + wxFilterOutputStream *NewStream(wxOutputStream *stream) const + { return new wxZlibOutputStream(stream, -1); } + + const wxChar * const *GetProtocols(wxStreamProtocolType type + = wxSTREAM_PROTOCOL) const; + +private: + DECLARE_DYNAMIC_CLASS(wxGzipClassFactory) +}; + #endif // wxUSE_ZLIB && wxUSE_STREAMS