Micro template library A library for building device drivers
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 

161 lignes
71 KiB

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=9"/>
  6. <meta name="generator" content="Doxygen 1.8.14"/>
  7. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  8. <title>uTL: include/utl/dev/out_dev.h Source File</title>
  9. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  10. <script type="text/javascript" src="jquery.js"></script>
  11. <script type="text/javascript" src="dynsections.js"></script>
  12. <link href="navtree.css" rel="stylesheet" type="text/css"/>
  13. <script type="text/javascript" src="resize.js"></script>
  14. <script type="text/javascript" src="navtreedata.js"></script>
  15. <script type="text/javascript" src="navtree.js"></script>
  16. <script type="text/javascript">
  17. /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  18. $(document).ready(initResizable);
  19. /* @license-end */</script>
  20. <link href="search/search.css" rel="stylesheet" type="text/css"/>
  21. <script type="text/javascript" src="search/searchdata.js"></script>
  22. <script type="text/javascript" src="search/search.js"></script>
  23. <link href="doxygen.css" rel="stylesheet" type="text/css" />
  24. </head>
  25. <body>
  26. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  27. <div id="titlearea">
  28. <table cellspacing="0" cellpadding="0">
  29. <tbody>
  30. <tr style="height: 56px;">
  31. <td id="projectalign" style="padding-left: 0.5em;">
  32. <div id="projectname">uTL
  33. </div>
  34. <div id="projectbrief">micro Template library</div>
  35. </td>
  36. </tr>
  37. </tbody>
  38. </table>
  39. </div>
  40. <!-- end header part -->
  41. <!-- Generated by Doxygen 1.8.14 -->
  42. <script type="text/javascript">
  43. /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  44. var searchBox = new SearchBox("searchBox", "search",false,'Search');
  45. /* @license-end */
  46. </script>
  47. <script type="text/javascript" src="menudata.js"></script>
  48. <script type="text/javascript" src="menu.js"></script>
  49. <script type="text/javascript">
  50. /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  51. $(function() {
  52. initMenu('',true,false,'search.php','Search');
  53. $(document).ready(function() { init_search(); });
  54. });
  55. /* @license-end */</script>
  56. <div id="main-nav"></div>
  57. </div><!-- top -->
  58. <div id="side-nav" class="ui-resizable side-nav-resizable">
  59. <div id="nav-tree">
  60. <div id="nav-tree-contents">
  61. <div id="nav-sync" class="sync"></div>
  62. </div>
  63. </div>
  64. <div id="splitbar" style="-moz-user-select:none;"
  65. class="ui-resizable-handle">
  66. </div>
  67. </div>
  68. <script type="text/javascript">
  69. /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  70. $(document).ready(function(){initNavTree('out__dev_8h_source.html','');});
  71. /* @license-end */
  72. </script>
  73. <div id="doc-content">
  74. <!-- window showing the filter options -->
  75. <div id="MSearchSelectWindow"
  76. onmouseover="return searchBox.OnSearchSelectShow()"
  77. onmouseout="return searchBox.OnSearchSelectHide()"
  78. onkeydown="return searchBox.OnSearchSelectKey(event)">
  79. </div>
  80. <!-- iframe showing the search results (closed by default) -->
  81. <div id="MSearchResultsWindow">
  82. <iframe src="javascript:void(0)" frameborder="0"
  83. name="MSearchResults" id="MSearchResults">
  84. </iframe>
  85. </div>
  86. <div class="header">
  87. <div class="headertitle">
  88. <div class="title">out_dev.h</div> </div>
  89. </div><!--header-->
  90. <div class="contents">
  91. <a href="out__dev_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifndef __utl_dev_out_dev_h__</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#define __utl_dev_out_dev_h__</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="impl_8h.html">utl/core/impl.h</a>&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="crtp_8h.html">utl/core/crtp.h</a>&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="dev__iterators_8h.html">utl/dev/dev_iterators.h</a>&gt;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="meta_8h.html">utl/meta/meta.h</a>&gt;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceutl.html">utl</a> {</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> impl_t, <span class="keyword">typename</span> data_t, <span class="keywordtype">size_t</span> streamsize =0&gt;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html"> 54</a></span>&#160; <span class="keyword">class </span><a class="code" href="classutl_1_1out__dev.html">out_dev</a> {</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <a class="code" href="classutl_1_1out__dev.html#aad8c005ab9627877ea38997cdf5f07dc">_CRTP_IMPL</a>(impl_t);</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#a17ccf13d527b4c220b0e937e20d81aba"> 56</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1out__dev.html">out_dev_t</a> = <a class="code" href="classutl_1_1out__dev.html">out_dev &lt;impl_t, data_t, streamsize&gt;</a>; </div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#ac6b32afc51452a7dd2297a41f74e63e4"> 61</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1out__dev.html#ac6b32afc51452a7dd2297a41f74e63e4">data_type</a> = data_t;</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#abfb6a95c13fc63c09776141ad16e98e3"> 62</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1out__dev.html#abfb6a95c13fc63c09776141ad16e98e3">pointer_type</a> = data_t*;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#aebda5d42d26027e9266bfe74bf71a960"> 64</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1out__dev.html">type</a> = <a class="code" href="classutl_1_1out__dev.html#a17ccf13d527b4c220b0e937e20d81aba">out_dev_t</a>; </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="classutl_1_1out__dev.html#a0c04af11ec0f3f9954399d22069e314d">~out_dev</a> () = <span class="keywordflow">default</span>; </div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classutl_1_1out__dev.html#a0ceaf76475484f35174d96561dea73bf">out_dev</a> () = <span class="keywordflow">default</span>; </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <a class="code" href="classutl_1_1out__dev.html#a0ceaf76475484f35174d96561dea73bf">out_dev</a>(<span class="keyword">const</span> <a class="code" href="classutl_1_1out__dev.html">out_dev_t</a>&amp;) = <span class="keyword">delete</span>; </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classutl_1_1out__dev.html">out_dev_t</a>&amp; <a class="code" href="classutl_1_1out__dev.html#aba2f65a858ae47167f46979337299f44">operator= </a>(<span class="keyword">const</span> <a class="code" href="classutl_1_1out__dev.html">out_dev_t</a>&amp;) = <span class="keyword">delete</span>; </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504"> 80</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504">put_</a> (<span class="keyword">const</span> data_t&amp; data) { <span class="keywordflow">return</span> impl().put_ (data); }</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#a3bbf2bb1c25bae601cd0d6e2b1f886b2"> 81</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1out__dev.html#a3bbf2bb1c25bae601cd0d6e2b1f886b2">put_</a> (<span class="keyword">const</span> data_t* data, <span class="keywordtype">size_t</span> n) {</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; <span class="keywordflow">return</span> impl().put_ (data, n);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#a640214f205468c235dec25bab8fb6c08"> 99</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1out__dev.html#a640214f205468c235dec25bab8fb6c08">put</a> (<span class="keyword">const</span> data_t&amp; data) {</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504">put_</a> (data);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#a0cfe5f4d3c3e4fb21abe9e88101e0bb8"> 111</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1out__dev.html#a0cfe5f4d3c3e4fb21abe9e88101e0bb8">put</a> (<span class="keyword">const</span> data_t* data, <span class="keywordtype">size_t</span> n) {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504">put_</a> (data, n);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Src_t&gt;</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#a73612dfcce721cbc386bad3e7d6864b4"> 131</a></span>&#160; <a class="code" href="classutl_1_1out__dev.html">out_dev_t</a>&amp; <a class="code" href="classutl_1_1out__dev.html#a73612dfcce721cbc386bad3e7d6864b4">operator&lt;&lt; </a>(_Src_t&amp; src) {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; static_assert ((<span class="keyword">sizeof</span> (_Src_t)%<span class="keyword">sizeof</span>(data_t) == 0),</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="stringliteral">&quot;Source size must be an integer multiple of device&#39;s data size&quot;</span>);</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <a class="code" href="classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504">put_</a> (reinterpret_cast&lt;data_t*&gt;(&amp;src), <span class="keyword">sizeof</span>(_Src_t)/<span class="keyword">sizeof</span>(data_t));</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Src_t&gt;</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <a class="code" href="classutl_1_1out__dev.html#a17ccf13d527b4c220b0e937e20d81aba">out_dev_t</a>&amp; <a class="code" href="classutl_1_1out__dev.html#a73612dfcce721cbc386bad3e7d6864b4">operator&lt;&lt; </a>(_Src_t* src) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#a22dce1d313a4f6b4686d4253cbd7f485"> 142</a></span>&#160; <a class="code" href="classutl_1_1out__dev.html">out_dev_t</a>&amp; <a class="code" href="classutl_1_1out__dev.html#a73612dfcce721cbc386bad3e7d6864b4">operator&lt;&lt; </a>(<span class="keyword">const</span> data_t&amp; src) {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504">put_</a> (src);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1out__dev.html#ad7f16990cdb6d54a54c774224f758f13">iterator</a> = <a class="code" href="classutl_1_1outdev__it.html">outdev_it &lt;out_dev_t, data_t*, streamsize&gt;</a>; </div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#acaf94b09de592226f78d4d2d43f348ed"> 153</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1outdev__it.html">const_iterator</a> = <a class="code" href="classutl_1_1outdev__it.html">outdev_it &lt;const out_dev_t, data_t*, streamsize&gt;</a>; </div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#a6396fb83348828e37d853d1566b0d742"> 156</a></span>&#160; <a class="code" href="classutl_1_1outdev__it.html">iterator</a> <a class="code" href="classutl_1_1out__dev.html#a6396fb83348828e37d853d1566b0d742">begin</a> () noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#ad7f16990cdb6d54a54c774224f758f13">iterator</a>(<span class="keyword">this</span>, <a class="code" href="classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594ba8a7a14e955d212cd582610961e7e2769">iterator::beg</a>); }</div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#ab08cdc4935ec15a388e34610e905d375"> 157</a></span>&#160; <a class="code" href="classutl_1_1outdev__it.html">const_iterator</a> <a class="code" href="classutl_1_1out__dev.html#ab08cdc4935ec15a388e34610e905d375">begin</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#acaf94b09de592226f78d4d2d43f348ed">const_iterator</a>(<span class="keyword">this</span>, <a class="code" href="classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594ba8a7a14e955d212cd582610961e7e2769">iterator::beg</a>); }</div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#ace309e9fd1a113691c5a84fde268c676"> 158</a></span>&#160; <a class="code" href="classutl_1_1outdev__it.html">const_iterator</a> <a class="code" href="classutl_1_1out__dev.html#ace309e9fd1a113691c5a84fde268c676">cbegin</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#acaf94b09de592226f78d4d2d43f348ed">const_iterator</a>(<span class="keyword">this</span>, <a class="code" href="classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594ba8a7a14e955d212cd582610961e7e2769">iterator::beg</a>); }</div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#a34aeac23c0184d243c6631e713208e27"> 161</a></span>&#160; <a class="code" href="classutl_1_1outdev__it.html">iterator</a> <a class="code" href="classutl_1_1out__dev.html#a34aeac23c0184d243c6631e713208e27">end</a> () noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#ad7f16990cdb6d54a54c774224f758f13">iterator</a>(<span class="keyword">this</span>, iterator::eos); }</div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#a0e89b3e0a5bddc3031b543ef32eb401e"> 162</a></span>&#160; <a class="code" href="classutl_1_1outdev__it.html">const_iterator</a> <a class="code" href="classutl_1_1out__dev.html#a0e89b3e0a5bddc3031b543ef32eb401e">end</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#acaf94b09de592226f78d4d2d43f348ed">const_iterator</a>(<span class="keyword">this</span>, iterator::eos); }</div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev.html#a71487ce8df820dd688d1698b035fe4fe"> 163</a></span>&#160; <a class="code" href="classutl_1_1outdev__it.html">const_iterator</a> <a class="code" href="classutl_1_1out__dev.html#a71487ce8df820dd688d1698b035fe4fe">cend</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#acaf94b09de592226f78d4d2d43f348ed">const_iterator</a>(<span class="keyword">this</span>, iterator::eos); }</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; };</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> data_t, <span class="keywordtype">size_t</span> streamsize&gt;</div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html"> 177</a></span>&#160; <span class="keyword">class </span><a class="code" href="classutl_1_1out__dev.html">out_dev</a> &lt;<a class="code" href="structutl_1_1virtual__tag.html">virtual_tag</a>, data_t, streamsize&gt; {</div><div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3b7c1dad93f0ec25842afc436221db6b"> 178</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">out_dev_t</a> = <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">out_dev &lt;virtual_tag, data_t, streamsize&gt;</a>; </div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6ebf2bb2132e972cd9f2daffa67d981b"> 183</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6ebf2bb2132e972cd9f2daffa67d981b">data_type</a> = data_t;</div><div class="line"><a name="l00184"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a83ce1ff81d538c68649fe339241d6cff"> 184</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a83ce1ff81d538c68649fe339241d6cff">pointer_type</a> = data_t*;</div><div class="line"><a name="l00186"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac6d606494a0b663bf20bf180e33190e2"> 186</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">type</a> = <a class="code" href="classutl_1_1out__dev.html#a17ccf13d527b4c220b0e937e20d81aba">out_dev_t</a>; </div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classutl_1_1out__dev.html#a0c04af11ec0f3f9954399d22069e314d">~out_dev</a> () = <span class="keywordflow">default</span>; </div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <a class="code" href="classutl_1_1out__dev.html#a0ceaf76475484f35174d96561dea73bf">out_dev</a> () = <span class="keywordflow">default</span>; </div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classutl_1_1out__dev.html#a0ceaf76475484f35174d96561dea73bf">out_dev</a>(<span class="keyword">const</span> <a class="code" href="classutl_1_1out__dev.html">out_dev</a>&amp;) = <span class="keyword">delete</span>; </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">out_dev_t</a>&amp; <a class="code" href="classutl_1_1out__dev.html#aba2f65a858ae47167f46979337299f44">operator= </a>(<span class="keyword">const</span> <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">out_dev_t</a>&amp;) = <span class="keyword">delete</span>; </div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504">put_</a> (<span class="keyword">const</span> data_t&amp; data) = 0;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504">put_</a> (<span class="keyword">const</span> data_t* data, <span class="keywordtype">size_t</span> n) = 0;</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a7311e58e96e924cdd7f06ff4713f3317"> 231</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a7311e58e96e924cdd7f06ff4713f3317">put</a> (<span class="keyword">const</span> data_t&amp; data) { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504">put_</a> (data); }</div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa781ec6a6e500451a357f04b1436d8e0"> 232</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa781ec6a6e500451a357f04b1436d8e0">put</a> (<span class="keyword">const</span> data_t* data, <span class="keywordtype">size_t</span> n) { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504">put_</a> (data, n); }</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Src_t&gt;</div><div class="line"><a name="l00246"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a88944f88c0dfa832f42b49193bffcea9"> 246</a></span>&#160; <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">out_dev_t</a>&amp; <a class="code" href="classutl_1_1out__dev.html#a73612dfcce721cbc386bad3e7d6864b4">operator&lt;&lt; </a>(_Src_t&amp; src) {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; static_assert ((<span class="keyword">sizeof</span> (_Src_t)%<span class="keyword">sizeof</span>(data_t) == 0),</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="stringliteral">&quot;Source size must be an integer multiple of device&#39;s data size&quot;</span>);</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <a class="code" href="classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504">put_</a> (reinterpret_cast&lt;data_t*&gt;(&amp;src), <span class="keyword">sizeof</span>(_Src_t)/<span class="keyword">sizeof</span>(data_t));</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; }</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Src_t&gt;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="classutl_1_1out__dev.html#a17ccf13d527b4c220b0e937e20d81aba">out_dev_t</a>&amp; <a class="code" href="classutl_1_1out__dev.html#a73612dfcce721cbc386bad3e7d6864b4">operator&lt;&lt; </a>(_Src_t* src) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6b8b80722252f898b1acfce6083b4cf7"> 257</a></span>&#160; <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">out_dev_t</a>&amp; <a class="code" href="classutl_1_1out__dev.html#a73612dfcce721cbc386bad3e7d6864b4">operator&lt;&lt; </a>(<span class="keyword">const</span> data_t&amp; src) {</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160; <a class="code" href="classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504">put_</a> (src);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; }</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1out__dev.html#ad7f16990cdb6d54a54c774224f758f13">iterator</a> = <a class="code" href="classutl_1_1outdev__it.html">outdev_it &lt;out_dev_t, data_t*, streamsize&gt;</a>; </div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a690f4d4b54e352b64bd484a15138df64"> 268</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1outdev__it.html">const_iterator</a> = <a class="code" href="classutl_1_1outdev__it.html">outdev_it &lt;const out_dev_t, data_t*, streamsize&gt;</a>; </div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;</div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac3df041ff2e72454035cd879ddf1332d"> 271</a></span>&#160; <a class="code" href="classutl_1_1outdev__it.html">iterator</a> <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac3df041ff2e72454035cd879ddf1332d">begin</a> () noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#ad7f16990cdb6d54a54c774224f758f13">iterator</a>(<span class="keyword">this</span>, <a class="code" href="classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594ba8a7a14e955d212cd582610961e7e2769">iterator::beg</a>); }</div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a35edcf840e3ba2b53734a128181da6e8"> 272</a></span>&#160; <a class="code" href="classutl_1_1outdev__it.html">const_iterator</a> <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a35edcf840e3ba2b53734a128181da6e8">begin</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#acaf94b09de592226f78d4d2d43f348ed">const_iterator</a>(<span class="keyword">this</span>, <a class="code" href="classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594ba8a7a14e955d212cd582610961e7e2769">iterator::beg</a>); }</div><div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a41a29c14ad5206a122e6bec5e3314dc4"> 273</a></span>&#160; <a class="code" href="classutl_1_1outdev__it.html">const_iterator</a> <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a41a29c14ad5206a122e6bec5e3314dc4">cbegin</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#acaf94b09de592226f78d4d2d43f348ed">const_iterator</a>(<span class="keyword">this</span>, <a class="code" href="classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594ba8a7a14e955d212cd582610961e7e2769">iterator::beg</a>); }</div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#acabafe9e76d94c8044feb85996ebba5f"> 276</a></span>&#160; <a class="code" href="classutl_1_1outdev__it.html">iterator</a> <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#acabafe9e76d94c8044feb85996ebba5f">end</a> () noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#ad7f16990cdb6d54a54c774224f758f13">iterator</a>(<span class="keyword">this</span>, iterator::eos); }</div><div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3992eda54afec8aaa1cb8f040563add6"> 277</a></span>&#160; <a class="code" href="classutl_1_1outdev__it.html">const_iterator</a> <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3992eda54afec8aaa1cb8f040563add6">end</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#acaf94b09de592226f78d4d2d43f348ed">const_iterator</a>(<span class="keyword">this</span>, iterator::eos); }</div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6d316ddd0f1797724f976254297c28fc"> 278</a></span>&#160; <a class="code" href="classutl_1_1outdev__it.html">const_iterator</a> <a class="code" href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6d316ddd0f1797724f976254297c28fc">cend</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1out__dev.html#acaf94b09de592226f78d4d2d43f348ed">const_iterator</a>(<span class="keyword">this</span>, iterator::eos); }</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; };</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;<span class="preprocessor"> #if defined _utl_have_concepts</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Tp&gt;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; concept <span class="keywordtype">bool</span> <a class="code" href="namespaceutl.html#a77f27f594c8696fcfbc85a9ec66c11f1">Out_dev</a> = requires (_Tp t, <span class="keyword">const</span> _Tp ct, <span class="keyword">typename</span> _Tp::data_type v) {</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="comment">// Object type</span></div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; requires !std::is_copy_constructible&lt;_Tp&gt;::value;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; requires !std::is_copy_assignable&lt;_Tp&gt;::value;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="comment">// Methods</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; {t.put(v)} -&gt; <a class="code" href="namespaceutl.html#a22cbecb50ee5c1032de66133e96cbac6">size_t</a>;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {t.put(&amp;v, <span class="keyword">sizeof</span>(v))} -&gt; <a class="code" href="namespaceutl.html#a22cbecb50ee5c1032de66133e96cbac6">size_t</a>;</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="comment">// Operators</span></div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; t &lt;&lt; v;</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="comment">// Iterators</span></div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keyword">typename</span> _Tp::const_iterator;</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; requires Outdev_it&lt;typename _Tp::iterator&gt;;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; requires Outdev_it&lt;typename _Tp::const_iterator&gt;;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; { t.begin() } -&gt; <span class="keyword">typename</span> _Tp::iterator;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; {ct.begin()} -&gt; <span class="keyword">typename</span> _Tp::const_iterator;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; { t.cbegin()} -&gt; <span class="keyword">typename</span> _Tp::const_iterator;</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; { t.end() } -&gt; <span class="keyword">typename</span> _Tp::iterator;</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; {ct.end()} -&gt; <span class="keyword">typename</span> _Tp::const_iterator;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; { t.cend()} -&gt; <span class="keyword">typename</span> _Tp::const_iterator;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; };</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160;<span class="preprocessor"> #else</span></div><div class="line"><a name="l00311"></a><span class="lineno"><a class="line" href="namespaceutl_1_1out__dev__details.html"> 311</a></span>&#160; <span class="keyword">namespace </span>out_dev_details {</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; <span class="keyword">using</span> std::declval;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="namespaceutl_1_1out__dev__details.html#adb92d30f8cf134da9586ef9d52801325"> 314</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Tp&gt; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1out__dev__details.html#adb92d30f8cf134da9586ef9d52801325">try_put1_t</a> = decltype (declval&lt;_Tp&gt;().put (declval&lt;const typename _Tp::data_type&amp;&gt;()));</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Tp&gt; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1out__dev__details.html#a314537b65eaf15b6bba5a6f5544f3ace">try_put2_t</a> = decltype (declval&lt;_Tp&gt;().put (declval&lt;const typename _Tp::data_type*&gt;(),</div><div class="line"><a name="l00316"></a><span class="lineno"><a class="line" href="namespaceutl_1_1out__dev__details.html#a314537b65eaf15b6bba5a6f5544f3ace"> 316</a></span>&#160; declval&lt;size_t&gt;()));</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="comment">// operators</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="comment">//template &lt;class _Tp&gt; using try_insert_t= decltype (declval&lt;_Tp&gt;() &lt;&lt; declval&lt;typename _Tp::data_type&amp;&gt;());</span></div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="comment">// iterator members</span></div><div class="line"><a name="l00320"></a><span class="lineno"><a class="line" href="namespaceutl_1_1out__dev__details.html#ab5980d368073d104e13d153e291dde86"> 320</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Tp&gt; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1out__dev__details.html#ab5980d368073d104e13d153e291dde86">try_begin_t</a> = decltype (declval&lt;_Tp&gt;().begin());</div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="namespaceutl_1_1out__dev__details.html#a83dcd42cb9186967654eb365ab0ce712"> 321</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Tp&gt; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1out__dev__details.html#a83dcd42cb9186967654eb365ab0ce712">tryc_begin_t</a> = decltype (declval&lt;const _Tp&gt;().begin());</div><div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="namespaceutl_1_1out__dev__details.html#a92a49420cc024aec06546ac041e7707a"> 322</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Tp&gt; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1out__dev__details.html#a92a49420cc024aec06546ac041e7707a">try_cbegin_t</a> = decltype (declval&lt;const _Tp&gt;().cbegin());</div><div class="line"><a name="l00323"></a><span class="lineno"><a class="line" href="namespaceutl_1_1out__dev__details.html#a7d24815b4a395378766a4e9f0535c926"> 323</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Tp&gt; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1out__dev__details.html#a7d24815b4a395378766a4e9f0535c926">try_end_t</a> = decltype (declval&lt;_Tp&gt;().begin());</div><div class="line"><a name="l00324"></a><span class="lineno"><a class="line" href="namespaceutl_1_1out__dev__details.html#ad76fb97793ff8c8f31b042d70114ded2"> 324</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Tp&gt; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1out__dev__details.html#ad76fb97793ff8c8f31b042d70114ded2">tryc_end_t</a> = decltype (declval&lt;const _Tp&gt;().begin());</div><div class="line"><a name="l00325"></a><span class="lineno"><a class="line" href="namespaceutl_1_1out__dev__details.html#a9f69f9ca8e1bf642bf63bfdd18c8d567"> 325</a></span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">class</span> _Tp&gt; <span class="keyword">using</span> <a class="code" href="namespaceutl_1_1out__dev__details.html#a9f69f9ca8e1bf642bf63bfdd18c8d567">try_cend_t</a> = decltype (declval&lt;const _Tp&gt;().cend());</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Tp, <span class="keyword">typename</span> =<span class="keywordtype">void</span>&gt;</div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="structutl_1_1out__dev__details_1_1is__out__dev__.html"> 329</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1out__dev__details_1_1is__out__dev__.html">is_out_dev_</a> : <a class="code" href="namespaceutl_1_1meta.html#a55511dbaa0adb605ce22dcec11f8d22d">false_</a> { };</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Tp&gt;</div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.html"> 333</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1out__dev__details_1_1is__out__dev__.html">is_out_dev_</a> &lt;_Tp,</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; <a class="code" href="group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad">void_t</a> &lt;</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; typename _Tp::data_type,</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; typename _Tp::pointer_type,</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; typename _Tp::iterator,</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; typename _Tp::const_iterator,</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160; <a class="code" href="namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c">use_if_same_t</a> &lt;try_put1_t &lt;_Tp&gt;, size_t&gt;,</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <a class="code" href="namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c">use_if_same_t</a> &lt;try_put2_t &lt;_Tp&gt;, size_t&gt;,</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="comment">//if_same_t &lt;try_insert_t&lt;_Tp&gt;,_Tp&amp;&gt;,</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <a class="code" href="namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c">use_if_same_t</a> &lt;try_begin_t&lt;_Tp&gt;, typename _Tp::iterator&gt;,</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; <a class="code" href="namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c">use_if_same_t</a> &lt;tryc_begin_t&lt;_Tp&gt;, typename _Tp::const_iterator&gt;,</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; <a class="code" href="namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c">use_if_same_t</a> &lt;try_cbegin_t&lt;_Tp&gt;, typename _Tp::const_iterator&gt;,</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; <a class="code" href="namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c">use_if_same_t</a> &lt;try_end_t&lt;_Tp&gt;, typename _Tp::iterator&gt;,</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <a class="code" href="namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c">use_if_same_t</a> &lt;tryc_end_t&lt;_Tp&gt;, typename _Tp::const_iterator&gt;,</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160; <a class="code" href="namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c">use_if_same_t</a> &lt;try_cend_t&lt;_Tp&gt;, typename _Tp::const_iterator&gt;</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160; &gt;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160; &gt; : <a class="code" href="namespaceutl_1_1meta.html#ae9a5a8fbe8202785f059935af219fb97">true_</a> { };</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160; }</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Tp&gt;</div><div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="namespaceutl.html#a77f27f594c8696fcfbc85a9ec66c11f1"> 357</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="namespaceutl.html#a77f27f594c8696fcfbc85a9ec66c11f1">Out_dev</a> = <a class="code" href="structutl_1_1out__dev__details_1_1is__out__dev__.html">out_dev_details::is_out_dev_&lt;_Tp&gt;::value</a>;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="preprocessor"> #endif</span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;} <span class="comment">//namespace utl</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* #ifndef __utl_dev_out_dev_h__ */</span><span class="preprocessor"></span></div><div class="ttc" id="classutl_1_1out__dev_html_abfb6a95c13fc63c09776141ad16e98e3"><div class="ttname"><a href="classutl_1_1out__dev.html#abfb6a95c13fc63c09776141ad16e98e3">utl::out_dev::pointer_type</a></div><div class="ttdeci">data_t * pointer_type</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00062">out_dev.h:62</a></div></div>
  92. <div class="ttc" id="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_a83ce1ff81d538c68649fe339241d6cff"><div class="ttname"><a href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a83ce1ff81d538c68649fe339241d6cff">utl::out_dev&lt; virtual_tag, data_t, streamsize &gt;::pointer_type</a></div><div class="ttdeci">data_t * pointer_type</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00184">out_dev.h:184</a></div></div>
  93. <div class="ttc" id="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html"><div class="ttname"><a href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">utl::out_dev&lt; virtual_tag, data_t, streamsize &gt;</a></div><div class="ttdoc">A virtual base class specialization. </div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00177">out_dev.h:177</a></div></div>
  94. <div class="ttc" id="classutl_1_1out__dev_html_a34aeac23c0184d243c6631e713208e27"><div class="ttname"><a href="classutl_1_1out__dev.html#a34aeac23c0184d243c6631e713208e27">utl::out_dev::end</a></div><div class="ttdeci">iterator end() noexcept</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00161">out_dev.h:161</a></div></div>
  95. <div class="ttc" id="meta_8h_html"><div class="ttname"><a href="meta_8h.html">meta.h</a></div><div class="ttdoc">Include all meta library. </div></div>
  96. <div class="ttc" id="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_a41a29c14ad5206a122e6bec5e3314dc4"><div class="ttname"><a href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a41a29c14ad5206a122e6bec5e3314dc4">utl::out_dev&lt; virtual_tag, data_t, streamsize &gt;::cbegin</a></div><div class="ttdeci">const_iterator cbegin() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00273">out_dev.h:273</a></div></div>
  97. <div class="ttc" id="group__detection_html_gae7373c997420d16cf37e542eb3cfa3ad"><div class="ttname"><a href="group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad">utl::meta::void_t</a></div><div class="ttdeci">void void_t</div><div class="ttdoc">void_t type alias </div><div class="ttdef"><b>Definition:</b> <a href="detection_8h_source.html#l00055">detection.h:55</a></div></div>
  98. <div class="ttc" id="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_a35edcf840e3ba2b53734a128181da6e8"><div class="ttname"><a href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a35edcf840e3ba2b53734a128181da6e8">utl::out_dev&lt; virtual_tag, data_t, streamsize &gt;::begin</a></div><div class="ttdeci">const_iterator begin() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00272">out_dev.h:272</a></div></div>
  99. <div class="ttc" id="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_a6ebf2bb2132e972cd9f2daffa67d981b"><div class="ttname"><a href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6ebf2bb2132e972cd9f2daffa67d981b">utl::out_dev&lt; virtual_tag, data_t, streamsize &gt;::data_type</a></div><div class="ttdeci">data_t data_type</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00183">out_dev.h:183</a></div></div>
  100. <div class="ttc" id="namespaceutl_1_1meta_html_ae9a5a8fbe8202785f059935af219fb97"><div class="ttname"><a href="namespaceutl_1_1meta.html#ae9a5a8fbe8202785f059935af219fb97">utl::meta::true_</a></div><div class="ttdeci">bool_&lt; true &gt; true_</div><div class="ttdoc">The type used as a compile-time boolean with true value. </div><div class="ttdef"><b>Definition:</b> <a href="integral_8h_source.html#l00068">integral.h:68</a></div></div>
  101. <div class="ttc" id="classutl_1_1out__dev_html_aad8c005ab9627877ea38997cdf5f07dc"><div class="ttname"><a href="classutl_1_1out__dev.html#aad8c005ab9627877ea38997cdf5f07dc">utl::out_dev::_CRTP_IMPL</a></div><div class="ttdeci">_CRTP_IMPL(impl_t)</div></div>
  102. <div class="ttc" id="namespaceutl_1_1out__dev__details_html_a314537b65eaf15b6bba5a6f5544f3ace"><div class="ttname"><a href="namespaceutl_1_1out__dev__details.html#a314537b65eaf15b6bba5a6f5544f3ace">utl::out_dev_details::try_put2_t</a></div><div class="ttdeci">decltype(declval&lt; _Tp &gt;().put(declval&lt; const typename _Tp::data_type * &gt;(), declval&lt; size_t &gt;())) try_put2_t</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00316">out_dev.h:316</a></div></div>
  103. <div class="ttc" id="crtp_8h_html"><div class="ttname"><a href="crtp_8h.html">crtp.h</a></div></div>
  104. <div class="ttc" id="classutl_1_1out__dev_html_a0cfe5f4d3c3e4fb21abe9e88101e0bb8"><div class="ttname"><a href="classutl_1_1out__dev.html#a0cfe5f4d3c3e4fb21abe9e88101e0bb8">utl::out_dev::put</a></div><div class="ttdeci">size_t put(const data_t *data, size_t n)</div><div class="ttdoc">Put interface. This function should send a stream of data_t objects to device. </div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00111">out_dev.h:111</a></div></div>
  105. <div class="ttc" id="classutl_1_1out__dev_html_a17ccf13d527b4c220b0e937e20d81aba"><div class="ttname"><a href="classutl_1_1out__dev.html#a17ccf13d527b4c220b0e937e20d81aba">utl::out_dev::out_dev_t</a></div><div class="ttdeci">out_dev&lt; impl_t, data_t, streamsize &gt; out_dev_t</div><div class="ttdoc">class type syntactic sugar </div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00056">out_dev.h:56</a></div></div>
  106. <div class="ttc" id="namespaceutl_1_1out__dev__details_html_adb92d30f8cf134da9586ef9d52801325"><div class="ttname"><a href="namespaceutl_1_1out__dev__details.html#adb92d30f8cf134da9586ef9d52801325">utl::out_dev_details::try_put1_t</a></div><div class="ttdeci">decltype(declval&lt; _Tp &gt;().put(declval&lt; const typename _Tp::data_type &amp; &gt;())) try_put1_t</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00314">out_dev.h:314</a></div></div>
  107. <div class="ttc" id="namespaceutl_html_ac5e425d39e8ee62e68664c6166d02d0c"><div class="ttname"><a href="namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c">utl::use_if_same_t</a></div><div class="ttdeci">meta::eval&lt; meta::enable_if&lt; meta::same_&lt; _T1, _T2 &gt;::value, _Ret &gt; &gt; use_if_same_t</div><div class="ttdef"><b>Definition:</b> <a href="stl_8h_source.html#l00055">stl.h:55</a></div></div>
  108. <div class="ttc" id="classutl_1_1out__dev_html_a6396fb83348828e37d853d1566b0d742"><div class="ttname"><a href="classutl_1_1out__dev.html#a6396fb83348828e37d853d1566b0d742">utl::out_dev::begin</a></div><div class="ttdeci">iterator begin() noexcept</div><div class="ttdoc">.begin implementation </div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00156">out_dev.h:156</a></div></div>
  109. <div class="ttc" id="namespaceutl_1_1out__dev__details_html_ad76fb97793ff8c8f31b042d70114ded2"><div class="ttname"><a href="namespaceutl_1_1out__dev__details.html#ad76fb97793ff8c8f31b042d70114ded2">utl::out_dev_details::tryc_end_t</a></div><div class="ttdeci">decltype(declval&lt; const _Tp &gt;().begin()) tryc_end_t</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00324">out_dev.h:324</a></div></div>
  110. <div class="ttc" id="classutl_1_1out__dev_html_a29e236940e8fb13387b264379136b504"><div class="ttname"><a href="classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504">utl::out_dev::put_</a></div><div class="ttdeci">size_t put_(const data_t &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00080">out_dev.h:80</a></div></div>
  111. <div class="ttc" id="classutl_1_1out__dev_html_ad7f16990cdb6d54a54c774224f758f13"><div class="ttname"><a href="classutl_1_1out__dev.html#ad7f16990cdb6d54a54c774224f758f13">utl::out_dev::iterator</a></div><div class="ttdeci">outdev_it&lt; out_dev_t, data_t *, streamsize &gt; iterator</div><div class="ttdoc">Iterator. </div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00152">out_dev.h:152</a></div></div>
  112. <div class="ttc" id="classutl_1_1outdev__it_html"><div class="ttname"><a href="classutl_1_1outdev__it.html">utl::outdev_it</a></div><div class="ttdoc">Output device iterator type. We &quot;future call&quot; interface methods from owner class to provide iterator ...</div><div class="ttdef"><b>Definition:</b> <a href="dev__iterators_8h_source.html#l00250">dev_iterators.h:250</a></div></div>
  113. <div class="ttc" id="structutl_1_1out__dev__details_1_1is__out__dev___html"><div class="ttname"><a href="structutl_1_1out__dev__details_1_1is__out__dev__.html">utl::out_dev_details::is_out_dev_</a></div><div class="ttdoc">Primary template to catch any non output device types. </div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00329">out_dev.h:329</a></div></div>
  114. <div class="ttc" id="namespaceutl_1_1meta_html_a55511dbaa0adb605ce22dcec11f8d22d"><div class="ttname"><a href="namespaceutl_1_1meta.html#a55511dbaa0adb605ce22dcec11f8d22d">utl::meta::false_</a></div><div class="ttdeci">bool_&lt; false &gt; false_</div><div class="ttdoc">The type used as a compile-time boolean with false value. </div><div class="ttdef"><b>Definition:</b> <a href="integral_8h_source.html#l00069">integral.h:69</a></div></div>
  115. <div class="ttc" id="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_a3992eda54afec8aaa1cb8f040563add6"><div class="ttname"><a href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3992eda54afec8aaa1cb8f040563add6">utl::out_dev&lt; virtual_tag, data_t, streamsize &gt;::end</a></div><div class="ttdeci">const_iterator end() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00277">out_dev.h:277</a></div></div>
  116. <div class="ttc" id="namespaceutl_html_a77f27f594c8696fcfbc85a9ec66c11f1"><div class="ttname"><a href="namespaceutl.html#a77f27f594c8696fcfbc85a9ec66c11f1">utl::Out_dev</a></div><div class="ttdeci">constexpr bool Out_dev</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00357">out_dev.h:357</a></div></div>
  117. <div class="ttc" id="namespaceutl_1_1out__dev__details_html_a92a49420cc024aec06546ac041e7707a"><div class="ttname"><a href="namespaceutl_1_1out__dev__details.html#a92a49420cc024aec06546ac041e7707a">utl::out_dev_details::try_cbegin_t</a></div><div class="ttdeci">decltype(declval&lt; const _Tp &gt;().cbegin()) try_cbegin_t</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00322">out_dev.h:322</a></div></div>
  118. <div class="ttc" id="namespaceutl_1_1out__dev__details_html_a9f69f9ca8e1bf642bf63bfdd18c8d567"><div class="ttname"><a href="namespaceutl_1_1out__dev__details.html#a9f69f9ca8e1bf642bf63bfdd18c8d567">utl::out_dev_details::try_cend_t</a></div><div class="ttdeci">decltype(declval&lt; const _Tp &gt;().cend()) try_cend_t</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00325">out_dev.h:325</a></div></div>
  119. <div class="ttc" id="namespaceutl_html_a22cbecb50ee5c1032de66133e96cbac6"><div class="ttname"><a href="namespaceutl.html#a22cbecb50ee5c1032de66133e96cbac6">utl::size_t</a></div><div class="ttdeci">std::size_t size_t</div><div class="ttdef"><b>Definition:</b> <a href="types_8h_source.html#l00037">types.h:37</a></div></div>
  120. <div class="ttc" id="namespaceutl_html"><div class="ttname"><a href="namespaceutl.html">utl</a></div><div class="ttdoc">STL&amp;#39;s core language concepts. </div><div class="ttdef"><b>Definition:</b> <a href="__1wire_8h_source.html#l00030">_1wire.h:30</a></div></div>
  121. <div class="ttc" id="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_acabafe9e76d94c8044feb85996ebba5f"><div class="ttname"><a href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#acabafe9e76d94c8044feb85996ebba5f">utl::out_dev&lt; virtual_tag, data_t, streamsize &gt;::end</a></div><div class="ttdeci">iterator end() noexcept</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00276">out_dev.h:276</a></div></div>
  122. <div class="ttc" id="namespaceutl_1_1out__dev__details_html_ab5980d368073d104e13d153e291dde86"><div class="ttname"><a href="namespaceutl_1_1out__dev__details.html#ab5980d368073d104e13d153e291dde86">utl::out_dev_details::try_begin_t</a></div><div class="ttdeci">decltype(declval&lt; _Tp &gt;().begin()) try_begin_t</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00320">out_dev.h:320</a></div></div>
  123. <div class="ttc" id="namespaceutl_1_1out__dev__details_html_a7d24815b4a395378766a4e9f0535c926"><div class="ttname"><a href="namespaceutl_1_1out__dev__details.html#a7d24815b4a395378766a4e9f0535c926">utl::out_dev_details::try_end_t</a></div><div class="ttdeci">decltype(declval&lt; _Tp &gt;().begin()) try_end_t</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00323">out_dev.h:323</a></div></div>
  124. <div class="ttc" id="classutl_1_1outdev__it_html_ab5cbe3695bf05af30b14b89f8a16594ba8a7a14e955d212cd582610961e7e2769"><div class="ttname"><a href="classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594ba8a7a14e955d212cd582610961e7e2769">utl::outdev_it::beg</a></div><div class="ttdoc">Points the first item (relative address) </div><div class="ttdef"><b>Definition:</b> <a href="dev__iterators_8h_source.html#l00266">dev_iterators.h:266</a></div></div>
  125. <div class="ttc" id="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_aa781ec6a6e500451a357f04b1436d8e0"><div class="ttname"><a href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa781ec6a6e500451a357f04b1436d8e0">utl::out_dev&lt; virtual_tag, data_t, streamsize &gt;::put</a></div><div class="ttdeci">size_t put(const data_t *data, size_t n)</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00232">out_dev.h:232</a></div></div>
  126. <div class="ttc" id="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_a6d316ddd0f1797724f976254297c28fc"><div class="ttname"><a href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6d316ddd0f1797724f976254297c28fc">utl::out_dev&lt; virtual_tag, data_t, streamsize &gt;::cend</a></div><div class="ttdeci">const_iterator cend() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00278">out_dev.h:278</a></div></div>
  127. <div class="ttc" id="classutl_1_1out__dev_html_a640214f205468c235dec25bab8fb6c08"><div class="ttname"><a href="classutl_1_1out__dev.html#a640214f205468c235dec25bab8fb6c08">utl::out_dev::put</a></div><div class="ttdeci">size_t put(const data_t &amp;data)</div><div class="ttdoc">Put interface. This function should send a single data_t object to device. </div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00099">out_dev.h:99</a></div></div>
  128. <div class="ttc" id="classutl_1_1out__dev_html_acaf94b09de592226f78d4d2d43f348ed"><div class="ttname"><a href="classutl_1_1out__dev.html#acaf94b09de592226f78d4d2d43f348ed">utl::out_dev::const_iterator</a></div><div class="ttdeci">outdev_it&lt; const out_dev_t, data_t *, streamsize &gt; const_iterator</div><div class="ttdoc">Const iterator. </div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00153">out_dev.h:153</a></div></div>
  129. <div class="ttc" id="classutl_1_1out__dev_html_ace309e9fd1a113691c5a84fde268c676"><div class="ttname"><a href="classutl_1_1out__dev.html#ace309e9fd1a113691c5a84fde268c676">utl::out_dev::cbegin</a></div><div class="ttdeci">const_iterator cbegin() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00158">out_dev.h:158</a></div></div>
  130. <div class="ttc" id="classutl_1_1out__dev_html_aba2f65a858ae47167f46979337299f44"><div class="ttname"><a href="classutl_1_1out__dev.html#aba2f65a858ae47167f46979337299f44">utl::out_dev::operator=</a></div><div class="ttdeci">out_dev_t &amp; operator=(const out_dev_t &amp;)=delete</div></div>
  131. <div class="ttc" id="dev__iterators_8h_html"><div class="ttname"><a href="dev__iterators_8h.html">dev_iterators.h</a></div><div class="ttdoc">Iterator collection for devices. </div></div>
  132. <div class="ttc" id="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_ac3df041ff2e72454035cd879ddf1332d"><div class="ttname"><a href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac3df041ff2e72454035cd879ddf1332d">utl::out_dev&lt; virtual_tag, data_t, streamsize &gt;::begin</a></div><div class="ttdeci">iterator begin() noexcept</div><div class="ttdoc">.begin implementation </div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00271">out_dev.h:271</a></div></div>
  133. <div class="ttc" id="classutl_1_1out__dev_html_a3bbf2bb1c25bae601cd0d6e2b1f886b2"><div class="ttname"><a href="classutl_1_1out__dev.html#a3bbf2bb1c25bae601cd0d6e2b1f886b2">utl::out_dev::put_</a></div><div class="ttdeci">size_t put_(const data_t *data, size_t n)</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00081">out_dev.h:81</a></div></div>
  134. <div class="ttc" id="namespaceutl_1_1out__dev__details_html_a83dcd42cb9186967654eb365ab0ce712"><div class="ttname"><a href="namespaceutl_1_1out__dev__details.html#a83dcd42cb9186967654eb365ab0ce712">utl::out_dev_details::tryc_begin_t</a></div><div class="ttdeci">decltype(declval&lt; const _Tp &gt;().begin()) tryc_begin_t</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00321">out_dev.h:321</a></div></div>
  135. <div class="ttc" id="classutl_1_1out__dev_html_a73612dfcce721cbc386bad3e7d6864b4"><div class="ttname"><a href="classutl_1_1out__dev.html#a73612dfcce721cbc386bad3e7d6864b4">utl::out_dev::operator&lt;&lt;</a></div><div class="ttdeci">out_dev_t &amp; operator&lt;&lt;(_Src_t &amp;src)</div><div class="ttdoc">Template operator&lt;&lt; implementation for for all by value/ref parameters. </div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00131">out_dev.h:131</a></div></div>
  136. <div class="ttc" id="classutl_1_1out__dev_html_a71487ce8df820dd688d1698b035fe4fe"><div class="ttname"><a href="classutl_1_1out__dev.html#a71487ce8df820dd688d1698b035fe4fe">utl::out_dev::cend</a></div><div class="ttdeci">const_iterator cend() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00163">out_dev.h:163</a></div></div>
  137. <div class="ttc" id="structutl_1_1virtual__tag_html"><div class="ttname"><a href="structutl_1_1virtual__tag.html">utl::virtual_tag</a></div><div class="ttdoc">virtual support tag type </div><div class="ttdef"><b>Definition:</b> <a href="crtp_8h_source.html#l00040">crtp.h:40</a></div></div>
  138. <div class="ttc" id="classutl_1_1out__dev_html_ab08cdc4935ec15a388e34610e905d375"><div class="ttname"><a href="classutl_1_1out__dev.html#ab08cdc4935ec15a388e34610e905d375">utl::out_dev::begin</a></div><div class="ttdeci">const_iterator begin() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00157">out_dev.h:157</a></div></div>
  139. <div class="ttc" id="classutl_1_1out__dev_html_ac6b32afc51452a7dd2297a41f74e63e4"><div class="ttname"><a href="classutl_1_1out__dev.html#ac6b32afc51452a7dd2297a41f74e63e4">utl::out_dev::data_type</a></div><div class="ttdeci">data_t data_type</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00061">out_dev.h:61</a></div></div>
  140. <div class="ttc" id="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_a7311e58e96e924cdd7f06ff4713f3317"><div class="ttname"><a href="classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a7311e58e96e924cdd7f06ff4713f3317">utl::out_dev&lt; virtual_tag, data_t, streamsize &gt;::put</a></div><div class="ttdeci">size_t put(const data_t &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00231">out_dev.h:231</a></div></div>
  141. <div class="ttc" id="classutl_1_1out__dev_html_a0c04af11ec0f3f9954399d22069e314d"><div class="ttname"><a href="classutl_1_1out__dev.html#a0c04af11ec0f3f9954399d22069e314d">utl::out_dev::~out_dev</a></div><div class="ttdeci">~out_dev()=default</div><div class="ttdoc">Allow destructor from derived only. </div></div>
  142. <div class="ttc" id="classutl_1_1out__dev_html_a0e89b3e0a5bddc3031b543ef32eb401e"><div class="ttname"><a href="classutl_1_1out__dev.html#a0e89b3e0a5bddc3031b543ef32eb401e">utl::out_dev::end</a></div><div class="ttdeci">const_iterator end() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00162">out_dev.h:162</a></div></div>
  143. <div class="ttc" id="impl_8h_html"><div class="ttname"><a href="impl_8h.html">impl.h</a></div><div class="ttdoc">Implementation detail main forward header. </div></div>
  144. <div class="ttc" id="classutl_1_1out__dev_html_a0ceaf76475484f35174d96561dea73bf"><div class="ttname"><a href="classutl_1_1out__dev.html#a0ceaf76475484f35174d96561dea73bf">utl::out_dev::out_dev</a></div><div class="ttdeci">out_dev()=default</div><div class="ttdoc">A default constructor from derived only. </div></div>
  145. <div class="ttc" id="classutl_1_1out__dev_html"><div class="ttname"><a href="classutl_1_1out__dev.html">utl::out_dev</a></div><div class="ttdoc">Abstract base classes for output devices. </div><div class="ttdef"><b>Definition:</b> <a href="out__dev_8h_source.html#l00054">out_dev.h:54</a></div></div>
  146. </div><!-- fragment --></div><!-- contents -->
  147. </div><!-- doc-content -->
  148. <!-- start footer part -->
  149. <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  150. <ul>
  151. <li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_82754f54d9380477ef02477185c1f103.html">utl</a></li><li class="navelem"><a class="el" href="dir_e9da18de27e34a68f4aee9f9a960d991.html">dev</a></li><li class="navelem"><a class="el" href="out__dev_8h.html">out_dev.h</a></li>
  152. <li class="footer">Generated by
  153. <a href="http://www.doxygen.org/index.html">
  154. <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
  155. </ul>
  156. </div>
  157. </body>
  158. </html>