Micro template library A library for building device drivers
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

424 linhas
27 KiB

  1. \hypertarget{classutl_1_1inbuf__dev}{}\section{utl\+:\+:inbuf\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$ Class Template Reference}
  2. \label{classutl_1_1inbuf__dev}\index{utl\+::inbuf\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$}}
  3. Abstract base class for input buffered devices.
  4. {\ttfamily \#include $<$inbuf\+\_\+dev.\+h$>$}
  5. \subsection*{Public Types}
  6. \begin{DoxyCompactItemize}
  7. \item
  8. using \mbox{\hyperlink{classutl_1_1inbuf__dev_ae429fbf167bbd96b2cc46094f3540b10}{type}} = \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}
  9. \begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize}
  10. \textbf{ }\par
  11. \begin{DoxyCompactItemize}
  12. \item
  13. using \mbox{\hyperlink{classutl_1_1inbuf__dev_ae660dce5b5111b0ea4743e32b3d2c3aa}{data\+\_\+type}} = data\+\_\+t
  14. \item
  15. using \mbox{\hyperlink{classutl_1_1inbuf__dev_a345d3b465e9cf57ebe3a8df31b67fec7}{pointer\+\_\+type}} = data\+\_\+t $\ast$
  16. \end{DoxyCompactItemize}
  17. \subsection*{Public Member Functions}
  18. \begin{Indent}\textbf{ Public Get interface}\par
  19. \begin{DoxyCompactItemize}
  20. \item
  21. \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev_aa5b71a9b0c989c4686a053e9d5df9251}{in\+\_\+avail}} ()
  22. \item
  23. \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev_a7856963b0bb0bf294be53ea20f3564d0}{get}} (data\+\_\+t \&data)
  24. \begin{DoxyCompactList}\small\item\em The base get interface. This function should read a single data\+\_\+t object from device usually in non-\/blocking mode. \end{DoxyCompactList}\item
  25. \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev_a9290fbfeebac0d161f800bc1522ea5a6}{get}} (data\+\_\+t $\ast$data, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n)
  26. \begin{DoxyCompactList}\small\item\em Old stile get functionality using free standing data\+\_\+t$\ast$. This function should return a stream of data from device. \end{DoxyCompactList}\end{DoxyCompactItemize}
  27. \end{Indent}
  28. \begin{Indent}\textbf{ Stream operator $>$$>$ interface}\par
  29. \begin{DoxyCompactItemize}
  30. \item
  31. {\footnotesize template$<$typename \+\_\+\+Dst\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1inbuf__dev_aca17fb240dfe221effa5a2092563d185}{operator$>$$>$}} (\+\_\+\+Dst\+\_\+t \&dst)
  32. \begin{DoxyCompactList}\small\item\em Template operator $>$$>$ implementation for for all by value/ref parameters. \end{DoxyCompactList}\item
  33. {\footnotesize template$<$typename \+\_\+\+Dst\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1inbuf__dev_a48a8160d1dce4542b0b09cff3f6a488b}{operator$>$$>$}} (\+\_\+\+Dst\+\_\+t $\ast$dst)=delete
  34. \begin{DoxyCompactList}\small\item\em Specialization to disallow pointer types as destination. \end{DoxyCompactList}\item
  35. \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1inbuf__dev_a6b11ed7628520b4dfe0bd438ccc58197}{operator$>$$>$}} (data\+\_\+t \&dst)
  36. \begin{DoxyCompactList}\small\item\em Overload for single data\+\_\+t object. \end{DoxyCompactList}\end{DoxyCompactItemize}
  37. \end{Indent}
  38. \textbf{ }\par
  39. \begin{DoxyCompactItemize}
  40. \item
  41. \mbox{\hyperlink{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}{iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_aea05a40b3c8966d1dd3978b40e0c6ac8}{end}} () noexcept
  42. \item
  43. \mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_aa862f748551da0bd92341f8f125b8aa3}{end}} () const noexcept
  44. \item
  45. \mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_a4b51121e0ecc1d43fd3fe7d05bb6fa56}{cend}} () const noexcept
  46. \end{DoxyCompactItemize}
  47. \subsection*{Protected Member Functions}
  48. \begin{Indent}\textbf{ Constructor / Destructor}\par
  49. \begin{DoxyCompactItemize}
  50. \item
  51. \mbox{\hyperlink{classutl_1_1inbuf__dev_a55763f1c3ba5610404df70bda1abe75b}{$\sim$inbuf\+\_\+dev}} ()=default
  52. \begin{DoxyCompactList}\small\item\em Allow destructor from derived only. \end{DoxyCompactList}\item
  53. \mbox{\hyperlink{classutl_1_1inbuf__dev_a9bc1f15ed57132539749d390d5bb03b9}{inbuf\+\_\+dev}} ()=default
  54. \begin{DoxyCompactList}\small\item\em A default constructor from derived only. \end{DoxyCompactList}\item
  55. \mbox{\hyperlink{classutl_1_1inbuf__dev_a0fe7d9f726d8a0f2b23df6d9520b58ed}{inbuf\+\_\+dev}} (const \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \&)=delete
  56. \begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item
  57. \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1inbuf__dev_a7aaf5bc892d6247cb6bb547cf331704c}{operator=}} (const \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \&)=delete
  58. \end{DoxyCompactItemize}
  59. \end{Indent}
  60. \subsection*{S\+T\+L-\/like Input iterator interface}
  61. \begin{DoxyCompactItemize}
  62. \item
  63. using \mbox{\hyperlink{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}{iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}, data\+\_\+t $\ast$, streamsize $>$
  64. \begin{DoxyCompactList}\small\item\em Iterator. \end{DoxyCompactList}\item
  65. using \mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}, const data\+\_\+t $\ast$, streamsize $>$
  66. \begin{DoxyCompactList}\small\item\em Const iterator. \end{DoxyCompactList}\item
  67. \mbox{\hyperlink{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}{iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_a0b7b02345e2306dc9f62a75029de71fb}{begin}} () noexcept
  68. \begin{DoxyCompactList}\small\item\em .begin implementation \end{DoxyCompactList}\item
  69. \mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_acf6f21857302843661cdbbbeea61f05b}{begin}} () const noexcept
  70. \item
  71. \mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_a3c24ad3be57e15019e3fbd579e5fccb3}{cbegin}} () const noexcept
  72. \end{DoxyCompactItemize}
  73. \subsection{Detailed Description}
  74. \subsubsection*{template$<$typename impl\+\_\+t, typename data\+\_\+t, size\+\_\+t streamsize = 0$>$\newline
  75. class utl\+::inbuf\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$}
  76. Abstract base class for input buffered devices.
  77. Template base class for buffered input buffered devices. using C\+R\+TP
  78. This class force a common interface for input, buffered devices. By using this common interface the class implements
  79. \begin{DoxyItemize}
  80. \item Stream-\/like extracting operator
  81. \item Input iterator
  82. \item Const input iterator to inherit to implementation.
  83. \end{DoxyItemize}
  84. \begin{DoxyParams}{Parameters}
  85. {\em impl\+\_\+t} & The C\+R\+TP type (the derived/implementation class typename). \\
  86. \hline
  87. {\em data\+\_\+t} & The devices base type of data \\
  88. \hline
  89. {\em streamsize} & The number of elements to indicate eos. \begin{DoxyItemize}
  90. \item None or 0 Stream only. No iterator as \mbox{\hyperlink{classutl_1_1inbuf__dev_a0b7b02345e2306dc9f62a75029de71fb}{begin()}} now equals \mbox{\hyperlink{classutl_1_1inbuf__dev_aea05a40b3c8966d1dd3978b40e0c6ac8}{end()}}. \end{DoxyItemize}
  91. \\
  92. \hline
  93. \end{DoxyParams}
  94. Definition at line 55 of file inbuf\+\_\+dev.\+h.
  95. \subsection{Member Typedef Documentation}
  96. \mbox{\Hypertarget{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}\label{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}}
  97. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!const\+\_\+iterator@{const\+\_\+iterator}}
  98. \index{const\+\_\+iterator@{const\+\_\+iterator}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  99. \subsubsection{\texorpdfstring{const\+\_\+iterator}{const\_iterator}}
  100. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  101. using \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}} $<$\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}, const data\+\_\+t$\ast$, streamsize$>$}
  102. Const iterator.
  103. Definition at line 162 of file inbuf\+\_\+dev.\+h.
  104. \mbox{\Hypertarget{classutl_1_1inbuf__dev_ae660dce5b5111b0ea4743e32b3d2c3aa}\label{classutl_1_1inbuf__dev_ae660dce5b5111b0ea4743e32b3d2c3aa}}
  105. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!data\+\_\+type@{data\+\_\+type}}
  106. \index{data\+\_\+type@{data\+\_\+type}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  107. \subsubsection{\texorpdfstring{data\+\_\+type}{data\_type}}
  108. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  109. using \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev_ae660dce5b5111b0ea4743e32b3d2c3aa}{data\+\_\+type}} = data\+\_\+t}
  110. Export types as input device concept demands
  111. Definition at line 62 of file inbuf\+\_\+dev.\+h.
  112. \mbox{\Hypertarget{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}\label{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}}
  113. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!iterator@{iterator}}
  114. \index{iterator@{iterator}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  115. \subsubsection{\texorpdfstring{iterator}{iterator}}
  116. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  117. using \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}{iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}} $<$\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}, data\+\_\+t$\ast$, streamsize$>$}
  118. Iterator.
  119. Definition at line 161 of file inbuf\+\_\+dev.\+h.
  120. \mbox{\Hypertarget{classutl_1_1inbuf__dev_a345d3b465e9cf57ebe3a8df31b67fec7}\label{classutl_1_1inbuf__dev_a345d3b465e9cf57ebe3a8df31b67fec7}}
  121. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!pointer\+\_\+type@{pointer\+\_\+type}}
  122. \index{pointer\+\_\+type@{pointer\+\_\+type}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  123. \subsubsection{\texorpdfstring{pointer\+\_\+type}{pointer\_type}}
  124. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  125. using \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev_a345d3b465e9cf57ebe3a8df31b67fec7}{pointer\+\_\+type}} = data\+\_\+t$\ast$}
  126. Definition at line 63 of file inbuf\+\_\+dev.\+h.
  127. \mbox{\Hypertarget{classutl_1_1inbuf__dev_ae429fbf167bbd96b2cc46094f3540b10}\label{classutl_1_1inbuf__dev_ae429fbf167bbd96b2cc46094f3540b10}}
  128. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!type@{type}}
  129. \index{type@{type}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  130. \subsubsection{\texorpdfstring{type}{type}}
  131. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  132. using \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev_ae429fbf167bbd96b2cc46094f3540b10}{type}} = \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}}
  133. Export type as identity meta-\/function.
  134. Definition at line 65 of file inbuf\+\_\+dev.\+h.
  135. \subsection{Constructor \& Destructor Documentation}
  136. \mbox{\Hypertarget{classutl_1_1inbuf__dev_a55763f1c3ba5610404df70bda1abe75b}\label{classutl_1_1inbuf__dev_a55763f1c3ba5610404df70bda1abe75b}}
  137. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!````~inbuf\+\_\+dev@{$\sim$inbuf\+\_\+dev}}
  138. \index{````~inbuf\+\_\+dev@{$\sim$inbuf\+\_\+dev}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  139. \subsubsection{\texorpdfstring{$\sim$inbuf\+\_\+dev()}{~inbuf\_dev()}}
  140. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  141. \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}}
  142. Allow destructor from derived only.
  143. \mbox{\Hypertarget{classutl_1_1inbuf__dev_a9bc1f15ed57132539749d390d5bb03b9}\label{classutl_1_1inbuf__dev_a9bc1f15ed57132539749d390d5bb03b9}}
  144. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!inbuf\+\_\+dev@{inbuf\+\_\+dev}}
  145. \index{inbuf\+\_\+dev@{inbuf\+\_\+dev}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  146. \subsubsection{\texorpdfstring{inbuf\+\_\+dev()}{inbuf\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
  147. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  148. \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}}
  149. A default constructor from derived only.
  150. \mbox{\Hypertarget{classutl_1_1inbuf__dev_a0fe7d9f726d8a0f2b23df6d9520b58ed}\label{classutl_1_1inbuf__dev_a0fe7d9f726d8a0f2b23df6d9520b58ed}}
  151. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!inbuf\+\_\+dev@{inbuf\+\_\+dev}}
  152. \index{inbuf\+\_\+dev@{inbuf\+\_\+dev}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  153. \subsubsection{\texorpdfstring{inbuf\+\_\+dev()}{inbuf\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
  154. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  155. \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}}
  156. No copies.
  157. \subsection{Member Function Documentation}
  158. \mbox{\Hypertarget{classutl_1_1inbuf__dev_a0b7b02345e2306dc9f62a75029de71fb}\label{classutl_1_1inbuf__dev_a0b7b02345e2306dc9f62a75029de71fb}}
  159. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!begin@{begin}}
  160. \index{begin@{begin}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  161. \subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
  162. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  163. \mbox{\hyperlink{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}{iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}
  164. .begin implementation
  165. Definition at line 165 of file inbuf\+\_\+dev.\+h.
  166. \mbox{\Hypertarget{classutl_1_1inbuf__dev_acf6f21857302843661cdbbbeea61f05b}\label{classutl_1_1inbuf__dev_acf6f21857302843661cdbbbeea61f05b}}
  167. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!begin@{begin}}
  168. \index{begin@{begin}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  169. \subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
  170. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  171. \mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}
  172. Definition at line 166 of file inbuf\+\_\+dev.\+h.
  173. \mbox{\Hypertarget{classutl_1_1inbuf__dev_a3c24ad3be57e15019e3fbd579e5fccb3}\label{classutl_1_1inbuf__dev_a3c24ad3be57e15019e3fbd579e5fccb3}}
  174. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!cbegin@{cbegin}}
  175. \index{cbegin@{cbegin}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  176. \subsubsection{\texorpdfstring{cbegin()}{cbegin()}}
  177. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  178. \mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::cbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}
  179. Definition at line 167 of file inbuf\+\_\+dev.\+h.
  180. \mbox{\Hypertarget{classutl_1_1inbuf__dev_a4b51121e0ecc1d43fd3fe7d05bb6fa56}\label{classutl_1_1inbuf__dev_a4b51121e0ecc1d43fd3fe7d05bb6fa56}}
  181. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!cend@{cend}}
  182. \index{cend@{cend}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  183. \subsubsection{\texorpdfstring{cend()}{cend()}}
  184. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  185. \mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::cend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}
  186. Definition at line 172 of file inbuf\+\_\+dev.\+h.
  187. \mbox{\Hypertarget{classutl_1_1inbuf__dev_aea05a40b3c8966d1dd3978b40e0c6ac8}\label{classutl_1_1inbuf__dev_aea05a40b3c8966d1dd3978b40e0c6ac8}}
  188. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!end@{end}}
  189. \index{end@{end}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  190. \subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
  191. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  192. \mbox{\hyperlink{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}{iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}
  193. .end implementation
  194. Definition at line 170 of file inbuf\+\_\+dev.\+h.
  195. \mbox{\Hypertarget{classutl_1_1inbuf__dev_aa862f748551da0bd92341f8f125b8aa3}\label{classutl_1_1inbuf__dev_aa862f748551da0bd92341f8f125b8aa3}}
  196. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!end@{end}}
  197. \index{end@{end}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  198. \subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
  199. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  200. \mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}}
  201. Definition at line 171 of file inbuf\+\_\+dev.\+h.
  202. \mbox{\Hypertarget{classutl_1_1inbuf__dev_a7856963b0bb0bf294be53ea20f3564d0}\label{classutl_1_1inbuf__dev_a7856963b0bb0bf294be53ea20f3564d0}}
  203. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!get@{get}}
  204. \index{get@{get}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  205. \subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
  206. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  207. \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::get (\begin{DoxyParamCaption}\item[{data\+\_\+t \&}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
  208. The base get interface. This function should read a single data\+\_\+t object from device usually in non-\/blocking mode.
  209. \begin{DoxyParams}{Parameters}
  210. {\em data} & Reference to data output from device. \\
  211. \hline
  212. \end{DoxyParams}
  213. \begin{DoxyReturn}{Returns}
  214. Number of data read from device
  215. \end{DoxyReturn}
  216. \begin{DoxyNote}{Note}
  217. A successful call should return 1
  218. \end{DoxyNote}
  219. Definition at line 108 of file inbuf\+\_\+dev.\+h.
  220. \mbox{\Hypertarget{classutl_1_1inbuf__dev_a9290fbfeebac0d161f800bc1522ea5a6}\label{classutl_1_1inbuf__dev_a9290fbfeebac0d161f800bc1522ea5a6}}
  221. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!get@{get}}
  222. \index{get@{get}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  223. \subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
  224. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  225. \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::get (\begin{DoxyParamCaption}\item[{data\+\_\+t $\ast$}]{data, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
  226. Old stile get functionality using free standing data\+\_\+t$\ast$. This function should return a stream of data from device.
  227. \begin{DoxyParams}{Parameters}
  228. {\em data} & Pointer to buffer to write the data from device. \\
  229. \hline
  230. {\em n} & The number of data of type data\+\_\+t to read \\
  231. \hline
  232. \end{DoxyParams}
  233. \begin{DoxyReturn}{Returns}
  234. The read data items.
  235. \end{DoxyReturn}
  236. Definition at line 120 of file inbuf\+\_\+dev.\+h.
  237. \mbox{\Hypertarget{classutl_1_1inbuf__dev_aa5b71a9b0c989c4686a053e9d5df9251}\label{classutl_1_1inbuf__dev_aa5b71a9b0c989c4686a053e9d5df9251}}
  238. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!in\+\_\+avail@{in\+\_\+avail}}
  239. \index{in\+\_\+avail@{in\+\_\+avail}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  240. \subsubsection{\texorpdfstring{in\+\_\+avail()}{in\_avail()}}
  241. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  242. \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::in\+\_\+avail (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
  243. \begin{DoxyReturn}{Returns}
  244. The available {\itshape data\+\_\+t} typed items in input buffer.
  245. \end{DoxyReturn}
  246. Definition at line 95 of file inbuf\+\_\+dev.\+h.
  247. \mbox{\Hypertarget{classutl_1_1inbuf__dev_a7aaf5bc892d6247cb6bb547cf331704c}\label{classutl_1_1inbuf__dev_a7aaf5bc892d6247cb6bb547cf331704c}}
  248. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!operator=@{operator=}}
  249. \index{operator=@{operator=}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  250. \subsubsection{\texorpdfstring{operator=()}{operator=()}}
  251. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  252. \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}}
  253. No copy assignments \mbox{\Hypertarget{classutl_1_1inbuf__dev_aca17fb240dfe221effa5a2092563d185}\label{classutl_1_1inbuf__dev_aca17fb240dfe221effa5a2092563d185}}
  254. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!operator$>$$>$@{operator$>$$>$}}
  255. \index{operator$>$$>$@{operator$>$$>$}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  256. \subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
  257. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  258. template$<$typename \+\_\+\+Dst\+\_\+t $>$ \\
  259. \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Dst\+\_\+t \&}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
  260. Template operator $>$$>$ implementation for for all by value/ref parameters.
  261. \begin{DoxyNote}{Note}
  262. In the case \+\_\+\+Dst\+\_\+t size is not a integer multiple of device\textquotesingle{}s data size this will fail by static assertion
  263. \end{DoxyNote}
  264. \begin{DoxyParams}{Parameters}
  265. {\em dst} & Reference to destination \\
  266. \hline
  267. \end{DoxyParams}
  268. \begin{DoxyReturn}{Returns}
  269. Reference to this device for chaining
  270. \end{DoxyReturn}
  271. Definition at line 140 of file inbuf\+\_\+dev.\+h.
  272. \mbox{\Hypertarget{classutl_1_1inbuf__dev_a48a8160d1dce4542b0b09cff3f6a488b}\label{classutl_1_1inbuf__dev_a48a8160d1dce4542b0b09cff3f6a488b}}
  273. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!operator$>$$>$@{operator$>$$>$}}
  274. \index{operator$>$$>$@{operator$>$$>$}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  275. \subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
  276. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  277. template$<$typename \+\_\+\+Dst\+\_\+t $>$ \\
  278. \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Dst\+\_\+t $\ast$}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}}
  279. Specialization to disallow pointer types as destination.
  280. \mbox{\Hypertarget{classutl_1_1inbuf__dev_a6b11ed7628520b4dfe0bd438ccc58197}\label{classutl_1_1inbuf__dev_a6b11ed7628520b4dfe0bd438ccc58197}}
  281. \index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!operator$>$$>$@{operator$>$$>$}}
  282. \index{operator$>$$>$@{operator$>$$>$}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}}
  283. \subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
  284. {\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\
  285. \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{data\+\_\+t \&}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}
  286. Overload for single data\+\_\+t object.
  287. Definition at line 151 of file inbuf\+\_\+dev.\+h.
  288. The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
  289. \item
  290. include/utl/dev/\mbox{\hyperlink{inbuf__dev_8h}{inbuf\+\_\+dev.\+h}}\end{DoxyCompactItemize}