1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 2<HTML> 3<HEAD> 4 <TITLE>Class Template symmetric_filter</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">Class Template <CODE>symmetric_filter</CODE></H1> 13 <HR CLASS="banner"> 14 15<!-- End Banner --> 16 17<DL class="page-index"> 18 <DT><A href="#description">Description</A></DT> 19 <DT><A href="#headers">Headers</A></DT> 20 <DT><A href="#reference">Reference</A></DT> 21 <DT><A href="#examples">Examples</A></DT> 22</DL> 23 24<HR> 25 26<A NAME="description"></A> 27<H2>Description</H2> 28 29<P> 30 The class template <CODE>symmetric_filter</CODE> is tool for generating models of <A HREF="../concepts/dual_use_filter.html">DualUseFilter</A> from models of <A HREF="../concepts/symmetric_filter.html">SymmetricFilter</A>. It is useful for defining filters based on C language APIs. 31</P> 32<P> 33 The Iostreams library uses <CODE>symmetric_filter</CODE> to implement the <A HREF="zlib.html">Zlib</A> and <A HREF="bzip2.html">Bzip2</A> Filters. 34</P> 35 36<A NAME="headers"></A> 37<H2>Headers</H2> 38 39<DL class="page-index"> 40 <DT><A CLASS="header" HREF="../../../../boost/iostreams/filter/symmetric.hpp"><CODE><boost/iostreams/filter/symmetric.hpp></CODE></A></DT> 41</DL> 42 43<A NAME="reference"></A> 44<H2>Reference</H2> 45 46<H4>Synopsis</H4> 47 48<PRE CLASS="broken_ie"><SPAN CLASS="keyword">namespace</SPAN> boost { <SPAN CLASS="keyword">namespace</SPAN> iostreams { 49 50<SPAN CLASS="keyword">template</SPAN>< <SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#template_params">SymmetricFilter</A>, 51 <SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#template_params">Alloc</A> = std::allocator<...> > 52<SPAN CLASS="keyword">class</SPAN> <A CLASS="documented" HREF="#template_params">symmetric_filter</A> { 53<SPAN CLASS="keyword">public</SPAN>: 54 <SPAN CLASS="keyword">typedef</SPAN> <SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="../guide/traits.html">char_type_of</A><SymmetricFilter>::type char_type; 55 <SPAN CLASS="keyword">typedef</SPAN> <SPAN CLASS="omitted">implementation-defined</SPAN> category; 56 57 <SPAN CLASS="keyword">explicit</SPAN> symmetric_filter(<SPAN CLASS="keyword">int</SPAN> buffer_size); 58 59 <SPAN CLASS="keyword">template</SPAN><<SPAN CLASS="keyword">typename</SPAN> T0> 60 symmetric_filter(<SPAN CLASS="keyword">int</SPAN> buffer_size, <SPAN CLASS="keyword">const</SPAN> T0& t0); 61 62 <SPAN CLASS="keyword">template</SPAN><<SPAN CLASS="keyword">typename</SPAN> T0, <SPAN CLASS="keyword">typename</SPAN> T1> 63 symmetric_filter(<SPAN CLASS="keyword">int</SPAN> buffer_size, <SPAN CLASS="keyword">const</SPAN> T0& t0, <SPAN CLASS="keyword">const</SPAN> T1& t1); 64 65 <SPAN CLASS="keyword">template</SPAN><<SPAN CLASS="keyword">typename</SPAN> T0, ..., <SPAN CLASS="keyword">typename</SPAN> TN> 66 symmetric_filter( <SPAN CLASS="keyword">int</SPAN> buffer_size, const T0& t0, 67 <SPAN CLASS="keyword">const</SPAN> T1& t1, ..., <SPAN CLASS="keyword">const</SPAN> TN& tN ); 68 69 <SPAN CLASS="omitted">...</SPAN> 70<SPAN CLASS="keyword">protected</SPAN>: 71 SymmetricFilter& <A CLASS="documented" HREF="#filter">filter</A>(); 72 std::basic_string<char_type, Alloc> <A CLASS="documented" HREF="#unconsumed_input">unconsumed_input</A>() <SPAN CLASS="keyword">const</SPAN>; 73}; 74 75} } <SPAN CLASS="comment">// End namespace boost::io</SPAN></PRE> 76 77<A NAME="template_params"></A> 78<H4>Template parameters</H4> 79 80<TABLE STYLE="margin-left:2em" BORDER=0 CELLPADDING=2> 81<TR> 82 <TR> 83 <TD VALIGN="top"><I>SymmetricFilter</I></TD><TD WIDTH="2em" VALIGN="top">-</TD> 84 <TD>A model of <A HREF="../concepts/symmetric_filter.html">SymmetricFilter</A></TD> 85 </TR> 86 <TR> 87 <TD VALIGN="top"><I>Alloc</I></TD><TD WIDTH="2em" VALIGN="top">-</TD> 88 <TD>A standard library allocator type (<A CLASS="bib_ref" HREF="../bibliography.html#iso">[ISO]</A>, 20.1.5), used to allocate a character buffer</TD> 89 </TR> 90</TABLE> 91 92<A NAME="first_ctor"></A> 93<H4><CODE>symmetric_filter::symmetric_filter</CODE></H4> 94 95<PRE CLASS="broken_ie"> <SPAN CLASS="keyword">explicit</SPAN> symmetric_filter(<SPAN CLASS="keyword">int</SPAN> buffer_size);</PRE> 96 97<P>Constructs an instance of <CODE>symmetric_filter</CODE> based on a default-constructed instance of the template parameter <A HREF="#template_params"><CODE>SymmetricFilter</CODE></A> and having an internal buffer of size <CODE>buffer_size</CODE>.</P> 98 99<A NAME="forwarding_ctors"></A> 100<H4><CODE>symmetric_filter::symmetric_filter</CODE></H4> 101 102<PRE CLASS="broken_ie"> <SPAN CLASS="keyword">template</SPAN><<SPAN CLASS="keyword">typename</SPAN> T0> 103 symmetric_filter(<SPAN CLASS="keyword">int</SPAN> buffer_size, <SPAN CLASS="keyword">const</SPAN> T0& t0); 104 105 <SPAN CLASS="keyword">template</SPAN><<SPAN CLASS="keyword">typename</SPAN> T0, <SPAN CLASS="keyword">typename</SPAN> T1> 106 symmetric_filter(<SPAN CLASS="keyword">int</SPAN> buffer_size, <SPAN CLASS="keyword">const</SPAN> T0& t0, <SPAN CLASS="keyword">const</SPAN> T1& t1); 107 108 <SPAN CLASS="keyword">template</SPAN><<SPAN CLASS="keyword">typename</SPAN> T0, ..., <SPAN CLASS="keyword">typename</SPAN> TN> 109 symmetric_filter( <SPAN CLASS="keyword">int</SPAN> buffer_size, <SPAN CLASS="keyword">const</SPAN> T0& t0, 110 <SPAN CLASS="keyword">const</SPAN> T1& t1, ..., <SPAN CLASS="keyword">const</SPAN> TN& tN );</PRE> 111 112<P>Each member constructs an instance of <CODE>symmetric_filter</CODE> based on an instance of the template parameter <A HREF="#template_params"><CODE>SymmetricFilter</CODE></A> constructed with the given sequence of arguments and having an internal buffer of size <CODE>buffer_size</CODE>.</P> 113 114<A NAME="filter"></A> 115<H4><CODE>symmetric_filter::filter</CODE></H4> 116 117<PRE CLASS="broken_ie"> SymmetricFilter& <A CLASS="documented" HREF="#filter">filter</A>();</PRE> 118 119<P>Returns a reference to the underlying instance of <CODE>SymmetricFilter</CODE>.</P> 120 121<A NAME="unconsumed_input"></A> 122<H4><CODE>symmetric_filter::unconsumed_input</CODE></H4> 123 124<PRE CLASS="broken_ie"> std::basic_string<char_type, Alloc> <A CLASS="documented" HREF="#unconsumed_input">unconsumed_input</A>() <SPAN CLASS="keyword">const</SPAN>;</PRE> 125 126<P>Returns any uncomsumed data remaining in the internal buffer as a standard string. Valid from the time the end of a stream is reached — that is, from the time <CODE><A HREF="../concepts/symmetric_filter.html">SymmetricFilter::filter</A></CODE> returns <CODE>false</CODE> — until <CODE>filter</CODE> is invoked to begin processing a new sequence of data.</P> 127 128<A NAME="examples"></A> 129<H2>Examples</H2> 130 131<P>For example uses of <CODE>symmetric_filter</CODE>, see the headers <A CLASS="header" HREF="../../../../boost/iostreams/filter/zlib.hpp"><CODE><boost/iostreams/filter/zlib.hpp></CODE></A> and <A CLASS="header" HREF="../../../../boost/iostreams/filter/bzip2.hpp"><CODE><boost/iostreams/filter/bzip2.hpp></CODE></A> and the corresponding implementation files <A CLASS="header" HREF="../../src/zlib.cpp"><CODE><libs/iostreams/src/zlib.cpp></CODE></A> and <A CLASS="header" HREF="../../src/bzip2.cpp"><CODE><libs/iostreams/src/bzip2.cpp></CODE></A>.</P> 132 133<!-- Begin Footer --> 134 135<HR> 136 137<P CLASS="copyright">© Copyright 2008 <a href="http://www.coderage.com/" target="_top">CodeRage, LLC</a><br/>© Copyright 2004-2007 <a href="https://www.boost.org/users/people/jonathan_turkanis.html" target="_top">Jonathan Turkanis</a></P> 138<P CLASS="copyright"> 139 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>) 140</P> 141 142<!-- End Footer --> 143 144</BODY> 145