Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_33_1/libs/iostreams/doc/classes/null.html @ 12

Last change on this file since 12 was 12, checked in by landauf, 18 years ago

added boost

  • Property svn:executable set to *
File size: 11.8 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<HTML>
3<HEAD>
4    <TITLE>Array Devices</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">Null Devices</H1>
13    <HR CLASS="banner">
14
15<!-- End Banner -->
16
17<DL class="page-index">
18  <DT><A href="#overview">Overview</A></DT>
19  <DT><A href="#acknowledgments">Acknowledgments</A></DT>
20  <DT><A href="#headers">Headers</A></DT>
21  <DT><A href="#reference">Reference</A>
22    <DL>
23      <DT><A href="#null_source">Class template <CODE>basic_null_source</CODE></A></DT>
24      <DT><A href="#null_sink">Class template <CODE>basic_null_sink</CODE></A></DT>
25      <DT><A href="#null_device">Class template <CODE>basic_null_device</CODE></A></DT>
26    </DL>
27  </DT>
28</DL>
29
30<HR>
31
32<A NAME="overview"></A>
33<H2>Overview</H2>
34
35<P>
36    The class templates <CODE>basic_null_source</CODE>, <CODE>basic_null_sink</CODE> and <CODE>basic_null_device</CODE> are models of Device whose member functions all have trivial implementations. A <CODE>basic_null_source</CODE> is a <A HREF="../concepts/source.html">Source</A> whose member function <CODE>read</CODE> returns <CODE>-1</CODE>, indicating end-of-sequence. A <CODE>basic_null_sink</CODE> is a <A HREF="../concepts/sink.html">Sink</A> whose member function <CODE>write</CODE> consumes and ignores the characters passed to it. A <CODE>basic_null_device</CODE> combines &#8212; depending on its template parameter <A HREF="#null_device_params"><CODE>Mode</CODE></A> &#8212; the trivial <CODE>read</CODE> and <CODE>write</CODE> functions just described with a member <CODE>seek</CODE> that always returns an invalid stream position.
37</P>
38
39<P>
40    In addition, each of the above templates is <A HREF='../concepts/closable.html'>Closable</A>, with a no-op implementation of <CODE>close</CODE>.
41</P>
42
43<A NAME="acknowledgments"></A>
44<H2>Acknowledgments</H2>
45
46<P>
47    The templates described here were inspired by <A HREF="../../../../people/daryle_walker.html" TARGET="_top">Daryle Walker's</A> <CODE>basic_nullbuf</CODE> template. <I>See</I> <A HREF="http://cvs.sourceforge.net/viewcvs.py/boost-sandbox/boost-sandbox/libs/io/doc/null_stream.html" TARGET="_top">Disconnected Streams</A>.
48</P>
49
50<A NAME="headers"></A>
51<H2>Headers</H2>
52
53<DL class="page-index">
54  <DT><A CLASS="header" HREF="../../../../boost/iostreams/device/null.hpp"><CODE>&lt;boost/iostreams/device/null.hpp&gt;</CODE></A></DT>
55</DL>
56
57<A NAME="reference"></A>
58<H2>Reference</H2>
59
60<A NAME="null_source"></A>
61<H3>Class template <CODE>basic_null_source</CODE></H3>
62
63<H4>Description</H4>
64
65<P>Model of <A HREF="../concepts/source.html">Source</A> whose member function <CODE>read</CODE> returns <CODE>-1</CODE>, indicating end-of-sequence.</P>
66
67<H4>Synopsis</H4>
68
69<PRE CLASS="broken_ie"><SPAN CLASS="keyword">namespace</SPAN> boost { <SPAN CLASS="keyword">namespace</SPAN> iostreams {
70
71<SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#null_source_params">Ch</A>&gt;
72<SPAN CLASS="keyword">class</SPAN> <A CLASS="documented" HREF="#null_source_params">basic_null_source</A> {
73<SPAN CLASS="keyword">public</SPAN>:
74    <SPAN CLASS="keyword">typedef</SPAN> Ch                        char_type;
75    <SPAN CLASS="keyword">typedef</SPAN> <SPAN CLASS='omitted'>[implementation-defined]</SPAN>  category;
76
77    <A CLASS="documented" HREF="#null_source_ctor">basic_null_source</A>();   
78    std::streamsize <A CLASS="documented" HREF="#null_source_read">read</A>(char_type* s, std::streamsize n);
79    <SPAN CLASS='keyword'>void</SPAN> <A CLASS='documented' HREF='#null_source_close'>close</A>();
80};
81
82<SPAN CLASS='keyword'>typedef</SPAN> basic_null_source&lt;<SPAN CLASS='keyword'>char</SPAN>&gt;     <SPAN CLASS='defined'>null_source</SPAN>;
83<SPAN CLASS='keyword'>typedef</SPAN> basic_null_source&lt;<SPAN CLASS='keyword'>wchar_t</SPAN>&gt;  <SPAN CLASS='defined'>wnull_source</SPAN>;
84
85} } <SPAN CLASS='comment'>// End namespace boost::io</SPAN></PRE>
86
87<A NAME="null_source_params"></A>
88<H4>Template parameters</H4>
89
90<TABLE STYLE="margin-left:2em">
91<TR>
92    <TD><P><I>Ch</I></TD><TD VALIGN="top">-</TD>
93    <TD><P>The <A HREF='../guide/traits.html#char_type'>character type</A> type.</TD>
94</TR>
95</TABLE>
96
97<A NAME="null_source_ctor"></A>
98
99<H4><CODE>basic_null_source::basic_null_source</CODE></H4>
100
101<A NAME="null_source_ctor"></A>
102<PRE CLASS="broken_ie">    basic_null_source();</PRE>
103
104<P>Constructs a <CODE>basic_null_source</CODE>.</P>
105
106<A NAME="null_source_read"></A>
107<H4><CODE>basic_null_source::read</CODE></H4>
108
109<PRE CLASS="broken_ie">    std::streamsize read(char_type* s, std::streamsize n);</PRE>
110
111<P>Returns <CODE>-1</CODE>.</P>
112
113<A NAME="null_source_close"></A>
114<H4><CODE>basic_null_source::close</CODE></H4>
115
116<PRE CLASS="broken_ie">    <SPAN CLASS='keyword'>void</SPAN> close();</PRE>
117
118<P>No-op.</P>
119
120<A NAME="null_sink"></A>
121<H3>Class template <CODE>basic_null_sink</CODE></H3>
122
123<H4>Description</H4>
124
125<P>Model of <A HREF="../concepts/sink.html">Sink</A> whose member function <CODE>write</CODE> consumes and ignores the contents of the character buffer passed to it.
126
127<H4>Synopsis</H4>
128
129<PRE CLASS="broken_ie"><SPAN CLASS="keyword">namespace</SPAN> boost { <SPAN CLASS="keyword">namespace</SPAN> iostreams {
130
131<SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#null_sink_params">Ch</A>&gt;
132<SPAN CLASS="keyword">class</SPAN> <A CLASS="documented" HREF="#null_sink_params">basic_null_sink</A> {
133<SPAN CLASS="keyword">public</SPAN>:
134    <SPAN CLASS="keyword">typedef</SPAN> Ch                        char_type;
135    <SPAN CLASS="keyword">typedef</SPAN> <SPAN CLASS='omitted'>[implementation-defined]</SPAN>  category;
136
137    <A CLASS="documented" HREF="#null_sink_ctor">basic_null_sink</A>();
138    std::streamsize <A CLASS="documented" HREF="#null_sink_write">write</A>(<SPAN CLASS='keyword'>const</SPAN> char_type* s, std::streamsize n);
139    <SPAN CLASS='keyword'>void</SPAN> <A CLASS='documented' HREF='#null_sink_close'>close</A>();
140};
141
142<SPAN CLASS='keyword'>typedef</SPAN> basic_null_sink&lt;<SPAN CLASS='keyword'>char</SPAN>&gt;     <SPAN CLASS='defined'>null_sink</SPAN>;
143<SPAN CLASS='keyword'>typedef</SPAN> basic_null_sink&lt;<SPAN CLASS='keyword'>wchar_t</SPAN>&gt;  <SPAN CLASS='defined'>wnull_sink</SPAN>;
144
145} } <SPAN CLASS='comment'>// End namespace boost::io</SPAN></PRE>
146
147<A NAME="null_sink_params"></A>
148<H4>Template parameters</H4>
149
150<TABLE STYLE="margin-left:2em">
151<TR>
152    <TD><P><I>Ch</I></TD><TD VALIGN="top">-</TD>
153    <TD><P>The <A HREF='../guide/traits.html#char_type'>character type</A> type.</TD>
154</TR>
155</TABLE>
156
157<A NAME="null_sink_ctor"></A>
158
159<H4><CODE>basic_null_sink::basic_null_sink</CODE></H4>
160
161<A NAME="null_sink_ctor"></A>
162<PRE CLASS="broken_ie">    basic_null_sink();</PRE>
163
164<P>Constructs a <CODE>basic_null_sink</CODE>.</P>
165
166<A NAME="null_sink_write"></A>
167<H4><CODE>basic_null_sink::write</CODE></H4>
168
169<PRE CLASS="broken_ie">    std::streamsize write(<SPAN CLASS='keyword'>const</SPAN> char_type* s, std::streamsize n);</PRE>
170
171<P>Returns <CODE>n</CODE>.</P>
172
173<A NAME="null_sink_close"></A>
174<H4><CODE>basic_null_sink::close</CODE></H4>
175
176<PRE CLASS="broken_ie">    <SPAN CLASS='keyword'>void</SPAN> close();</PRE>
177
178<P>No-op.</P>
179
180<A NAME="null_device"></A>
181<H3>Class template <CODE>basic_null_device</CODE></H3>
182
183<H4>Description</H4>
184
185<P>Model of <A HREF="../concepts/seekable_device.html">Device</A> whose mode is specified as a template parameter, and whose member functions have trivial implementations, as follows:</P>
186<UL>
187<LI><CODE>read</CODE> returns <CODE>-1</CODE>, indicating end-of-sequence
188<LI><CODE>write</CODE> consumes but ignores the entire contents of the character buffer passed to it
189<LI><CODE>seek</CODE> consumes but ignores the entire contents of the character buffer passed to it
190</UL>
191
192<H4>Synopsis</H4>
193
194<PRE CLASS="broken_ie"><SPAN CLASS="keyword">namespace</SPAN> boost { <SPAN CLASS="keyword">namespace</SPAN> iostreams {
195
196<SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#null_device_params">Ch</A>, <SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#null_device_params">Mode</A>&gt;
197<SPAN CLASS="keyword">class</SPAN> <A CLASS="documented" HREF="#null_device_params">basic_null_device</A> {
198<SPAN CLASS="keyword">public</SPAN>:   
199    <SPAN CLASS="keyword">typedef</SPAN> Ch                        char_type;
200    <SPAN CLASS="keyword">typedef</SPAN> <SPAN CLASS='omitted'>[implementation-defined]</SPAN>  category;
201
202    <A CLASS="documented" HREF="#null_device_ctor">basic_null_device</A>();
203    std::streamsize <A CLASS="documented" HREF="#null_device_read">read</A>(char_type* s, std::streamsize n);
204    std::streamsize <A CLASS="documented" HREF="#null_device_write">write</A>(<SPAN CLASS='keyword'>const</SPAN> char_type* s, std::streamsize n);
205    <A CLASS='documented' HREF='../functions/positioning.html#synopsis'>stream_offset</A> <A CLASS='documented' HREF='#null_device_seek'>seek</A>( <A CLASS='documented' HREF='../functions/positioning.html#synopsis'>stream_offset</A> off, std::ios_base::seekdir way,
206                        std::ios_base::openmode which =
207                            std::ios_base::in | std::ios_base::out );
208    <SPAN CLASS='keyword'>void</SPAN> <A CLASS='documented' HREF='#null_device_close'>close</A>();
209};
210
211} } <SPAN CLASS='comment'>// End namespace boost::io</SPAN></PRE>
212
213<A NAME="null_device_params"></A>
214<H4>Template parameters</H4>
215
216<TABLE STYLE="margin-left:2em">
217<TR>
218    <TD><P><I>Ch</I></TD><TD VALIGN="top">-</TD>
219    <TD><P>The <A HREF='../guide/traits.html#char_type'>character type</A>.</TD>
220</TR>
221<TR>
222    <TD><P><I>Mode</I></TD><TD VALIGN="top">-</TD>
223    <TD><P>The <A HREF='../guide/modes.html'>mode</A>.</TD>
224</TR>
225</TABLE>
226
227<A NAME="null_device_ctor"></A>
228<H4><CODE>basic_null_device::basic_null_device</CODE></H4>
229
230<PRE CLASS="broken_ie">    basic_null_device();</PRE>
231
232<P>Constructs a <CODE>basic_null_device</CODE>.</P>
233
234<A NAME="null_device_read"></A>
235<H4><CODE>basic_null_device::read</CODE></H4>
236
237<PRE CLASS="broken_ie">    std::streamsize read(char_type* s, std::streamsize n);</PRE>
238
239<P>Returns <CODE>-1</CODE>. Enabled if <CODE>Mode</CODE> refines <A HREF='../guide/modes.html#mode_tags'><CODE>input</CODE></A>.</P>
240
241<A NAME="null_device_write"></A>
242<H4><CODE>basic_null_device::write</CODE></H4>
243
244<PRE CLASS="broken_ie">    std::streamsize write(<SPAN CLASS='keyword'>const</SPAN> char_type* s, std::streamsize n);</PRE>
245
246<P>Returns <CODE>n</CODE>. Enabled if <CODE>Mode</CODE> refines <A HREF='../guide/modes.html#mode_tags'><CODE>output</CODE></A>.</P>
247
248<A NAME="null_device_seek"></A>
249<H4><CODE>basic_null_device::seek</CODE></H4>
250
251<PRE CLASS="broken_ie">     <A CLASS='documented' HREF='../functions/positioning.html#synopsis'>stream_offset</A> seek( <A CLASS='documented' HREF='../functions/positioning.html#synopsis'>stream_offset</A> off, std::ios_base::seekdir way,
252                         std::ios_base::openmode which =
253                             std::ios_base::in | std::ios_base::out );</PRE>
254
255<P>Returns an invalid stream position. Enabled if <CODE>Mode</CODE> permits random access.</P>
256
257<A NAME="null_device_close"></A>
258<H4><CODE>basic_null_device::close</CODE></H4>
259
260<PRE CLASS="broken_ie">    <SPAN CLASS='keyword'>void</SPAN> close();</PRE>
261
262<P>No-op.</P>
263
264<!-- Begin Footer -->
265
266<HR>
267<P CLASS="copyright">Revised
268<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->
26920 May, 2004
270<!--webbot bot="Timestamp" endspan i-checksum="38504" -->
271</P>
272
273<P CLASS="copyright">&copy; Copyright <A HREF="http://www.kangaroologic.com" TARGET="_top">Jonathan Turkanis</A>, 2004</P>
274<P CLASS="copyright"> 
275    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>)
276</P>
277
278<!-- End Footer -->
279
280</BODY>
Note: See TracBrowser for help on using the repository browser.