Add wxLZMAOutputStream for compressing data using LZMA

As liblzma API is similar to zlib API, this class is also close to
wxZlibOutputStream, except that it uses reusable functions instead of
repeating their code.
This commit is contained in:
Vadim Zeitlin
2018-03-30 01:57:02 +02:00
parent e66ade1b84
commit 50b102ffd2
4 changed files with 246 additions and 1 deletions

View File

@@ -33,7 +33,7 @@
@library{wxbase}
@category{archive,streams}
@see wxInputStream, wxZlibInputStream
@see wxInputStream, wxZlibInputStream, wxLZMAOutputStream.
@since 3.1.2
*/
@@ -58,3 +58,41 @@ public:
*/
wxLZMAInputStream(wxInputStream* stream);
};
/**
@class wxLZMAOutputStream
This filter stream compresses data using XZ format.
XZ format uses LZMA compression, making it (significantly) more efficient
than Gzip format used by wxZlibOutputStream. Output generated by this class
is compatible with xz utilities working with .xz files and also supported
by 7-Zip program, even though it is different from its native .7z format.
@library{wxbase}
@category{archive,streams}
@see wxOutputStream, wxZlibOutputStream, wxLZMAInputStream
@since 3.1.2
*/
class wxLZMAOutputStream : public wxFilterOutputStream
{
/**
Create compressing stream associated with the given underlying
stream.
This overload does not take ownership of the @a stream.
*/
wxLZMAOutputStream(wxOutputStream& stream);
/**
Create compressing stream associated with the given underlying
stream and takes ownership of it.
As with the base wxFilterOutputStream class, passing @a stream by
pointer indicates that this object takes ownership of it and will
delete it when it is itself destroyed.
*/
wxLZMAOutputStream(wxOutputStream* stream);
};