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

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>