Micro template library A library for building device drivers
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

159 lines
72 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/inbuf_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('inbuf__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">inbuf_dev.h</div> </div>
  89. </div><!--header-->
  90. <div class="contents">
  91. <a href="inbuf__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="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#ifndef __utl_dev_inbuf_dev_h__</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#define __utl_dev_inbuf_dev_h__</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</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="l00026"></a><span class="lineno"> 26</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="l00027"></a><span class="lineno"> 27</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="l00028"></a><span class="lineno"> 28</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="l00029"></a><span class="lineno"> 29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceutl.html">utl</a> {</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</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="l00055"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html"> 55</a></span>&#160; <span class="keyword">class </span><a class="code" href="classutl_1_1inbuf__dev.html">inbuf_dev</a> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="classutl_1_1inbuf__dev.html#a6fe2f35813f2b4e94d8d21a4403c8221">_CRTP_IMPL</a>(impl_t);</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#abd832bf35fa1ae0881e8cd86386e5b6b"> 57</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1inbuf__dev.html">inbuf_dev_t</a> = <a class="code" href="classutl_1_1inbuf__dev.html">inbuf_dev &lt;impl_t, data_t, streamsize&gt;</a>; </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#ae660dce5b5111b0ea4743e32b3d2c3aa"> 62</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1inbuf__dev.html#ae660dce5b5111b0ea4743e32b3d2c3aa">data_type</a> = data_t;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#a345d3b465e9cf57ebe3a8df31b67fec7"> 63</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1inbuf__dev.html#a345d3b465e9cf57ebe3a8df31b67fec7">pointer_type</a> = data_t*;</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#ae429fbf167bbd96b2cc46094f3540b10"> 65</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1inbuf__dev.html">type</a> = <a class="code" href="classutl_1_1inbuf__dev.html#abd832bf35fa1ae0881e8cd86386e5b6b">inbuf_dev_t</a>; </div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="classutl_1_1inbuf__dev.html#a55763f1c3ba5610404df70bda1abe75b">~inbuf_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_1inbuf__dev.html#a9bc1f15ed57132539749d390d5bb03b9">inbuf_dev</a> () = <span class="keywordflow">default</span>; </div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; <a class="code" href="classutl_1_1inbuf__dev.html#a9bc1f15ed57132539749d390d5bb03b9">inbuf_dev</a>(<span class="keyword">const</span> <a class="code" href="classutl_1_1inbuf__dev.html">inbuf_dev_t</a>&amp;) = <span class="keyword">delete</span>; </div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classutl_1_1inbuf__dev.html">inbuf_dev_t</a>&amp; <a class="code" href="classutl_1_1inbuf__dev.html#a7aaf5bc892d6247cb6bb547cf331704c">operator= </a>(<span class="keyword">const</span> <a class="code" href="classutl_1_1inbuf__dev.html">inbuf_dev_t</a>&amp;) = <span class="keyword">delete</span>; </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#ac7af0c7df9eee2bcf02579b0fd1d8dea"> 81</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1inbuf__dev.html#ac7af0c7df9eee2bcf02579b0fd1d8dea">in_avail_</a> () { <span class="keywordflow">return</span> impl().in_avail_(); }</div><div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6"> 82</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6">get_</a> (data_t&amp; data) { <span class="keywordflow">return</span> impl().get_(data); }</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#a2f835b56beec0efc5d1cd2088e6a40cb"> 83</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1inbuf__dev.html#a2f835b56beec0efc5d1cd2088e6a40cb">get_</a> (data_t* data, <span class="keywordtype">size_t</span> n) { <span class="keywordflow">return</span> impl().get_ (data, n); }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00095"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#aa5b71a9b0c989c4686a053e9d5df9251"> 95</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1inbuf__dev.html#aa5b71a9b0c989c4686a053e9d5df9251">in_avail</a> () {</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#ac7af0c7df9eee2bcf02579b0fd1d8dea">in_avail_</a> ();</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#a7856963b0bb0bf294be53ea20f3564d0"> 108</a></span>&#160; <span class="keywordtype">size_t</span> <span class="keyword">get</span> (data_t&amp; data) {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6">get_</a> (data);</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; }</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;</div><div class="line"><a name="l00120"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#a9290fbfeebac0d161f800bc1522ea5a6"> 120</a></span>&#160; <span class="keywordtype">size_t</span> <span class="keyword">get</span> (data_t* data, <span class="keywordtype">size_t</span> n) {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6">get_</a> (data, n);</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Dst_t&gt;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#aca17fb240dfe221effa5a2092563d185"> 140</a></span>&#160; <a class="code" href="classutl_1_1inbuf__dev.html">inbuf_dev_t</a>&amp; <a class="code" href="classutl_1_1inbuf__dev.html#aca17fb240dfe221effa5a2092563d185">operator&gt;&gt; </a>(_Dst_t&amp; dst) {</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; static_assert ((<span class="keyword">sizeof</span> (_Dst_t)%<span class="keyword">sizeof</span>(data_t) == 0),</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <span class="stringliteral">&quot;Target size must be an integer multiple of device&#39;s data size&quot;</span>);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6">get_</a> (reinterpret_cast&lt;data_t*&gt;(&amp;dst), <span class="keyword">sizeof</span>(_Dst_t)/<span class="keyword">sizeof</span>(data_t));</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; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Dst_t&gt;</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="classutl_1_1inbuf__dev.html#abd832bf35fa1ae0881e8cd86386e5b6b">inbuf_dev_t</a>&amp; <a class="code" href="classutl_1_1inbuf__dev.html#aca17fb240dfe221effa5a2092563d185">operator&gt;&gt; </a>(_Dst_t* dst) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#a6b11ed7628520b4dfe0bd438ccc58197"> 151</a></span>&#160; <a class="code" href="classutl_1_1inbuf__dev.html">inbuf_dev_t</a>&amp; <a class="code" href="classutl_1_1inbuf__dev.html#aca17fb240dfe221effa5a2092563d185">operator&gt;&gt; </a>(data_t&amp; dst) {</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6">get_</a> (dst);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</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"> 156</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1inbuf__dev.html#a0c0827ae69fac778cec3abb179bfc0f3">iterator</a> = <a class="code" href="classutl_1_1indev__it.html">indev_it &lt;inbuf_dev_t, data_t*, streamsize&gt;</a>; </div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#a173c37503cdd40e7ac1be25759553c24"> 162</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1indev__it.html">const_iterator</a> = <a class="code" href="classutl_1_1indev__it.html">indev_it &lt;inbuf_dev_t, const data_t*, streamsize&gt;</a>; </div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#a0b7b02345e2306dc9f62a75029de71fb"> 165</a></span>&#160; <a class="code" href="classutl_1_1indev__it.html">iterator</a> <a class="code" href="classutl_1_1inbuf__dev.html#a0b7b02345e2306dc9f62a75029de71fb">begin</a> () noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#a0c0827ae69fac778cec3abb179bfc0f3">iterator</a>(<span class="keyword">this</span>, iterator::init); }</div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#acf6f21857302843661cdbbbeea61f05b"> 166</a></span>&#160; <a class="code" href="classutl_1_1indev__it.html">const_iterator</a> <a class="code" href="classutl_1_1inbuf__dev.html#acf6f21857302843661cdbbbeea61f05b">begin</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#a173c37503cdd40e7ac1be25759553c24">const_iterator</a>(<span class="keyword">this</span>, iterator::init); }</div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#a3c24ad3be57e15019e3fbd579e5fccb3"> 167</a></span>&#160; <a class="code" href="classutl_1_1indev__it.html">const_iterator</a> <a class="code" href="classutl_1_1inbuf__dev.html#a3c24ad3be57e15019e3fbd579e5fccb3">cbegin</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#a173c37503cdd40e7ac1be25759553c24">const_iterator</a>(<span class="keyword">this</span>, iterator::init); }</div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#aea05a40b3c8966d1dd3978b40e0c6ac8"> 170</a></span>&#160; <a class="code" href="classutl_1_1indev__it.html">iterator</a> <a class="code" href="classutl_1_1inbuf__dev.html#aea05a40b3c8966d1dd3978b40e0c6ac8">end</a> () noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#a0c0827ae69fac778cec3abb179bfc0f3">iterator</a>(<span class="keyword">this</span>, iterator::eos); }</div><div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#aa862f748551da0bd92341f8f125b8aa3"> 171</a></span>&#160; <a class="code" href="classutl_1_1indev__it.html">const_iterator</a> <a class="code" href="classutl_1_1inbuf__dev.html#aa862f748551da0bd92341f8f125b8aa3">end</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#a173c37503cdd40e7ac1be25759553c24">const_iterator</a>(<span class="keyword">this</span>, iterator::eos); }</div><div class="line"><a name="l00172"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev.html#a4b51121e0ecc1d43fd3fe7d05bb6fa56"> 172</a></span>&#160; <a class="code" href="classutl_1_1indev__it.html">const_iterator</a> <a class="code" href="classutl_1_1inbuf__dev.html#a4b51121e0ecc1d43fd3fe7d05bb6fa56">cend</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#a173c37503cdd40e7ac1be25759553c24">const_iterator</a>(<span class="keyword">this</span>, iterator::eos); }</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; };</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</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="l00188"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html"> 188</a></span>&#160; <span class="keyword">class </span><a class="code" href="classutl_1_1inbuf__dev.html">inbuf_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="l00190"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a368e42d8a91039e938145d78980b415b"> 190</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">inbuf_dev_t</a> = <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">inbuf_dev &lt;virtual_tag, data_t, streamsize&gt;</a>;</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a261cc04ccf7edd02e1ab69225322dc4b"> 195</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a261cc04ccf7edd02e1ab69225322dc4b">data_type</a> = data_t;</div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9d035a944db280e98fd41260ed463000"> 196</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9d035a944db280e98fd41260ed463000">pointer_type</a> = data_t*;</div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#af6c21cf92d9bffdd58fb4aa8f5ddb83f"> 198</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">type</a> = <a class="code" href="classutl_1_1inbuf__dev.html#abd832bf35fa1ae0881e8cd86386e5b6b">inbuf_dev_t</a>; </div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; <span class="keyword">virtual</span> <a class="code" href="classutl_1_1inbuf__dev.html#a55763f1c3ba5610404df70bda1abe75b">~inbuf_dev</a> () = <span class="keywordflow">default</span>; </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keyword">protected</span>:</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; <a class="code" href="classutl_1_1inbuf__dev.html#a9bc1f15ed57132539749d390d5bb03b9">inbuf_dev</a> () = <span class="keywordflow">default</span>; </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <a class="code" href="classutl_1_1inbuf__dev.html#a9bc1f15ed57132539749d390d5bb03b9">inbuf_dev</a>(<span class="keyword">const</span> <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">inbuf_dev_t</a>&amp;) = <span class="keyword">delete</span>; </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">inbuf_dev_t</a>&amp; <a class="code" href="classutl_1_1inbuf__dev.html#a7aaf5bc892d6247cb6bb547cf331704c">operator= </a>(<span class="keyword">const</span> <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">inbuf_dev_t</a>&amp;) = <span class="keyword">delete</span>; </div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keyword">private</span>:</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1inbuf__dev.html#ac7af0c7df9eee2bcf02579b0fd1d8dea">in_avail_</a> () = 0;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6">get_</a> (data_t&amp; data) = 0;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6">get_</a> (data_t* data, <span class="keywordtype">size_t</span> n) = 0;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keyword">public</span>:</div><div class="line"><a name="l00250"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aba2a9c8e96a8a865e1a24b52600a9f13"> 250</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aba2a9c8e96a8a865e1a24b52600a9f13">in_avail</a>() { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#ac7af0c7df9eee2bcf02579b0fd1d8dea">in_avail_</a>(); }</div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aef2177d9f52b58b6b5f5c9115fbc893e"> 251</a></span>&#160; <span class="keywordtype">size_t</span> <span class="keyword">get</span> (data_t&amp; data) { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6">get_</a> (data); }</div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac2028f0e3b8f48e12bbcbf22cecbfe83"> 252</a></span>&#160; <span class="keywordtype">size_t</span> <span class="keyword">get</span> (data_t* data, <span class="keywordtype">size_t</span> n) { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6">get_</a> (data, n); }</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Dst_t&gt;</div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a84a3364ab33a4fa6ac0983da47a9276f"> 269</a></span>&#160; <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">inbuf_dev_t</a>&amp; <a class="code" href="classutl_1_1inbuf__dev.html#aca17fb240dfe221effa5a2092563d185">operator&gt;&gt; </a>(_Dst_t&amp; dst) {</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; static_assert ((<span class="keyword">sizeof</span> (_Dst_t)%<span class="keyword">sizeof</span>(data_t) == 0),</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="stringliteral">&quot;Target size must be an integer multiple of device&#39;s data size&quot;</span>);</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <a class="code" href="classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6">get_</a> (reinterpret_cast&lt;data_t*&gt;(&amp;dst), <span class="keyword">sizeof</span>(_Dst_t)/<span class="keyword">sizeof</span>(data_t));</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; }</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Dst_t&gt;</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <a class="code" href="classutl_1_1inbuf__dev.html#abd832bf35fa1ae0881e8cd86386e5b6b">inbuf_dev_t</a>&amp; <a class="code" href="classutl_1_1inbuf__dev.html#aca17fb240dfe221effa5a2092563d185">operator&gt;&gt; </a>(_Dst_t* dst) = <span class="keyword">delete</span>;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aefdbcf1d006494f612d6fcd8795ba472"> 280</a></span>&#160; <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">inbuf_dev_t</a>&amp; <a class="code" href="classutl_1_1inbuf__dev.html#aca17fb240dfe221effa5a2092563d185">operator&gt;&gt; </a>(data_t&amp; dst) {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <a class="code" href="classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6">get_</a> (dst);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1inbuf__dev.html#a0c0827ae69fac778cec3abb179bfc0f3">iterator</a> = <a class="code" href="classutl_1_1indev__it.html">indev_it &lt;inbuf_dev_t, data_t*, streamsize&gt;</a>; </div><div class="line"><a name="l00291"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa27a4fdb726f1b44d965ebcd84457aab"> 291</a></span>&#160; <span class="keyword">using</span> <a class="code" href="classutl_1_1indev__it.html">const_iterator</a> = <a class="code" href="classutl_1_1indev__it.html">indev_it &lt;inbuf_dev_t, const data_t*, streamsize&gt;</a>; </div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a70046c3c1e61b596c7e49f1f45510644"> 294</a></span>&#160; <a class="code" href="classutl_1_1indev__it.html">iterator</a> <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a70046c3c1e61b596c7e49f1f45510644">begin</a> () noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#a0c0827ae69fac778cec3abb179bfc0f3">iterator</a>(<span class="keyword">this</span>, iterator::init); }</div><div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a5367418a80e15d0f087acc6b977c911c"> 295</a></span>&#160; <a class="code" href="classutl_1_1indev__it.html">const_iterator</a> <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a5367418a80e15d0f087acc6b977c911c">begin</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#a173c37503cdd40e7ac1be25759553c24">const_iterator</a>(<span class="keyword">this</span>, iterator::init); }</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6c8cceaa03a16daff1db33f45c79082c"> 296</a></span>&#160; <a class="code" href="classutl_1_1indev__it.html">const_iterator</a> <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6c8cceaa03a16daff1db33f45c79082c">cbegin</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#a173c37503cdd40e7ac1be25759553c24">const_iterator</a>(<span class="keyword">this</span>, iterator::init); }</div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a0a85ea0b10edeb155b59d1a3dff43382"> 299</a></span>&#160; <a class="code" href="classutl_1_1indev__it.html">iterator</a> <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a0a85ea0b10edeb155b59d1a3dff43382">end</a> () noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#a0c0827ae69fac778cec3abb179bfc0f3">iterator</a>(<span class="keyword">this</span>, iterator::eos); }</div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa81447a9ed7f2428f587b42ecf8bc007"> 300</a></span>&#160; <a class="code" href="classutl_1_1indev__it.html">const_iterator</a> <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa81447a9ed7f2428f587b42ecf8bc007">end</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#a173c37503cdd40e7ac1be25759553c24">const_iterator</a>(<span class="keyword">this</span>, iterator::eos); }</div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#abe9c16e5322249a05df6eb968a8adb56"> 301</a></span>&#160; <a class="code" href="classutl_1_1indev__it.html">const_iterator</a> <a class="code" href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#abe9c16e5322249a05df6eb968a8adb56">cend</a> () const noexcept { <span class="keywordflow">return</span> <a class="code" href="classutl_1_1inbuf__dev.html#a173c37503cdd40e7ac1be25759553c24">const_iterator</a>(<span class="keyword">this</span>, iterator::eos); }</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; };</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;<span class="preprocessor">#if defined _utl_have_concepts</span></div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Tp&gt;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; concept <span class="keywordtype">bool</span> <a class="code" href="namespaceutl.html#ac447a457f18a1c4dcd1dddb4c2789006">Inbuf_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="l00313"></a><span class="lineno"> 313</span>&#160; <span class="comment">// Object type</span></div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160;<span class="comment">// requires std::is_default_constructible&lt;_Tp&gt;::value;</span></div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; requires !std::is_copy_constructible&lt;_Tp&gt;::value;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; requires !std::is_copy_assignable&lt;_Tp&gt;::value;</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="comment">// Methods</span></div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; {t.get(v, 0)} -&gt; <a class="code" href="namespaceutl.html#a22cbecb50ee5c1032de66133e96cbac6">size_t</a>;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; {t.get(&amp;v, 1, 0)} -&gt; <a class="code" href="namespaceutl.html#a22cbecb50ee5c1032de66133e96cbac6">size_t</a>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <span class="comment">// Operators</span></div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; t &gt;&gt; v;</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="comment">// Iterators</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keyword">typename</span> _Tp::const_iterator; <span class="comment">//XXX: change to concept: is_idxdev_iterator&lt;_Tp&gt;</span></div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; requires Indev_it&lt;typename _Tp::iterator&gt;;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; <span class="comment">//requires Indev_it&lt;typename _Tp::const_iterator&gt;;</span></div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; { t.begin() } -&gt; <span class="keyword">typename</span> _Tp::iterator;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;<span class="comment">// {ct.begin()} -&gt; typename _Tp::const_iterator;</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment">// { t.cbegin()} -&gt; typename _Tp::const_iterator;</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; { t.end() } -&gt; <span class="keyword">typename</span> _Tp::iterator;</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="comment">// {ct.end()} -&gt; typename _Tp::const_iterator;</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="comment">// { t.cend()} -&gt; typename _Tp::const_iterator;</span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160; };</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="namespaceutl_1_1inbuf__dev__details.html"> 334</a></span>&#160; <span class="keyword">namespace </span>inbuf_dev_details {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; <span class="keyword">using</span> std::declval;</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="comment">// main api members</span></div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="namespaceutl_1_1inbuf__dev__details.html#a72a6469ab9ce0cba618dd0b554fc2dd2"> 338</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_1inbuf__dev__details.html#a72a6469ab9ce0cba618dd0b554fc2dd2">try_get1_t</a> = decltype (declval&lt;_Tp&gt;().<span class="keyword">get</span> (declval&lt;typename _Tp::data_type&amp;&gt;()));</div><div class="line"><a name="l00339"></a><span class="lineno"><a class="line" href="namespaceutl_1_1inbuf__dev__details.html#af09ed69d129c33b8a6d3f79c79b8ea35"> 339</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_1inbuf__dev__details.html#af09ed69d129c33b8a6d3f79c79b8ea35">try_get2_t</a> = decltype (declval&lt;_Tp&gt;().<span class="keyword">get</span> (declval&lt;typename _Tp::data_type*&gt;(), declval&lt;size_t&gt;()));</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; <span class="comment">// operators</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="comment">//template &lt;class _Tp&gt; using try_extract_t= decltype (declval&lt;_Tp&gt;() &gt;&gt; declval&lt;typename _Tp::data_type&amp;&gt;());</span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; <span class="comment">// iterator members</span></div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="namespaceutl_1_1inbuf__dev__details.html#a18d5c5e879b4714f58861ad411537d53"> 343</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_1inbuf__dev__details.html#a18d5c5e879b4714f58861ad411537d53">try_begin_t</a> = decltype (declval&lt;_Tp&gt;().begin());</div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="namespaceutl_1_1inbuf__dev__details.html#adff91b885ea1831691d4619d360bb72b"> 344</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_1inbuf__dev__details.html#adff91b885ea1831691d4619d360bb72b">tryc_begin_t</a> = decltype (declval&lt;const _Tp&gt;().begin());</div><div class="line"><a name="l00345"></a><span class="lineno"><a class="line" href="namespaceutl_1_1inbuf__dev__details.html#a351202ead58a98a2eaad4f3987b6170c"> 345</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_1inbuf__dev__details.html#a351202ead58a98a2eaad4f3987b6170c">try_cbegin_t</a> = decltype (declval&lt;const _Tp&gt;().cbegin());</div><div class="line"><a name="l00346"></a><span class="lineno"><a class="line" href="namespaceutl_1_1inbuf__dev__details.html#a5d4aa9d57c443c33cf08375e0c51bdd3"> 346</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_1inbuf__dev__details.html#a5d4aa9d57c443c33cf08375e0c51bdd3">try_end_t</a> = decltype (declval&lt;_Tp&gt;().begin());</div><div class="line"><a name="l00347"></a><span class="lineno"><a class="line" href="namespaceutl_1_1inbuf__dev__details.html#a858c7a1a0b1d8d0bdc91ce681aa1b996"> 347</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_1inbuf__dev__details.html#a858c7a1a0b1d8d0bdc91ce681aa1b996">tryc_end_t</a> = decltype (declval&lt;const _Tp&gt;().begin());</div><div class="line"><a name="l00348"></a><span class="lineno"><a class="line" href="namespaceutl_1_1inbuf__dev__details.html#a24eae32ecbea1291607f16d92c2b029a"> 348</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_1inbuf__dev__details.html#a24eae32ecbea1291607f16d92c2b029a">try_cend_t</a> = decltype (declval&lt;const _Tp&gt;().cend());</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</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="l00352"></a><span class="lineno"><a class="line" href="structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.html"> 352</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.html">is_inbuf_dev_</a> : <a class="code" href="namespaceutl_1_1meta.html#a55511dbaa0adb605ce22dcec11f8d22d">false_</a> {};</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Tp&gt;</div><div class="line"><a name="l00356"></a><span class="lineno"><a class="line" href="structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.html"> 356</a></span>&#160; <span class="keyword">struct </span><a class="code" href="structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.html">is_inbuf_dev_</a> &lt;_Tp,</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; <a class="code" href="group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad">void_t</a> &lt;</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; typename _Tp::data_type,</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; typename _Tp::pointer_type,</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; typename _Tp::iterator,</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160; typename _Tp::const_iterator,</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <a class="code" href="namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c">use_if_same_t</a> &lt;try_get1_t &lt;_Tp&gt;, size_t&gt;,</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <a class="code" href="namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c">use_if_same_t</a> &lt;try_get2_t &lt;_Tp&gt;, size_t&gt;,</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; <span class="comment">//if_same_t &lt;try_extract_t&lt;_Tp&gt;,typename _Tp&amp;&gt;,</span></div><div class="line"><a name="l00365"></a><span class="lineno"> 365</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="l00366"></a><span class="lineno"> 366</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="l00367"></a><span class="lineno"> 367</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="l00368"></a><span class="lineno"> 368</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="l00369"></a><span class="lineno"> 369</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="l00370"></a><span class="lineno"> 370</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="l00371"></a><span class="lineno"> 371</span>&#160; &gt;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; &gt; : <a class="code" href="namespaceutl_1_1meta.html#ae9a5a8fbe8202785f059935af219fb97">true_</a> {};</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <span class="keyword">template</span> &lt;<span class="keyword">typename</span> _Tp&gt;</div><div class="line"><a name="l00380"></a><span class="lineno"><a class="line" href="namespaceutl.html#ac447a457f18a1c4dcd1dddb4c2789006"> 380</a></span>&#160; constexpr <span class="keywordtype">bool</span> <a class="code" href="namespaceutl.html#ac447a457f18a1c4dcd1dddb4c2789006">Inbuf_dev</a> = <a class="code" href="structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.html">inbuf_dev_details::is_inbuf_dev_ &lt;_Tp&gt;::value</a>;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160;}</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* #ifndef __utl_dev_inbuf_dev_h__ */</span><span class="preprocessor"></span></div><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>
  92. <div class="ttc" id="classutl_1_1inbuf__dev_html_abd832bf35fa1ae0881e8cd86386e5b6b"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#abd832bf35fa1ae0881e8cd86386e5b6b">utl::inbuf_dev::inbuf_dev_t</a></div><div class="ttdeci">inbuf_dev&lt; impl_t, data_t, streamsize &gt; inbuf_dev_t</div><div class="ttdoc">class type syntactic sugar </div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00057">inbuf_dev.h:57</a></div></div>
  93. <div class="ttc" id="classutl_1_1inbuf__dev_html_ab2be58702c31d59e02683d5ff43c9dd6"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6">utl::inbuf_dev::get_</a></div><div class="ttdeci">size_t get_(data_t &amp;data)</div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00082">inbuf_dev.h:82</a></div></div>
  94. <div class="ttc" id="namespaceutl_1_1inbuf__dev__details_html_a24eae32ecbea1291607f16d92c2b029a"><div class="ttname"><a href="namespaceutl_1_1inbuf__dev__details.html#a24eae32ecbea1291607f16d92c2b029a">utl::inbuf_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="inbuf__dev_8h_source.html#l00348">inbuf_dev.h:348</a></div></div>
  95. <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>
  96. <div class="ttc" id="classutl_1_1inbuf__dev_html_acf6f21857302843661cdbbbeea61f05b"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#acf6f21857302843661cdbbbeea61f05b">utl::inbuf_dev::begin</a></div><div class="ttdeci">const_iterator begin() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00166">inbuf_dev.h:166</a></div></div>
  97. <div class="ttc" id="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_aa81447a9ed7f2428f587b42ecf8bc007"><div class="ttname"><a href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa81447a9ed7f2428f587b42ecf8bc007">utl::inbuf_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="inbuf__dev_8h_source.html#l00300">inbuf_dev.h:300</a></div></div>
  98. <div class="ttc" id="classutl_1_1inbuf__dev_html_a4b51121e0ecc1d43fd3fe7d05bb6fa56"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#a4b51121e0ecc1d43fd3fe7d05bb6fa56">utl::inbuf_dev::cend</a></div><div class="ttdeci">const_iterator cend() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00172">inbuf_dev.h:172</a></div></div>
  99. <div class="ttc" id="classutl_1_1inbuf__dev_html_a345d3b465e9cf57ebe3a8df31b67fec7"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#a345d3b465e9cf57ebe3a8df31b67fec7">utl::inbuf_dev::pointer_type</a></div><div class="ttdeci">data_t * pointer_type</div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00063">inbuf_dev.h:63</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="crtp_8h_html"><div class="ttname"><a href="crtp_8h.html">crtp.h</a></div></div>
  102. <div class="ttc" id="namespaceutl_1_1inbuf__dev__details_html_adff91b885ea1831691d4619d360bb72b"><div class="ttname"><a href="namespaceutl_1_1inbuf__dev__details.html#adff91b885ea1831691d4619d360bb72b">utl::inbuf_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="inbuf__dev_8h_source.html#l00344">inbuf_dev.h:344</a></div></div>
  103. <div class="ttc" id="classutl_1_1inbuf__dev_html_a0b7b02345e2306dc9f62a75029de71fb"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#a0b7b02345e2306dc9f62a75029de71fb">utl::inbuf_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="inbuf__dev_8h_source.html#l00165">inbuf_dev.h:165</a></div></div>
  104. <div class="ttc" id="classutl_1_1inbuf__dev_html_aea05a40b3c8966d1dd3978b40e0c6ac8"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#aea05a40b3c8966d1dd3978b40e0c6ac8">utl::inbuf_dev::end</a></div><div class="ttdeci">iterator end() noexcept</div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00170">inbuf_dev.h:170</a></div></div>
  105. <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>
  106. <div class="ttc" id="classutl_1_1inbuf__dev_html_a9bc1f15ed57132539749d390d5bb03b9"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#a9bc1f15ed57132539749d390d5bb03b9">utl::inbuf_dev::inbuf_dev</a></div><div class="ttdeci">inbuf_dev()=default</div><div class="ttdoc">A default constructor from derived only. </div></div>
  107. <div class="ttc" id="classutl_1_1inbuf__dev_html_a2f835b56beec0efc5d1cd2088e6a40cb"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#a2f835b56beec0efc5d1cd2088e6a40cb">utl::inbuf_dev::get_</a></div><div class="ttdeci">size_t get_(data_t *data, size_t n)</div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00083">inbuf_dev.h:83</a></div></div>
  108. <div class="ttc" id="namespaceutl_1_1inbuf__dev__details_html_af09ed69d129c33b8a6d3f79c79b8ea35"><div class="ttname"><a href="namespaceutl_1_1inbuf__dev__details.html#af09ed69d129c33b8a6d3f79c79b8ea35">utl::inbuf_dev_details::try_get2_t</a></div><div class="ttdeci">decltype(declval&lt; _Tp &gt;().get(declval&lt; typename _Tp::data_type * &gt;(), declval&lt; size_t &gt;())) try_get2_t</div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00339">inbuf_dev.h:339</a></div></div>
  109. <div class="ttc" id="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_aba2a9c8e96a8a865e1a24b52600a9f13"><div class="ttname"><a href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aba2a9c8e96a8a865e1a24b52600a9f13">utl::inbuf_dev&lt; virtual_tag, data_t, streamsize &gt;::in_avail</a></div><div class="ttdeci">size_t in_avail()</div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00250">inbuf_dev.h:250</a></div></div>
  110. <div class="ttc" id="classutl_1_1inbuf__dev_html_a3c24ad3be57e15019e3fbd579e5fccb3"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#a3c24ad3be57e15019e3fbd579e5fccb3">utl::inbuf_dev::cbegin</a></div><div class="ttdeci">const_iterator cbegin() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00167">inbuf_dev.h:167</a></div></div>
  111. <div class="ttc" id="namespaceutl_html_ac447a457f18a1c4dcd1dddb4c2789006"><div class="ttname"><a href="namespaceutl.html#ac447a457f18a1c4dcd1dddb4c2789006">utl::Inbuf_dev</a></div><div class="ttdeci">constexpr bool Inbuf_dev</div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00380">inbuf_dev.h:380</a></div></div>
  112. <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>
  113. <div class="ttc" id="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_a9d035a944db280e98fd41260ed463000"><div class="ttname"><a href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9d035a944db280e98fd41260ed463000">utl::inbuf_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="inbuf__dev_8h_source.html#l00196">inbuf_dev.h:196</a></div></div>
  114. <div class="ttc" id="namespaceutl_1_1inbuf__dev__details_html_a72a6469ab9ce0cba618dd0b554fc2dd2"><div class="ttname"><a href="namespaceutl_1_1inbuf__dev__details.html#a72a6469ab9ce0cba618dd0b554fc2dd2">utl::inbuf_dev_details::try_get1_t</a></div><div class="ttdeci">decltype(declval&lt; _Tp &gt;().get(declval&lt; typename _Tp::data_type &amp; &gt;())) try_get1_t</div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00338">inbuf_dev.h:338</a></div></div>
  115. <div class="ttc" id="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_a0a85ea0b10edeb155b59d1a3dff43382"><div class="ttname"><a href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a0a85ea0b10edeb155b59d1a3dff43382">utl::inbuf_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="inbuf__dev_8h_source.html#l00299">inbuf_dev.h:299</a></div></div>
  116. <div class="ttc" id="classutl_1_1inbuf__dev_html_ac7af0c7df9eee2bcf02579b0fd1d8dea"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#ac7af0c7df9eee2bcf02579b0fd1d8dea">utl::inbuf_dev::in_avail_</a></div><div class="ttdeci">size_t in_avail_()</div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00081">inbuf_dev.h:81</a></div></div>
  117. <div class="ttc" id="namespaceutl_1_1inbuf__dev__details_html_a858c7a1a0b1d8d0bdc91ce681aa1b996"><div class="ttname"><a href="namespaceutl_1_1inbuf__dev__details.html#a858c7a1a0b1d8d0bdc91ce681aa1b996">utl::inbuf_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="inbuf__dev_8h_source.html#l00347">inbuf_dev.h:347</a></div></div>
  118. <div class="ttc" id="classutl_1_1inbuf__dev_html_a55763f1c3ba5610404df70bda1abe75b"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#a55763f1c3ba5610404df70bda1abe75b">utl::inbuf_dev::~inbuf_dev</a></div><div class="ttdeci">~inbuf_dev()=default</div><div class="ttdoc">Allow destructor from derived only. </div></div>
  119. <div class="ttc" id="namespaceutl_1_1inbuf__dev__details_html_a5d4aa9d57c443c33cf08375e0c51bdd3"><div class="ttname"><a href="namespaceutl_1_1inbuf__dev__details.html#a5d4aa9d57c443c33cf08375e0c51bdd3">utl::inbuf_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="inbuf__dev_8h_source.html#l00346">inbuf_dev.h:346</a></div></div>
  120. <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>
  121. <div class="ttc" id="classutl_1_1inbuf__dev_html_a173c37503cdd40e7ac1be25759553c24"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#a173c37503cdd40e7ac1be25759553c24">utl::inbuf_dev::const_iterator</a></div><div class="ttdeci">indev_it&lt; inbuf_dev_t, const data_t *, streamsize &gt; const_iterator</div><div class="ttdoc">Const iterator. </div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00162">inbuf_dev.h:162</a></div></div>
  122. <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>
  123. <div class="ttc" id="classutl_1_1inbuf__dev_html_a0c0827ae69fac778cec3abb179bfc0f3"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#a0c0827ae69fac778cec3abb179bfc0f3">utl::inbuf_dev::iterator</a></div><div class="ttdeci">indev_it&lt; inbuf_dev_t, data_t *, streamsize &gt; iterator</div><div class="ttdoc">Iterator. </div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00161">inbuf_dev.h:161</a></div></div>
  124. <div class="ttc" id="classutl_1_1indev__it_html"><div class="ttname"><a href="classutl_1_1indev__it.html">utl::indev_it</a></div><div class="ttdoc">Input device iterator type. We &quot;future call&quot; interface methods from owner class to provide iterator f...</div><div class="ttdef"><b>Definition:</b> <a href="dev__iterators_8h_source.html#l00461">dev_iterators.h:461</a></div></div>
  125. <div class="ttc" id="namespaceutl_1_1inbuf__dev__details_html_a18d5c5e879b4714f58861ad411537d53"><div class="ttname"><a href="namespaceutl_1_1inbuf__dev__details.html#a18d5c5e879b4714f58861ad411537d53">utl::inbuf_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="inbuf__dev_8h_source.html#l00343">inbuf_dev.h:343</a></div></div>
  126. <div class="ttc" id="structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___html"><div class="ttname"><a href="structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.html">utl::inbuf_dev_details::is_inbuf_dev_</a></div><div class="ttdoc">Primary template to catch any non input device types. </div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00352">inbuf_dev.h:352</a></div></div>
  127. <div class="ttc" id="classutl_1_1inbuf__dev_html_ae660dce5b5111b0ea4743e32b3d2c3aa"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#ae660dce5b5111b0ea4743e32b3d2c3aa">utl::inbuf_dev::data_type</a></div><div class="ttdeci">data_t data_type</div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00062">inbuf_dev.h:62</a></div></div>
  128. <div class="ttc" id="classutl_1_1inbuf__dev_html_aca17fb240dfe221effa5a2092563d185"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#aca17fb240dfe221effa5a2092563d185">utl::inbuf_dev::operator&gt;&gt;</a></div><div class="ttdeci">inbuf_dev_t &amp; operator&gt;&gt;(_Dst_t &amp;dst)</div><div class="ttdoc">Template operator &gt;&gt; implementation for for all by value/ref parameters. </div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00140">inbuf_dev.h:140</a></div></div>
  129. <div class="ttc" id="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_abe9c16e5322249a05df6eb968a8adb56"><div class="ttname"><a href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#abe9c16e5322249a05df6eb968a8adb56">utl::inbuf_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="inbuf__dev_8h_source.html#l00301">inbuf_dev.h:301</a></div></div>
  130. <div class="ttc" id="namespaceutl_1_1inbuf__dev__details_html_a351202ead58a98a2eaad4f3987b6170c"><div class="ttname"><a href="namespaceutl_1_1inbuf__dev__details.html#a351202ead58a98a2eaad4f3987b6170c">utl::inbuf_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="inbuf__dev_8h_source.html#l00345">inbuf_dev.h:345</a></div></div>
  131. <div class="ttc" id="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_a261cc04ccf7edd02e1ab69225322dc4b"><div class="ttname"><a href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a261cc04ccf7edd02e1ab69225322dc4b">utl::inbuf_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="inbuf__dev_8h_source.html#l00195">inbuf_dev.h:195</a></div></div>
  132. <div class="ttc" id="classutl_1_1inbuf__dev_html_a6fe2f35813f2b4e94d8d21a4403c8221"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#a6fe2f35813f2b4e94d8d21a4403c8221">utl::inbuf_dev::_CRTP_IMPL</a></div><div class="ttdeci">_CRTP_IMPL(impl_t)</div></div>
  133. <div class="ttc" id="classutl_1_1inbuf__dev_html_aa862f748551da0bd92341f8f125b8aa3"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#aa862f748551da0bd92341f8f125b8aa3">utl::inbuf_dev::end</a></div><div class="ttdeci">const_iterator end() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00171">inbuf_dev.h:171</a></div></div>
  134. <div class="ttc" id="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_a70046c3c1e61b596c7e49f1f45510644"><div class="ttname"><a href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a70046c3c1e61b596c7e49f1f45510644">utl::inbuf_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="inbuf__dev_8h_source.html#l00294">inbuf_dev.h:294</a></div></div>
  135. <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>
  136. <div class="ttc" id="classutl_1_1inbuf__dev_html_a7aaf5bc892d6247cb6bb547cf331704c"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#a7aaf5bc892d6247cb6bb547cf331704c">utl::inbuf_dev::operator=</a></div><div class="ttdeci">inbuf_dev_t &amp; operator=(const inbuf_dev_t &amp;)=delete</div></div>
  137. <div class="ttc" id="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_a5367418a80e15d0f087acc6b977c911c"><div class="ttname"><a href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a5367418a80e15d0f087acc6b977c911c">utl::inbuf_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="inbuf__dev_8h_source.html#l00295">inbuf_dev.h:295</a></div></div>
  138. <div class="ttc" id="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html"><div class="ttname"><a href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html">utl::inbuf_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="inbuf__dev_8h_source.html#l00188">inbuf_dev.h:188</a></div></div>
  139. <div class="ttc" id="classutl_1_1inbuf__dev_html"><div class="ttname"><a href="classutl_1_1inbuf__dev.html">utl::inbuf_dev</a></div><div class="ttdoc">Abstract base class for input buffered devices. </div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00055">inbuf_dev.h:55</a></div></div>
  140. <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>
  141. <div class="ttc" id="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_html_a6c8cceaa03a16daff1db33f45c79082c"><div class="ttname"><a href="classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6c8cceaa03a16daff1db33f45c79082c">utl::inbuf_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="inbuf__dev_8h_source.html#l00296">inbuf_dev.h:296</a></div></div>
  142. <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>
  143. <div class="ttc" id="classutl_1_1inbuf__dev_html_aa5b71a9b0c989c4686a053e9d5df9251"><div class="ttname"><a href="classutl_1_1inbuf__dev.html#aa5b71a9b0c989c4686a053e9d5df9251">utl::inbuf_dev::in_avail</a></div><div class="ttdeci">size_t in_avail()</div><div class="ttdef"><b>Definition:</b> <a href="inbuf__dev_8h_source.html#l00095">inbuf_dev.h:95</a></div></div>
  144. </div><!-- fragment --></div><!-- contents -->
  145. </div><!-- doc-content -->
  146. <!-- start footer part -->
  147. <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  148. <ul>
  149. <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="inbuf__dev_8h.html">inbuf_dev.h</a></li>
  150. <li class="footer">Generated by
  151. <a href="http://www.doxygen.org/index.html">
  152. <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
  153. </ul>
  154. </div>
  155. </body>
  156. </html>