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.
 
 
 
 

408 lines
25 KiB

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