Files
iostreams/doc/compression.html
Jonathan Turkanis 5b886642b4 switched to double quotes in HTML attributes
[SVN r27367]
2005-02-14 01:51:10 +00:00

108 lines
6.8 KiB
HTML
Executable File

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Compression/Decompression</TITLE>
<LINK REL="stylesheet" HREF="../../../boost.css">
<LINK REL="stylesheet" HREF="theme/iostreams.css">
</HEAD>
<BODY>
<!-- Begin Banner -->
<H1 CLASS="title">Compression/Decompression</H1>
<HR CLASS="banner">
<!-- End Banner -->
<DL class="page-index">
<DT><A href="#overview">Overview</A></DT>
<DT><A href="#acknowledgments">Acknowledgments</A></DT>
<DT><A href="#headers">Headers</A></DT>
<DT><A href="#installation">Installation</A></DT>
<DT>Reference
<DL class="page-index">
<DT><A HREF="classes/zlib.html">Zlib Filters</A></DT>
<DT><A HREF="classes/gzip.html">Gzip Filters</A></DT>
<DT><A HREF="classes/bzip2.html">Bzip2 Filters</A></DT>
</DL>
</DT>
</DL>
<A NAME="overview">
<H2>Overview</H2>
<P>
The Boost Iostreams Library provides three pairs of Filters for compression/decompression. The class templates <A HREF="classes/zlib.html#basic_zlib_compressor"><CODE>basic_zlib_compressor</CODE></A> and <A HREF="classes/zlib.html#basic_zlib_decompressor"><CODE>basic_zlib_decompressor</CODE></A> perform compression and decompression in the Z<SPAN STYLE="font-size:80%">LIB</SPAN> format (<A CLASS="bib_ref" HREF="bibliography.html#deutsch1">[Deutsch1]</A>) using Jean-loup Gailly's and Mark Adler's zlib compression library (<A CLASS="bib_ref" HREF="bibliography.html#gailly">[Gailly]</A>). The class templates <A HREF="classes/gzip.html#basic_gzip_compressor"><CODE>basic_gzip_compressor</CODE></A> and <A HREF="classes/gzip.html#basic_gzip_decompressor"><CODE>basic_gzip_decompressor</CODE></A> perform compression and decompression in the G<SPAN STYLE="font-size:80%">ZIP</SPAN> format (<A CLASS="bib_ref" HREF="bibliography.html#deutsch3">[Deutsch3]</A>), also using zlib. The class templates <A HREF="classes/bzip2.html#basic_bzip2_compressor"><CODE>basic_bzip2_compressor</CODE></A> and <A HREF="classes/bzip2.html#basic_bzip2_decompressor"><CODE>basic_bzip2_decompressor</CODE></A> perform compression and decompression in the B<SPAN STYLE="font-size:80%">ZIP2</SPAN> format using Julian Seward' libbzip2 compression library (<A CLASS="bib_ref" HREF="bibliography.html#seward">[Seward]</A>).
</P>
<P>
All the compression/decompression Filters are <A HREF="concepts/dual_use_filter.html">DualUseFilters</A> so that they may be used for either input or output.<A CLASS="footnote_ref" NAME="note_1_ref" HREF="#note_1"><SUP>[1]</SUP></A> Most commonly, however, the compression Filters will be used for output and the decompression Filters for input.
</P>
<A NAME="acknowledgments">
<H2>Acknowledgments</H2>
<P>
The compression/decompression Filters were influences by the work of Jeff Garland (<A CLASS="bib_ref" HREF="bibliography.html#garland">[Garland]</A>) and Jonathan de Halleux (<A CLASS="bib_ref" HREF="bibliography.html#de_halleux">[de Halleux]</A>). Thanks also to <A HREF="mailto:jloup@gailly.net">Jean-loup Gailly</A> and <A HREF="mailto:&#109;&#097;&#100;&#108;&#101;&#114;&#064;&#097;&#108;&#117;&#109;&#110;&#105;&#046;&#099;&#097;&#108;&#116;&#101;&#099;&#104;&#046;&#101;&#100;&#117;">Mark Adler</A> and to <A HREF="mailto:jseward@acm.org">Julian Seward</A> for making their excellent librarys available to the public with <A HREF="http://www.boost.org/more/lib_guide.htm#Requirements">Boost-compatible</A> licenses.
</P>
<!-- Adler's obfuscated address is copied from his homepage -->
<A NAME="headers">
<H2>Headers</H2>
<DL>
<DT><A CLASS="header" HREF="../../../boost/iostreams/filter/zlib.hpp"><CODE>&lt;boost/iostreams/filter/zlib.hpp&gt;</CODE></A></DT>
<DT><A CLASS="header" HREF="../../../boost/iostreams/filter/gzip.hpp"><CODE>&lt;boost/iostreams/filter/gzip.hpp&gt;</CODE></A></DT>
<DT><A CLASS="header" HREF="../../../boost/iostreams/filter/bzip2.hpp"><CODE>&lt;boost/iostreams/filter/bzip2.hpp&gt;</CODE></A></DT>
</DL>
<A NAME="installation">
<H2>Installation</H2>
<P>
The zlib and gzip Filters depend on the source file <A CLASS="header" HREF="../src/zlib.cpp"><CODE>&lt;libs/src/zlib.cpp&gt;</CODE></A>. The bzip2 Filters depend on the source file <A CLASS="header" HREF="../src/bzip2.cpp"><CODE>&lt;libs/src/bzip2.cpp&gt;</CODE></A>. These source files use several headers from the zlib and gzip libraries, included with the Iostreams Library distribution in the directories <A CLASS="header" HREF="../src/zlib"><CODE>&lt;libs/iostreams/src/zlib&gt;</CODE></A> and <A CLASS="header" HREF="../src/bzip2"><CODE>&lt;libs/iostreams/src/bzip2&gt;</CODE></A>. Code using these filters must be linked against the zlib or libbzip2 binaries, which are available on most UNIX systems and which can be obtained for Windows systems here:
<UL>
<LI CLASS="square"><A HREF="http://www.gzip.org/zlib/contrib/index.html" TARGET="_top">zlib binaries (unofficial)</A>
<LI CLASS="square"><!-- <A HREF=""> -->libbzip2 binaries (currently broken)<!-- </A> -->
</UL>
Alternatively, the binaries can be build from the source code (<A CLASS="bib_ref" HREF="bibliography.html#gailly">[Gailly]</A>, <A CLASS="bib_ref" HREF="bibliography.html#deutsch2">[Seward]</A>).
</P>
<A NAME="other">
<H2>Other Compression Methods</H2>
<P>
It is easy to write Filters based on compression algorithms from other libraries, such as <A HREF="http://www.oberhumer.com/opensource/lzo/lzodoc.php" TARGET="_top">L<SPAN STYLE="font-size:80%">ZO</SPAN></A>, <A HREF="http://www.openssl.org" TARGET="_top">OpenSSL</A> and <A HREF="http://www.eskimo.com/~weidai/cryptlib.html" TARGET="_top">Crypto++</A>. No Filters using L<SPAN STYLE="font-size:80%">ZO</SPAN> or OpenSSL are supplied since their licenses are not <A HREF="http://www.boost.org/more/lib_guide.htm#Requirements" TARGET="_top">>Boost-compatible</A>. Most of Crypto++ is public domain, but providing Crypto++ filters would require including too many additional headers in the Iostreams Library distribution.
</P>
<P>
In the future, additional compression methods may be added to the Iostreams Library.
</P>
<!-- Begin Footnotes -->
<HR>
<P>
<A CLASS="footnote_ref" NAME="note_1" HREF="#note_1_ref"><SUP>[1]</SUP></A>Currently, <CODE>basic_gzip_decompressor</CODE> only models <A HREF="concepts/input_filter.html">InputFilter</A>, but this will be fixed soon.
</P>
<!-- End Footnotes -->
<!-- Begin Footer -->
<HR>
<P CLASS="copyright">Revised
<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
20 May, 2004
<!--webbot bot="Timestamp" endspan i-checksum="38504" -->
</P>
<P CLASS="copyright">&copy; Copyright Jonathan Turkanis, 2004</P>
<P CLASS="copyright">
Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at <A HREF="http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</A>)
</P>
<!-- End Footer -->
</BODY>