3f66f6a5b3
This keyword is not expanded by Git which means it's not replaced with the correct revision value in the releases made using git-based scripts and it's confusing to have lines with unexpanded "$Id$" in the released files. As expanding them with Git is not that simple (it could be done with git archive and export-subst attribute) and there are not many benefits in having them in the first place, just remove all these lines. If nothing else, this will make an eventual transition to Git simpler. Closes #14487. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
149 lines
4.3 KiB
C++
149 lines
4.3 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/zstream.h
|
|
// Purpose: Memory stream classes
|
|
// Author: Guilhem Lavaux
|
|
// Modified by: Mike Wetherell
|
|
// Created: 11/07/98
|
|
// Copyright: (c) Guilhem Lavaux
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
#ifndef _WX_WXZSTREAM_H__
|
|
#define _WX_WXZSTREAM_H__
|
|
|
|
#include "wx/defs.h"
|
|
|
|
#if wxUSE_ZLIB && wxUSE_STREAMS
|
|
|
|
#include "wx/stream.h"
|
|
#include "wx/versioninfo.h"
|
|
|
|
// Compression level
|
|
enum wxZlibCompressionLevels {
|
|
wxZ_DEFAULT_COMPRESSION = -1,
|
|
wxZ_NO_COMPRESSION = 0,
|
|
wxZ_BEST_SPEED = 1,
|
|
wxZ_BEST_COMPRESSION = 9
|
|
};
|
|
|
|
// Flags
|
|
enum wxZLibFlags {
|
|
wxZLIB_NO_HEADER = 0, // raw deflate stream, no header or checksum
|
|
wxZLIB_ZLIB = 1, // zlib header and checksum
|
|
wxZLIB_GZIP = 2, // gzip header and checksum, requires zlib 1.2.1+
|
|
wxZLIB_AUTO = 3 // autodetect header zlib or gzip
|
|
};
|
|
|
|
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(); }
|
|
wxFileOffset GetLength() const { return wxInputStream::GetLength(); }
|
|
|
|
static bool CanHandleGZip();
|
|
|
|
bool SetDictionary(const char *data, const size_t datalen);
|
|
bool SetDictionary(const wxMemoryBuffer &buf);
|
|
|
|
protected:
|
|
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;
|
|
struct z_stream_s *m_inflate;
|
|
wxFileOffset m_pos;
|
|
|
|
wxDECLARE_NO_COPY_CLASS(wxZlibInputStream);
|
|
};
|
|
|
|
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); }
|
|
bool Close();
|
|
wxFileOffset GetLength() const { return m_pos; }
|
|
|
|
static bool CanHandleGZip();
|
|
|
|
bool SetDictionary(const char *data, const size_t datalen);
|
|
bool SetDictionary(const wxMemoryBuffer &buf);
|
|
|
|
protected:
|
|
size_t OnSysWrite(const void *buffer, size_t size);
|
|
wxFileOffset OnSysTell() const { return m_pos; }
|
|
|
|
virtual void DoFlush(bool final);
|
|
|
|
private:
|
|
void Init(int level, int flags);
|
|
|
|
protected:
|
|
size_t m_z_size;
|
|
unsigned char *m_z_buffer;
|
|
struct z_stream_s *m_deflate;
|
|
wxFileOffset m_pos;
|
|
|
|
wxDECLARE_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)
|
|
};
|
|
|
|
WXDLLIMPEXP_BASE wxVersionInfo wxGetZlibVersionInfo();
|
|
|
|
#endif
|
|
// wxUSE_ZLIB && wxUSE_STREAMS
|
|
|
|
#endif
|
|
// _WX_WXZSTREAM_H__
|
|
|