]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/iostreams/doc/classes/zlib.html
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / iostreams / doc / classes / zlib.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <HTML>
3 <HEAD>
4 <TITLE>Zlib Filters</TITLE>
5 <LINK REL="stylesheet" HREF="../../../../boost.css">
6 <LINK REL="stylesheet" HREF="../theme/iostreams.css">
7 </HEAD>
8 <BODY>
9
10 <!-- Begin Banner -->
11
12 <H1 CLASS="title">Zlib Filters</H1>
13 <HR CLASS="banner">
14
15 <!-- End Banner -->
16 <DL class="page-index">
17 <DT><A href="#overview">Overview</A></DT>
18 <DT><A href="#acknowledgments">Acknowledgments</A></DT>
19 <DT><A href="#headers">Headers</A></DT>
20 <DT><A href="#synopsis">Synopsis</A></DT>
21 <DT><A HREF="#reference">Reference</A>
22 <DL class="page-index">
23 <DT><A HREF="#constants">namespace <CODE>boost::iostreams::zlib</CODE></A></DT>
24 <DT><A HREF="#zlib_params">Class <CODE>zlib_params</CODE></A></DT>
25 <DT><A HREF="#basic_zlib_compressor">Class template <CODE>zlib_compressor</CODE></A></DT>
26 <DT><A HREF="#basic_zlib_decompressor">Class template <CODE>zlib_decompressor</CODE></A></DT>
27 <DT><A HREF="#zlib_error">Class <CODE>zlib_error</CODE></A></DT>
28 </DL>
29 </DT>
30 <DT><A href="#examples">Examples</A></DT>
31 <DT><A href="#installation">Installation</A></DT>
32 </DL>
33
34 <A NAME="overview"></A>
35 <H2>Overview</H2>
36
37 <P>
38 The class templates <A HREF="#basic_zlib_compressor"><CODE>basic_zlib_compressor</CODE></A> and <A HREF="#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>).
39 </P>
40 <P>
41 The zlib Filters are <A HREF="../concepts/dual_use_filter.html">DualUseFilters</A> so that they may be used for either input or output. Most commonly, however, the compression Filters will be used for output and the decompression Filters for input.
42 </P>
43
44 <A NAME="acknowledgments"></A>
45 <H2>Acknowledgments</H2>
46
47 <P>
48 The zlib 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>).
49 </P>
50
51 Thanks 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> for making their excellent library available to the public with a <A HREF="http://www.boost.org/more/lib_guide.htm#Requirements">Boost-compatible</A> license.
52
53 <A NAME="headers"></A>
54 <H2>Headers</H2>
55
56 <DL>
57 <DT><A CLASS="header" HREF="../../../../boost/iostreams/filter/zlib.hpp"><CODE>&lt;boost/iostreams/filter/zlib.hpp&gt;</CODE></A></DT>
58 </DL>
59
60 <A NAME="synopsis"></A>
61 <H2>Synopsis</H2>
62
63 <PRE CLASS="broken_ie"><SPAN CLASS="keyword">namespace</SPAN> boost { <SPAN CLASS="keyword">namespace</SPAN> iostreams {
64
65 <SPAN CLASS="keyword">namespace</SPAN> <A CLASS="documented" HREF="#constants">zlib</A> {
66
67 <SPAN CLASS="comment">// Compression levels</SPAN>
68
69 <SPAN CLASS="keyword">extern</SPAN> <SPAN CLASS="keyword">const</SPAN> <SPAN CLASS="keyword">int</SPAN> <A CLASS="documented" HREF="#no_compression">no_compression</A>;
70 <SPAN CLASS="keyword">extern</SPAN> <SPAN CLASS="keyword">const</SPAN> <SPAN CLASS="keyword">int</SPAN> <A CLASS="documented" HREF="#best_speed">best_speed</A>;
71 <SPAN CLASS="keyword">extern</SPAN> <SPAN CLASS="keyword">const</SPAN> <SPAN CLASS="keyword">int</SPAN> <A CLASS="documented" HREF="#best_compression">best_compression</A>;
72 <SPAN CLASS="keyword">extern</SPAN> <SPAN CLASS="keyword">const</SPAN> <SPAN CLASS="keyword">int</SPAN> <A CLASS="documented" HREF="#default_compression">default_compression</A>;
73
74 <SPAN CLASS="comment">// Compression methods</SPAN>
75
76 <SPAN CLASS="keyword">extern</SPAN> <SPAN CLASS="keyword">const</SPAN> <SPAN CLASS="keyword">int</SPAN> <A CLASS="documented" HREF="#deflated">deflated</A>;
77
78 <SPAN CLASS="comment">// Compression strategies</SPAN>
79
80 <SPAN CLASS="keyword">extern</SPAN> <SPAN CLASS="keyword">const</SPAN> <SPAN CLASS="keyword">int</SPAN> <A CLASS="documented" HREF="#default_strategy">default_strategy</A>;
81 <SPAN CLASS="keyword">extern</SPAN> <SPAN CLASS="keyword">const</SPAN> <SPAN CLASS="keyword">int</SPAN> <A CLASS="documented" HREF="#filtered">filtered</A>;
82 <SPAN CLASS="keyword">extern</SPAN> <SPAN CLASS="keyword">const</SPAN> <SPAN CLASS="keyword">int</SPAN> <A CLASS="documented" HREF="#huffman_only">huffman_only</A>;
83
84 <SPAN CLASS="comment">// Status codes</SPAN>
85
86 <SPAN CLASS="keyword">extern</SPAN> <SPAN CLASS="keyword">const</SPAN> <SPAN CLASS="keyword">int</SPAN> <A CLASS="documented" HREF="#stream_error">stream_error</A>;
87 <SPAN CLASS="keyword">extern</SPAN> <SPAN CLASS="keyword">const</SPAN> <SPAN CLASS="keyword">int</SPAN> <A CLASS="documented" HREF="#version_error">version_error</A>;
88 <SPAN CLASS="keyword">extern</SPAN> <SPAN CLASS="keyword">const</SPAN> <SPAN CLASS="keyword">int</SPAN> <A CLASS="documented" HREF="#data_error">data_error</A>;
89 <SPAN CLASS="keyword">extern</SPAN> <SPAN CLASS="keyword">const</SPAN> <SPAN CLASS="keyword">int</SPAN> <A CLASS="documented" HREF="#buf_error">buf_error</A>;
90
91 } <SPAN CLASS="comment">// End namespace boost::iostreams::zlib</SPAN>
92
93 <SPAN CLASS="keyword">struct</SPAN> <A CLASS="documented" HREF="#zlib_params">zlib_params</A>;
94
95 <SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> Alloc = std::allocator<<SPAN CLASS="keyword">char</SPAN>&gt; >
96 <SPAN CLASS="keyword">struc</SPAN>t <A CLASS="documented" HREF="#basic_zlib_compressor">basic_zlib_compressor</A>;
97
98 <SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> Alloc = std::allocator<<SPAN CLASS="keyword">char</SPAN>&gt; >
99 <SPAN CLASS="keyword">struct</SPAN> <A CLASS="documented" HREF="#basic_zlib_decompressor">basic_zlib_decompressor</A>;
100
101 <SPAN CLASS="keyword">typedef</SPAN> basic_zlib_compressor&lt;&gt; <SPAN CLASS="defined">zlib_compressor</SPAN>;
102 <SPAN CLASS="keyword">typedef</SPAN> basic_zlib_decompressor&lt;&gt; <SPAN CLASS="defined">zlib_decompressor</SPAN>;
103
104 <SPAN CLASS="keyword">class</SPAN> <A CLASS="documented" HREF="#zlib_error">zlib_error</A>;
105
106 } } <SPAN CLASS="comment">// End namespace boost::io</SPAN></PRE>
107
108 <A NAME="reference"></A>
109 <H2>Reference</H2>
110
111 <A NAME="constants"></A>
112 <H3>Namespace <CODE>boost::iostreams::zlib</CODE></H3>
113
114 <P>The namespace <CODE>boost::iostreams::zlib</CODE> contains integral constants used to configure zlib Filters and to report errors. The constants have the following interpretations. (<I>See</I> <A CLASS="bib_ref" HREF="../bibliography.html#gailly">[Gailly]</A> for additional details.)</P>
115
116 <TABLE STYLE="margin-left:2em" BORDER=1 CELLPADDING=4>
117 <TR><TH>Constant</TH><TH>Interpretation</TH></TR>
118 <TR>
119 <TD VALIGN="top"><A NAME="no_compression"></A><CODE>no_compression</CODE></TD>
120 <TD>Compression-level constant specifying that no compression should be performed. Equal to <CODE>Z_NO_COMPRESSION</CODE>.</TD>
121 </TR>
122 <TR>
123 <TD VALIGN="top"><A NAME="best_speed"></A><CODE>best_speed</CODE></TD>
124 <TD>Compression-level constant requesting the fasted compression. Equal to <CODE>Z_BEST_SPEED</CODE>.</TD>
125 </TR>
126 <TR>
127 <TD VALIGN="top"><A NAME="best_compression"></A><CODE>best_compression.</CODE></TD>
128 <TD>Compression-level constant requesting the best compression ratio. Equal to <CODE>Z_BEST_COMPRESSION</CODE>.</TD>
129 </TR>
130 <TR>
131 <TD VALIGN="top"><A NAME="default_compression"></A><CODE>default_compression</CODE></TD>
132 <TD>Default compression level. Equal to <CODE>Z_DEFAULT_COMPRESSION</CODE>.</TD>
133 </TR>
134 <TR>
135 <TD VALIGN="top"><A NAME="deflated"></A><CODE>deflated</CODE></TD>
136 <TD>Compression method constant; currently the only supported method. Equal to <CODE>Z_DEFLATED</CODE>.</TD>
137 </TR>
138 <TR>
139 <TD VALIGN="top"><A NAME="default_strategy"></A><CODE>default_strategy</CODE></TD>
140 <TD>Compression strategy constant. Equal to <CODE>Z_DEFAULT_STRATEGY</CODE>.</TD>
141 </TR>
142 <TR>
143 <TD VALIGN="top"><A NAME="filtered"></A><CODE>filtered</CODE></TD>
144 <TD>Compression strategy constant. Equal to <CODE>Z_FILTERED</CODE>.</TD>
145 </TR>
146 <TR>
147 <TD VALIGN="top"><A NAME="huffman_only"></A><CODE>huffman_only</CODE></TD>
148 <TD>Compression strategy constant. Equal to <CODE>Z_HUFFMAN_ONLY</CODE>.</TD>
149 </TR>
150 <TR>
151 <TD VALIGN="top"><A NAME="stream_error"></A><CODE>stream_error</CODE></TD>
152 <TD>Error code used to indicate that one of the members of <CODE>zlib_params</CODE> is invalid; may also indicate an internal Iostreams library error. Equal to <CODE>Z_STREAM_ERROR</CODE>.</TD>
153 </TR>
154 <TR>
155 <TD VALIGN="top"><A NAME="version_error"></A><CODE>version_error</CODE></TD>
156 <TD>
157 Error code used to indicate that data was compressed with an incompatible version of zlib. Equal to <CODE>Z_VERSION_ERROR</CODE>.
158 </TD>
159 </TR>
160 <TR>
161 <TD VALIGN="top"><A NAME="data_error"></A><CODE>data_error</CODE></TD>
162 <TD>
163 Error code used to indicate that a compressed datastream is corrupted. Equal to <CODE>Z_DATA_ERROR.</CODE>
164 </TD>
165 </TR>
166 <TR>
167 <TD VALIGN="top"><A NAME="buf_error"></A><CODE>buf_error</CODE></TD>
168 <TD>Error code indicating an internal Iostreams library error. Equal to <CODE>Z_BUF_ERROR.</CODE></TD>
169 </TR>
170 </TABLE>
171
172 <A NAME="zlib_params"></A>
173 <H3>Class <CODE>zlib_params</CODE></H3>
174
175 <H4>Description</H4>
176
177 <P>Encapsulates the parameters used to configure <A HREF="#basic_zlib_compressor"><CODE>basic_zlib_compressor</CODE></A> and <A HREF="#basic_zlib_decompressor"><CODE>basic_zlib_decompressor</CODE></A>.</P>
178
179 <H4>Synopsis</H4>
180
181 <PRE CLASS="broken_ie"><SPAN CLASS="keyword">struct</SPAN> <SPAN CLASS="defined">zlib_params</SPAN> {
182
183 <SPAN CLASS="comment">// Non-explicit constructor</SPAN>
184 <A CLASS="documented" HREF="#zlib_params_constructors">zlib_params</A>( <SPAN CLASS="keyword">int</SPAN> level = zlib::default_compression,
185 <SPAN CLASS="keyword">int</SPAN> method = zlib::deflated,
186 <SPAN CLASS="keyword">int</SPAN> window_bits = default value,
187 <SPAN CLASS="keyword">int</SPAN> mem_level = default value,
188 <SPAN CLASS="keyword">int</SPAN> strategy = zlib::default_strategy,
189 <SPAN CLASS="keyword">bool</SPAN> noheader = false );
190 <SPAN CLASS="keyword">int</SPAN> level;
191 <SPAN CLASS="keyword">int</SPAN> method;
192 <SPAN CLASS="keyword">int</SPAN> window_bits;
193 <SPAN CLASS="keyword">int</SPAN> mem_level;
194 <SPAN CLASS="keyword">int</SPAN> strategy;
195 <SPAN CLASS="keyword">bool</SPAN> noheader;
196 };</PRE>
197
198 <A NAME="zlib_params_constructors"></A>
199 <H4><CODE>zlib_params::zlib_params</CODE></H4>
200
201 <PRE CLASS="broken_ie"> zlib_params( <SPAN CLASS="keyword">int</SPAN> level = zlib::default_compression,
202 <SPAN CLASS="keyword">int</SPAN> method = zlib::deflated,
203 <SPAN CLASS="keyword">int</SPAN> window_bits = default value,
204 <SPAN CLASS="keyword">int</SPAN> mem_level = default value,
205 <SPAN CLASS="keyword">int</SPAN> strategy = zlib::default_strategy,
206 <SPAN CLASS="keyword">bool</SPAN> noheader = false );</PRE>
207
208 <P>Constructs a <CODE>zlib_params</CODE> object, where the parameters have the following interpretations:</AP>
209
210 <TABLE STYLE="margin-left:2em" BORDER=0 CELLPADDING=2>
211 <TR>
212 <TR>
213 <TD VALIGN="top"><A NAME="level"></A><I>level</I></TD><TD WIDTH="2em" VALIGN="top">-</TD>
214 <TD>Compression level. Must be equal to <CODE>zlib::default_compression</CODE> or a value in the range <CODE>0-9</CODE>. The value <CODE>0</CODE> yields no compression, while <CODE>9</CODE> yields the best compression ratio. Affects compression only.</TD>
215 </TR>
216 <TR>
217 <TD VALIGN="top"><A NAME="method"></A><I>method</I></TD><TD WIDTH="2em" VALIGN="top">-</TD>
218 <TD>Compression method. Must equal <A HREF="#deflated"><CODE>zlib::deflated</CODE></A>. Affects compression only.</TD>
219 </TR>
220 <TR>
221 <TD VALIGN="top"><A NAME="window_bits"></A><I>window_bits</I></TD><TD WIDTH="2em" VALIGN="top">-</TD>
222 <TD>The base two logarithm of the window size. Must be in the range 8-15; defaults to 15.</TD>
223 </TR>
224 <TR>
225 <TD VALIGN="top"><A NAME="mem_level"></A><I>mem_level</I></TD><TD WIDTH="2em" VALIGN="top">-</TD>
226 <TD>Specifies the amount of memory to be used. Must be in the range 1-9; defaults to 8. Affects compression only.</TD>
227 </TR>
228 <TR>
229 <TD VALIGN="top"><A NAME="strategy"></A><I>strategy</I></TD><TD WIDTH="2em" VALIGN="top">-</TD>
230 <TD>Must be <A HREF="#default_strategy"><CODE>zlib::default_strategy</CODE></A>, <A HREF="#filtered"><CODE>zlib::filtered</CODE></A> or <A HREF="#huffman_only"><CODE>zlib::huffman_only</CODE></A>. Affects compression only. </TD>
231 </TR>
232 <TR>
233 <TD VALIGN="top"><A NAME="noheader"></A><I>noheader</I></TD><TD WIDTH="2em" VALIGN="top">-</TD>
234 <TD>True if the Z<SPAN STYLE="font-size:80%">LIB</SPAN> header and trailing A<SPAN STYLE="font-size:80%">DLER</SPAN>-32 checksum should be omitted (see <A CLASS="bib_ref" HREF="../bibliography.html#deutsch1">[Deutsch1]</A>). This results in compression according to the <I>deflate</I> specification (see <A CLASS="bib_ref" HREF="../bibliography.html#deutsch2">[Deutsch2]</A>).</TD>
235 </TR>
236 </TABLE>
237
238 <P>See <A CLASS="bib_ref" HREF="../bibliography.html#gailly">[Gailly]</A> for additional details.</P>
239
240 <A NAME="basic_zlib_compressor"></A>
241 <H3>Class template <CODE>basic_zlib_compressor</CODE></H3>
242
243 <H4>Description</H4>
244
245 Model of <A HREF="../concepts/dual_use_filter.html">DualUseFilter</A> which performs compression using zlib (<A CLASS="bib_ref" HREF="../bibliography.html#gailly">[Gailly]</A>).
246
247 <H4>Synopsis</H4>
248
249 <PRE CLASS="broken_ie"><SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#basic_zlib_compressor_params">Alloc</A> = std::allocator&lt;<SPAN CLASS="keyword">char</SPAN>&gt; &gt;
250 <SPAN CLASS="keyword">struct</SPAN> <A CLASS="documented" HREF="#basic_zlib_compressor_params">basic_zlib_compressor</A> {
251 <SPAN CLASS="keyword">typedef</SPAN> <SPAN CLASS="keyword">char</SPAN> char_type;
252 <SPAN CLASS="keyword">typedef</SPAN> <SPAN CLASS="omitted">implementation-defined</SPAN> category;
253
254 <A CLASS="documented" HREF="#basic_zlib_compressor_constructors">basic_zlib_compressor</A>( <SPAN CLASS="keyword">const</SPAN> <A CLASS="documented" HREF="#zlib_params">zlib_params</A>&amp; = <SPAN CLASS="omitted">zlib::default_compression</SPAN>,
255 std::streamsize buffer_size = <SPAN CLASS="omitted">default value</SPAN> );
256
257 <SPAN CLASS="comment">// DualUseFilter members.</SPAN>
258 };
259
260 <SPAN CLASS="keyword">typedef</SPAN> basic_zlib_compressor&lt;&gt; <SPAN CLASS="defined">zlib_compressor</SPAN>;</PRE>
261
262 <A NAME="basic_zlib_compressor_params"></A>
263 <H4>Template Parameters</H4>
264
265 <TABLE STYLE="margin-left:2em" BORDER=0 CELLPADDING=2>
266 <TR>
267 <TR>
268 <TD VALIGN="top"><I>Alloc</I></TD><TD WIDTH="2em" VALIGN="top">-</TD>
269 <TD>A C++ standard library allocator type (<A CLASS="bib_ref" HREF="../bibliography.html#iso">[ISO]</A>, 20.1.5), used to allocate a character buffer and to configure zlib.</TD>
270 </TR>
271 </TABLE>
272
273 <A NAME="basic_zlib_compressor_constructors"></A>
274 <H4><CODE>basic_zlib_compressor::basic_zlib_compressor</CODE></H4>
275
276 <PRE CLASS="broken_ie"> basic_zlib_compressor( <SPAN CLASS="keyword">const</SPAN> <A CLASS="documented" HREF="#zlib_params">zlib_params</A>&amp; = <SPAN CLASS="omitted">zlib::default_compression</SPAN>,
277 std::streamsize buffer_size = <SPAN CLASS="omitted">default value</SPAN> );</PRE>
278
279 <P>Constructs an instance of <CODE>basic_zlib_compressor</CODE> with the given parameters and buffer size. Since a <A CLASS="documented" HREF="#zlib_params"><CODE>zlib_params</CODE></A> object is implicitly constructible from an <CODE>int</CODE> representing a compression level, an <CODE>int</CODE> may be passed as the first constructor argument.</P>
280
281 <A NAME="basic_zlib_decompressor"></A>
282 <H3>Class template <CODE>basic_zlib_decompressor</CODE></H3>
283
284 <H4>Description</H4>
285
286 Model of <A HREF="../concepts/dual_use_filter.html">DualUseFilter</A> which performs decompression using zlib (<A CLASS="bib_ref" HREF="../bibliography.html#gailly">[Gailly]</A>).
287
288 <H4>Synopsis</H4>
289
290 <PRE CLASS="broken_ie"><SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#basic_zlib_decompressor_params">Alloc</A> = std::allocator&lt;<SPAN CLASS="keyword">char</SPAN>&gt; &gt;
291 <SPAN CLASS="keyword">struct</SPAN> <A CLASS="documented" HREF="#basic_zlib_decompressor_params">basic_zlib_decompressor</A> {
292 <SPAN CLASS="keyword">typedef</SPAN> <SPAN CLASS="keyword">char</SPAN> char_type;
293 <SPAN CLASS="keyword">typedef</SPAN> <SPAN CLASS="omitted">implementation-defined</SPAN> category;
294
295 <A CLASS="documented" HREF="#basic_zlib_decompressor_constructors">basic_zlib_decompressor</A>( <SPAN CLASS="keyword">int</SPAN> window_bits = <SPAN CLASS="omitted">default value</SPAN>,
296 std::streamsize buffer_size =
297 <SPAN CLASS="omitted">default value</SPAN> );
298 <A CLASS="documented" HREF="#basic_zlib_decompressor_constructors">basic_zlib_decompressor</A>( <SPAN CLASS="keyword">const</SPAN> <A CLASS="documented" HREF="#zlib_params">zlib_params</A>&amp;,
299 std::streamsize buffer_size =
300 <SPAN CLASS="omitted">default value</SPAN> );
301
302 <SPAN CLASS="comment">// DualUseFilter members.</SPAN>
303 };
304
305 <SPAN CLASS="keyword">typedef</SPAN> basic_zlib_decompressor&lt;&gt; <SPAN CLASS="defined">zlib_decompressor</SPAN>;</PRE>
306
307 <A NAME="basic_zlib_decompressor_params"></A>
308 <H4>Template Parameters</H4>
309
310 <TABLE STYLE="margin-left:2em" BORDER=0 CELLPADDING=2>
311 <TR>
312 <TR>
313 <TD VALIGN="top"><I>Alloc</I></TD><TD WIDTH="2em" VALIGN="top">-</TD>
314 <TD>A C++ standard library allocator type (<A CLASS="bib_ref" HREF="../bibliography.html#iso">[ISO]</A>, 20.1.5), used to allocate a character buffer and to configure zlib.</TD>
315 </TR>
316 </TABLE>
317
318 <A NAME="basic_zlib_decompressor_constructors"></A>
319 <H4><CODE>basic_zlib_decompressor::basic_zlib_decompressor</CODE></H4>
320
321 <PRE CLASS="broken_ie"> basic_zlib_decompressor( <SPAN CLASS="keyword">int</SPAN> window_bits = <SPAN CLASS="omitted">default value</SPAN>,
322 std::streamsize buffer_size =
323 <SPAN CLASS="omitted">default value</SPAN> );
324 basic_zlib_decompressor( <SPAN CLASS="keyword">const</SPAN> <A CLASS="documented" HREF="#zlib_params">zlib_params</A>&amp;,
325 std::streamsize buffer_size =
326 <SPAN CLASS="omitted">default value</SPAN> );</PRE>
327
328 <P>The first member constructs an instance of <CODE>basic_zlib_decompressor</CODE> with the given parameters and buffer size.
329 The second member constructs an instance of <CODE>basic_zlib_decompressor</CODE> with the given <A HREF="#window_bits">window bits</A> value and buffer size. Other parameters affecting decompression are set to default values.</P>
330
331 <A NAME="zlib_error"></A>
332 <H3>Class <CODE>zlib_error</CODE></H3>
333
334 <H4>Description</H4>
335
336 Used by the zlib Filters to report errors.
337
338 <H4>Synopsis</H4>
339
340 <PRE CLASS="broken_ie"><SPAN CLASS="keyword">class</SPAN> <SPAN CLASS="defined">zlib_error</SPAN> : <SPAN CLASS="keyword">public</SPAN> std::ios_base::failure {
341 <SPAN CLASS="keyword">public:</SPAN>
342 <A CLASS="documented" HREF="#zlib_error_constructor">zlib_error</A>(<SPAN CLASS="keyword">int</SPAN> error);
343 <SPAN CLASS="keyword">int</SPAN> <A CLASS="documented" HREF="#zlib_error_error">error</A>() const;
344 };</PRE>
345
346 <A NAME="zlib_error_constructor"></A>
347 <H4><CODE>zlib_error::zlib_error</CODE></H4>
348
349 <PRE CLASS="broken_ie"> zlib_error(<SPAN CLASS="keyword">int</SPAN> error);</PRE>
350
351 <P>Constructs an instance of <CODE>zlib_error</CODE> with the given error code from the namespace <A HREF="#constants"><CODE>boost::iostreams::zlib</CODE></A>.</P>
352
353 <A NAME="zlib_error_error"></A>
354 <H4><CODE>zlib_error::error</CODE></H4>
355
356 <PRE CLASS="broken_ie"> <SPAN CLASS="keyword">void</SPAN> error() <SPAN CLASS="keyword">const</SPAN>;</PRE>
357
358 <P>Returns an error code from the namespace <A HREF="#constants"><CODE>boost::iostreams::zlib</CODE></A>.</P>
359
360 <A NAME="examples"></A>
361 <H2>Examples</H2>
362
363 The following code decompresses data from a file and writes it to standard output.
364
365 <PRE CLASS="broken_ie"><SPAN CLASS="preprocessor">#include</SPAN> <SPAN CLASS="literal">&lt;fstream&gt;</SPAN>
366 <SPAN CLASS="preprocessor">#include</SPAN> <SPAN CLASS="literal">&lt;iostream&gt;</SPAN>
367 <SPAN CLASS="preprocessor">#include</SPAN> <A CLASS="header" HREF="../../../../boost/iostreams/filtering_streambuf.hpp"><SPAN CLASS="literal">&lt;boost/iostreams/filtering_streambuf.hpp&gt;</SPAN></A>
368 <SPAN CLASS="preprocessor">#include</SPAN> <A CLASS="header" HREF="../../../../boost/iostreams/copy.hpp"><SPAN CLASS="literal">&lt;boost/iostreams/copy.hpp&gt;</SPAN></A>
369 <SPAN CLASS="preprocessor">#include</SPAN> <A CLASS="header" HREF="../../../../boost/iostreams/filter/zlib.hpp"><SPAN CLASS="literal">&lt;boost/iostreams/filter/zlib.hpp&gt;</SPAN></A>
370
371 int main()
372 {
373 <SPAN CLASS="keyword">using</SPAN> <SPAN CLASS="keyword">namespace</SPAN> std;
374
375 ifstream file(<SPAN CLASS="literal">"hello.z"</SPAN>, ios_base::in | ios_base::binary);
376 filtering_streambuf&lt;input&gt; in;
377 in.push(zlib_decompressor());
378 in.push(file);
379 boost::iostreams::copy(in, cout);
380 }</PRE>
381
382 <A NAME="installation"></A>
383 <H3>Installation</H3>
384
385 <P>
386 The zlib Filters depend on the third-party zlib library, which is <I>not</I> included in the Boost distribution. Prebuilt zlib binaries are available on most UNIX and UNIX-like systems, and will be found automatically by the Boost build system. Windows users can obtain prebuilt binaries at the <A HREF="http://www.gzip.org/zlib/" TARGET="_top">zlib homepage</A>. Users can also configure the Boost Iostream library to build zlib from the source code, which is available at the zlib homepage. For details on configuring the build system to find your zlib installation, please see <A HREF="../installation.html">Installation</A>.
387 </P>
388
389 <!-- Adler's obfuscated address is copied from his homepage -->
390
391 <!-- Begin Footer -->
392
393 <HR>
394
395 <P CLASS="copyright">&copy; Copyright 2008 <a href="http://www.coderage.com/" target="_top">CodeRage, LLC</a><br/>&copy; Copyright 2004-2007 <a href="http://www.coderage.com/turkanis/" target="_top">Jonathan Turkanis</a></P>
396 <P CLASS="copyright">
397 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>)
398 </P>
399
400 <!-- End Footer -->
401
402 </BODY>