<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
    <TITLE>Sink</TITLE>
    <LINK REL="stylesheet" HREF="../../../../boost.css">
    <LINK REL="stylesheet" HREF="../theme/iostreams.css">
</HEAD>
<BODY>

<!-- Begin Banner -->

    <H1 CLASS="title">Sink</H1>
    <HR CLASS="banner">

<!-- End Banner -->

<H2>Definition</H2>

<P>
    A Sink is a <A HREF="device.html">Device</A> whose <A HREF="../guide/modes.html">mode</A> refines <A HREF="../guide/modes.html#output">output</A>. 
</P>

<H2>Description</H2>

<P>A Sink provides write-access to a sequence of characters of a given type. In general, a Sink may expose this sequence in two ways:</P> 
<OL>
    <LI STYLE="list-style-type:lower-roman">
        by defining a member function <CODE>write</CODE>, invoked indirectly by the Iostreams library through the function <A HREF="../functions/write.html"><CODE>boost::iostreams::write</CODE></A>;
    </LI>
    <LI STYLE="list-style-type:lower-roman">
        by defining a member function <CODE>output_sequence</CODE> returning a pair of pointers delimiting the sequence in its entirety.
    </LI>
</OL>

<P>As a special case, Boost.Iostreams treats standard output streams as Sinks. (For details, see <A HREF="../functions/write.html"><CODE>write</CODE></A>.)</P>

<P>The mode of a Sink is <A HREF="../guide/modes.html#output"><CODE>output</CODE></A> or one of its refinements.</P>

<H2>Note</H2>

<P>To be usable with the streams and stream buffers provided by the Boost Iostreams library, Sinks must model <A HREF="blocking.html">Blocking</A>.

<H2>Example</H2>

<P>A model of Sink can be defined as follows:</P>

<PRE CLASS="broken_ie"><SPAN CLASS="keyword">struct</SPAN> Sink {
    <SPAN CLASS="keyword">typedef</SPAN> <SPAN CLASS="keyword">char</SPAN>      char_type;
    <SPAN CLASS="keyword">typedef</SPAN> sink_tag  category;
    <SPAN CLASS="keyword">void</SPAN> write(<SPAN CLASS="keyword">const</SPAN> <SPAN CLASS="keyword">char</SPAN>* s, std::streamsize n) 
    {
        <SPAN CLASS="comment">// Write up to n characters from the buffer
        // s to the output sequence, returning the 
        // number of characters written</SPAN>
    }
};</PRE>

<P>
    Here <CODE>sink_tag</CODE> is a <A HREF="../guide/traits.html#category_tags">category tag</A> identifying the type as a model of Sink. Typically a Sink can be defined by deriving from the helper classes <A HREF="../classes/device.html#synopsis"><CODE>sink</CODE></A> or <A HREF="../classes/device.html#synopsis"><CODE>wsink</CODE></A> and defining a member function <CODE>write</CODE>.

<H2>Refinement of</H2>

<P><A HREF="device.html">Device</A>.</P>

<A NAME="types"></A>
<H2>Associated Types</H2>

<P>Same as <A HREF="device.html#types">Device</A>, with the following additional requirements:</P>

<TABLE CELLPADDING="5" BORDER="1">
    <TR><TD>Category</TD><TD>A type convertible to <A HREF="../guide/traits.html#category_tags"><CODE>device_tag</CODE></A> and to <A HREF="../guide/modes.html#mode_tags"><CODE>output</CODE></A></TD></TR>
</TABLE>

<A NAME="notation"></A>
<H2>Notation</H2>

<TABLE CELLPADDING="2">
    <TR><TD><CODE>S</CODE></TD><TD>- A type which is a model of Sink</TD></TR>
    <TR><TD><CODE>Ch</CODE></TD><TD>- The character type</TD></TR>
    <TR><TD><CODE>snk</CODE></TD><TD>- Object of type <CODE>S</CODE></TD></TR>
    <TR><TD><CODE>s</CODE></TD><TD>- Object of type <CODE>const Ch*</CODE></SPAN></TD></TR>
    <TR><TD><CODE>n</CODE></TD><TD>- Object of type <CODE>std::streamsize</CODE></TD></TR>
    <TR><TD><CODE>io</CODE></TD><TD>- Alias for namespace <CODE>boost::iostreams</CODE></TD></TR>
</TABLE>

<A NAME="expressions"></A>
<H2>Valid Expressions / Semantics</H2>

<P>Same as <A HREF="device.html#types">Device</A>, with the following additional requirements:</P>

<TABLE CELLPADDING="5" BORDER="1">
    <TR><TH>Expression</TH><TH>Expression Type</TH><TH>Category Precondition</TH><TH>Semantics</TH></TR>
    <TR>
        <TD>
            <PRE CLASS="plain_code"><CODE>typename <A HREF="../guide/traits.html#char_type_of_ref">char_type_of</A>&lt;S&gt;::type</CODE></PRE>
        </TD>
        <TD><CODE>typename</CODE> of the character type</TD>
        <TD ALIGN="center">-</TD><TD ALIGN="center">-</TD>
    </TR>
    <TR>
        <TD>
            <PRE CLASS="plain_code"><CODE>typename <A HREF="../guide/traits.html#category_ref">category_of</A>&lt;S&gt;::type</CODE></PRE>
        </TD>
        <TD><CODE>typename</CODE> of the category</TD>
        <TD ALIGN="center">-</TD><TD ALIGN="center">-</TD>
    </TR>
    <TR>
        <TD><PRE CLASS="plain_code"><CODE><A HREF="../functions/read.html">io::write</A>(snk, s, n)</CODE></PRE></TD>
        <TD><CODE>std::streamsize</CODE></TD>
        <TD>Not convertible to <A HREF="direct.html"><CODE>direct_tag</CODE></A></TD>
        <TD>
            Writes up to <CODE>n</CODE> characters from the sequence beginning at <CODE>s</CODE> to the output sequence controlled by <CODE>dev</CODE>, returning the number of characters written
        </TD>
    </TR>
    <TR>
        <TD><PRE CLASS="plain_code"><CODE>snk.output_sequence()</CODE></PRE></TD>
        <TD><PRE CLASS="plain_code"><CODE>std::pair&lt;Ch*,Ch*&gt;</CODE></PRE></TD>
        <TD>Convertible to <A HREF="direct.html"><CODE>direct_tag</CODE></A></TD>
        <TD>Returns a pair of pointers delimiting the sequence controlled by <CODE>snk</CODE></TD>
    </TR>
</TABLE>

<H2>Exceptions</H2>

<P>
    Errors which occur during the execution of member functions <CODE>write</CODE> or <CODE>output_sequence</CODE>
    are indicated by throwing exceptions. Attempting to write past the end of the sequence is always an error.
</P>

<P>
    After an exception is thrown, a Sink must be in a consistent state; further i/o operations may throw exceptions but must have well-defined behaviour.
</P>

<H2>Models</H2>

<UL>
    <LI>Standard output streams and stream buffers.
    <LI><A HREF="../classes/array.html#array_sink"><CODE>array_sink</CODE></A>, <A HREF="../classes/file.html#file_sink"><CODE>file_sink</CODE></A>, <A HREF="../classes/file_descriptor.html#file_descriptor_sink"><CODE>file_descriptor_sink</CODE></A>, <A HREF="../classes/mapped_file.html#mapped_file_sink"><CODE>mapped_file_sink</CODE></A>.
</UL>

<!-- Begin Footer -->

<HR>
<P CLASS="copyright">Revised 02 Feb 2008</P>

<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>
<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>