device.html 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <HTML>
  3. <HEAD>
  4. <TITLE>Class Template device</TITLE>
  5. <LINK REL="stylesheet" HREF="../../../../boost.css">
  6. <LINK REL="stylesheet" HREF="../theme/iostreams.css">
  7. </HEAD>
  8. <BODY>
  9. <!-- Begin Banner -->
  10. <H1 CLASS="title">Class Template <CODE>device</CODE></H1>
  11. <HR CLASS="banner">
  12. <!-- End Banner -->
  13. <DL class="page-index">
  14. <DT><A href="#description">Description</A></DT>
  15. <DT><A href="#headers">Headers</A></DT>
  16. <DT><A href="#reference">Reference</A></DT>
  17. </DL>
  18. <HR>
  19. <A NAME="description"></A>
  20. <H2>Description</H2>
  21. <P>
  22. The class template <CODE>device</CODE>, its subclass <CODE>wdevice</CODE> and their specializations <CODE>source</CODE>, <CODE>sink</CODE>, <CODE>wsource</CODE> and <CODE>wsink</CODE> are provided by the Iostreams library to ease the definitions of new models of the various <A HREF="../guide/concepts.html#device_concepts">Device Concepts</A>. These templates and <CODE>typedef</CODE>s are intended to be used as base classes for user-defined Devices. They supply the member types <CODE>char_type</CODE> and <CODE>category</CODE> used by the Iostreams library.
  23. </P>
  24. <P>
  25. The supplied <CODE>category</CODE> member is convertible to <A HREF="../guide/traits.html#category_tags"><CODE>closable_tag</CODE></A> and to <A HREF="../guide/traits.html#category_tags"><CODE>localizable_tag</CODE></A>. This allows users to define models of the concepts <A HREF="../concepts/closable.html">Closable</A> and <A HREF="../concepts/closable.html">Localizable</A> simply by providing definitions of member functions <CODE>close</CODE> and <CODE>imbue</CODE>.
  26. </P>
  27. <A NAME="headers"></A>
  28. <H2>Headers</H2>
  29. <DL class="page-index">
  30. <DT><A CLASS="header" HREF="../../../../boost/iostreams/concepts.hpp"><CODE>&lt;boost/iostreams/concepts.hpp&gt;</CODE></A></DT>
  31. </DL>
  32. <A NAME="reference"></A>
  33. <H2>Reference</H2>
  34. <A NAME="synopsis"></A>
  35. <H3>Synopsis</H3>
  36. <PRE CLASS="broken_ie"><SPAN CLASS="keyword">namespace</SPAN> boost{ <SPAN CLASS="keyword">namespace</SPAN> iostreams {
  37. <SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> Mode, <SPAN CLASS="keyword">typename</SPAN> Ch = <SPAN CLASS="keyword">char</SPAN>&gt;
  38. <SPAN CLASS="keyword">struct</SPAN> <A CLASS="documented" HREF="#description">device</A>;
  39. <SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> Mode, <SPAN CLASS="keyword">typename</SPAN> Ch = <SPAN CLASS="keyword">wchar_t</SPAN>&gt;
  40. <SPAN CLASS="keyword">struct</SPAN> <SPAN CLASS="defined">wdevice</SPAN> : device&lt;Mode, Ch&gt; { };
  41. <SPAN CLASS="keyword">typedef</SPAN> device&lt;input&gt; <SPAN CLASS="defined">source</SPAN></A>;
  42. <SPAN CLASS="keyword">typedef</SPAN> device&lt;output&gt; <SPAN CLASS="defined">sink</SPAN>;
  43. <SPAN CLASS="keyword">typedef</SPAN> wdevice&lt;input&gt; <SPAN CLASS="defined">wsource</SPAN>;
  44. <SPAN CLASS="keyword">typedef</SPAN> wdevice&lt;output&gt; <SPAN CLASS="defined">wsink</SPAN>;
  45. <SPAN CLASS="keyword">template</SPAN>&lt;<SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#template_params">Mode</A>, <SPAN CLASS="keyword">typename</SPAN> <A CLASS="documented" HREF="#template_params">Ch</A> = <SPAN CLASS="keyword">char</SPAN>&gt;
  46. <SPAN CLASS="keyword">struct</SPAN> <A CLASS="documented" HREF="#description">device</A> {
  47. <SPAN CLASS="keyword">typedef</SPAN> Ch char_type;
  48. <SPAN CLASS="keyword">typedef</SPAN> <A STYLE="text-decoration:none" HREF="#category"><SPAN CLASS="omitted">see below</SPAN></A> category;
  49. <SPAN CLASS="keyword">void</SPAN> <A CLASS="documented" HREF="#close">close</A>();
  50. <SPAN CLASS="keyword">void</SPAN> <A CLASS="documented" HREF="#close">close</A>(std::ios_base::openmode);
  51. <SPAN CLASS="keyword">void</SPAN> <A CLASS="documented" HREF="#imbue">imbue</A>(<SPAN CLASS="keyword">const</SPAN> std::locale&amp;);
  52. };
  53. } } <SPAN CLASS="comment">// End namespace boost::io</SPAN></PRE>
  54. <A NAME="template_params"></A>
  55. <H4>Template parameters</H4>
  56. <TABLE STYLE="margin-left:2em" BORDER=0 CELLPADDING=2>
  57. <TR>
  58. <TR>
  59. <TD VALIGN="top"><I>Mode</I></TD><TD WIDTH="2em" VALIGN="top">-</TD>
  60. <TD>A <A HREF="../guide/modes.html#mode_tags">mode tag</A>.</TD>
  61. </TR>
  62. <TR>
  63. <TD VALIGN="top"><I>Ch</I></TD><TD WIDTH="2em" VALIGN="top">-</TD>
  64. <TD>The character type</TD>
  65. </TR>
  66. </TABLE>
  67. <A NAME="category"></A>
  68. <H4><CODE>device::category</CODE></H4>
  69. <PRE CLASS="broken_ie"> <SPAN CLASS="keyword">typedef</SPAN> <SPAN CLASS="omitted">see below</SPAN> category;</PRE>
  70. <P>
  71. A category tag convertible to <A HREF="#template_params"><CODE>Mode</CODE></A>, <A HREF="../guide/traits.html#category_tags"><CODE>device_tag</CODE></A>, <A HREF="../guide/traits.html#category_tags"><CODE>closable_tag</CODE></A> and <A HREF="../guide/traits.html#category_tags"><CODE>localizable_tag</CODE></A>.
  72. </P>
  73. <A NAME="close"></A>
  74. <H4><CODE>device::close</CODE></H4>
  75. <PRE CLASS="broken_ie"> <SPAN CLASS="keyword">void</SPAN> <A CLASS="documented" HREF="#close">close</A>();
  76. <SPAN CLASS="keyword">void</SPAN> <A CLASS="documented" HREF="#close">close</A>(std::ios_base::openmode);</PRE>
  77. <P>
  78. Both overloads are implemented as no-ops. The second is available only if <A HREF="#template_params">Mode</A> is convertible to <A HREF="../guide/modes.html#mode_tags"><CODE>bidirectional</CODE></A>. The first is available only if Mode is <I>not</I> convertible to <A HREF="../guide/modes.html#mode_tags"><CODE>bidirectional</CODE></A>.
  79. </P>
  80. <P>
  81. Required by <A HREF="../concepts/closable.html">Closable</A>.
  82. </P>
  83. <A NAME="imbue"></A>
  84. <H4><CODE>device::imbue</CODE></H4>
  85. <PRE CLASS="broken_ie"> <SPAN CLASS="keyword">void</SPAN> <A CLASS="documented" HREF="#imbue">imbue</A>(<SPAN CLASS="keyword">const</SPAN> std::locale&amp;);</PRE>
  86. <P>
  87. Implemented as a no-op. Required by <A HREF="../concepts/localizable.html">Localizable</A>.
  88. </P>
  89. <!-- Begin Footer -->
  90. <HR>
  91. <P CLASS="copyright">&copy; Copyright 2008 <a href="http://www.coderage.com/" target="_top">CodeRage, LLC</a><br/>&copy; Copyright 2004-2007 <a href="https://www.boost.org/users/people/jonathan_turkanis.html" target="_top">Jonathan Turkanis</a></P>
  92. <P CLASS="copyright">
  93. 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>)
  94. </P>
  95. <!-- End Footer -->
  96. </BODY>