Files
iostreams/doc/functions/adapt.html

164 lines
8.9 KiB
HTML
Executable File

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Function Template adapt</TITLE>
<LINK REL='stylesheet' HREF='../../../../boost.css'>
<LINK REL='stylesheet' HREF='../theme/iostreams.css'>
<STYLE> H3 CODE { font-size: 120% } </STYLE>
</HEAD>
<BODY>
<!-- Begin Banner -->
<H1 CLASS='title'>Function Template <CODE>adapt</CODE></H1>
<HR CLASS='banner'>
<!-- End Banner -->
<DL class='page-index'>
<DT><A href='#overview'>Overview</A></DT>
<DT><A href='#headers'>Headers</A></DT>
<DT><A href='#reference'>Reference</A></DT>
</DL>
<A NAME='overview'>
<H2>Overview</H2>
<P>
The overloaded function template <CODE>adapt</CODE> takes an <A HREF='http://www.sgi.com/tech/stl/OutputIterator.html'>OutputIterator</A>, a pair of <A HREF='http://www.sgi.com/tech/stl/ForwardIterator.html'>ForwardIterators</A> or a standard i/o stream or stream buffer and returns a Device.<SUP><A CLASS='footnote_ref' NAME='note_1_ref' HREF='#note_1'>[1]</A></SUP> Certain properties of the returned Device, including its <A HREF='../modes.html'>i/o mode</A>, are left indeterminate until the Device is added to a <CODE>filtering_streambuf</CODE> or <CODE>filtering_stream</CODE>. This is for two reasons:
<UL>
<LI>Certain information &#8212; such as the character type associated with an OutputIterator and the readability/writability of an iterator range &#8212; is not available at the type <CODE>adapt</CODE> is invoked.
<LI>The <A HREF='../modes.html'>i/o mode</A> assigned by default to a standard i/o stream or stream buffer may not be what the library user desires. For instance, stream buffers by default are assumed to have mode <A HREF='../modes.html#seekable'>Seekable</A>; a particular stream buffer, however, might actually have mode <A HREF='../modes.html#bidirectional'>Bidirectional</A>, <A HREF='../modes.html#bidirectional_seekable'>Bidirectional-Seekable</A> or <A HREF='../modes.html#dual_seekable'>Dual-Seekable</A>. Using <CODE>adapt</CODE> allows a standard i/o stream or stream buffer to be added to a <CODE>filtering_streambuf</CODE> or <CODE>filtering_stream</CODE> regardless of the latter's mode.
</UL>
</P>
<P>See <A HREF='../adapters.html'>STL Sequence Adapters</A> for usage examples.</P>
<A NAME='headers'>
<H2>Headers</H2>
<DL>
<DT><A CLASS='header' HREF='../../../../boost/iostreams/adapt.hpp'><CODE>&lt;boost/iostreams/adapt.hpp&gt;</CODE></A></DT>
</DL>
<A NAME='reference'>
<H2>Reference</H2>
<A NAME='synopsis'>
<H3>Synopsis</H3>
<PRE CLASS='broken_ie'><SPAN CLASS="keyword">namespace</SPAN> boost { <SPAN CLASS="keyword">namespace</SPAN> iostreams {
<SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#output_iterators_template_params">OutIt</A>&gt;
<SPAN CLASS='omitted'>implementation-defined</SPAN> <A CLASS="documented" HREF="#output_iterators">adapt</A>(<SPAN CLASS="keyword">const</SPAN> <A CLASS="documented" HREF="#output_iterators_template_params">OutIt</A>& out);
<SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#iterator_ranges_template_params">FwdIt</A>&gt;
<SPAN CLASS='omitted'>implementation-defined</SPAN> <A CLASS="documented" HREF="#iterator_ranges">adapt</A>(<A CLASS="documented" HREF="#iterator_ranges_template_params">FwdIt</A> first, <A CLASS="documented" HREF="#iterator_ranges_template_params">FwdIt</A> last);
<SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#streams_template_params">Ch</A>, <SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#streams_template_params">Tr</A>&gt;
<SPAN CLASS='omitted'>implementation-defined</SPAN> <A CLASS="documented" HREF="#streams">adapt</A>(std::basic_iostream&lt;<A CLASS="documented" HREF="#streams_template_params">Ch</A>, <A CLASS="documented" HREF="#streams_template_params">Tr</A>&gt;& io);
<SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#streams_template_params">Ch</A>, <SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#streams_template_params">Tr</A>&gt;
<SPAN CLASS='omitted'>implementation-defined</SPAN> <A CLASS="documented" HREF="#streams">adapt</A>(std::basic_streambuf&lt;<A CLASS="documented" HREF="#streams_template_params">Ch</A>, <A CLASS="documented" HREF="#streams_template_params">Tr</A>&gt;& sb);
} } <SPAN CLASS='comment'>// End namespace boost::io</SPAN></PRE>
<A NAME='output_iterators'>
<H3><CODE>adapt</CODE> &#8212; OutputIterators</H3>
<PRE CLASS='broken_ie'> <SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> OutIt&gt;
<SPAN CLASS='omitted'>implementation-defined</SPAN> adapt(<SPAN CLASS="keyword">const</SPAN> OutIt& out);</PRE>
<A NAME='output_iterators_template_params'></A>
<H4>Template Parameters</H4>
<TABLE STYLE='margin-left:2em' BORDER=0 CELLPADDING=2>
<TR>
<TR>
<TD VALIGN='top'><I>OutIt</I></TD><TD WIDTH='2em' VALIGN='top'>-</TD>
<TD>A model of <A HREF='http://www.sgi.com/tech/stl/OutputIterator.html'>OutputIterator</A>.
</TR>
</TABLE>
<A NAME='output_iterators_return_value'></A>
<H4>Return Value</H4>
<P>Returns a <A HREF='../concepts/sink.html'>Sink</A> for writing to the sequence controlled by <CODE>out</CODE>.<SUP><A CLASS='footnote_ref' NAME='note_1_ref' HREF='#note_1'>[1]</A></SUP></P>
<A NAME='iterator_ranges'>
<H3><CODE>adapt</CODE> &#8212; Iterator Ranges</H3>
<PRE CLASS='broken_ie'> <SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> FwdIt&gt;
<SPAN CLASS='omitted'>implementation-defined</SPAN> adapt(FwdIt first, FwdIt last);</PRE>
<A NAME='iterator_ranges_template_params'></A>
<H4>Template Parameters</H4>
<TABLE STYLE='margin-left:2em' BORDER=0 CELLPADDING=2>
<TR>
<TR>
<TD VALIGN='top'><I>Source</I></TD><TD WIDTH='2em' VALIGN='top'>-</TD>
<TD>A model of <A HREF='http://www.sgi.com/tech/stl/ForwardIterator.html'>ForwardIterator</A>.
</TR>
</TABLE>
<A NAME='iterator_ranges_return_value'></A>
<H4>Return Value</H4>
<P>Returns a <A HREF='../concepts/sink.html'>Device</A> for accessing the sequence delimited by <CODE>first</CODE> and <CODE>last</CODE>.<SUP><A CLASS='footnote_ref' NAME='note_1_ref' HREF='#note_1'>[1]</A></SUP> The <A HREF='../modes.html'>i/o mode</A> of the Device is determined at the time it is added to a <CODE>filtering_streambuf</CODE> or <CODE>filtering_stream</CODE>.</P>
<A NAME='streams'>
<H3><CODE>adapt</CODE> &#8212; Standard I/O Streams and Stream Buffers</H3>
<PRE CLASS='broken_ie'> <SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> Ch, <SPAN CLASS="keyword">typename</SPAN> Tr&gt;
<SPAN CLASS='omitted'>implementation-defined</SPAN> adapt(std::basic_iostream&lt;Ch, Tr&gt;& io);
<SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> Ch, <SPAN CLASS="keyword">typename</SPAN> Tr&gt;
<SPAN CLASS='omitted'>implementation-defined</SPAN> adapt(std::basic_streambuf&lt;Ch, Tr&gt;& sb);</PRE>
<A NAME='streams_template_params'></A>
<H4>Template Parameters</H4>
<TABLE STYLE='margin-left:2em' BORDER=0 CELLPADDING=2>
<TR>
<TR>
<TD VALIGN='top'><I>Ch</I></TD><TD WIDTH='2em' VALIGN='top'>-</TD>
<TD>A character type.</TD>
</TR>
<TR>
<TD VALIGN='top'><I>Tr</I></TD><TD WIDTH='2em' VALIGN='top'>-</TD>
<TD>A standard library character traits type (<A CLASS='bib_ref' HREF='../bibliography.html#iso'>[ISO]</A>, 21.1.1) with <CODE>char_type</CODE> equal to <CODE>Ch</CODE></A>
</TR>
</TABLE>
<A NAME='streams_return_value'></A>
<H4>Return Value</H4>
<P>Returns a <A HREF='../concepts/device.html'>Device</A> for accessing the sequence or sequences controlled by the given i/o stream or stream buffer.<SUP><A CLASS='footnote_ref' NAME='note_1_ref' HREF='#note_1'>[1]</A></SUP> The <A HREF='../modes.html'>i/o mode</A> of the Device is determined at the time it is added to a <CODE>filtering_streambuf</CODE> or <CODE>filtering_stream</CODE>.</P>
<!-- Begin Footnotes -->
<HR>
<P>
<A CLASS='footnote_ref' NAME='note_1' HREF='#note_1_ref'><SUP>[1]</SUP></A>Striclty speaking, the object returned is not a true Device, since its i/o mode and possibly its character type are indeterminate. It is better termed a <SPAN CLASS='term'>pseudo Device</SPAN>.
</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>