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

124 lignes
17 KiB

  1. \hypertarget{dev__iterators_8h}{}\section{include/utl/dev/dev\+\_\+iterators.h File Reference}
  2. \label{dev__iterators_8h}\index{include/utl/dev/dev\+\_\+iterators.\+h@{include/utl/dev/dev\+\_\+iterators.\+h}}
  3. Iterator collection for devices.
  4. {\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline
  5. {\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline
  6. \subsection*{Classes}
  7. \begin{DoxyCompactItemize}
  8. \item
  9. struct \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{utl\+::dev\+\_\+iterator\+\_\+traits$<$ \+\_\+\+Cat, \+\_\+\+Tp, \+\_\+\+Diff $>$}}
  10. \begin{DoxyCompactList}\small\item\em Device iterator collection. \end{DoxyCompactList}\item
  11. struct \mbox{\hyperlink{structutl_1_1output__iterator__tag}{utl\+::output\+\_\+iterator\+\_\+tag}}
  12. \begin{DoxyCompactList}\small\item\em Iterator tags \mbox{[}std.\+iterator.\+tags\mbox{]} Extension\+: \mbox{\hyperlink{structutl_1_1contiguous__iterator__tag}{contiguous\+\_\+iterator\+\_\+tag}} for denoting contiguous iterators. \end{DoxyCompactList}\item
  13. struct \mbox{\hyperlink{structutl_1_1input__iterator__tag}{utl\+::input\+\_\+iterator\+\_\+tag}}
  14. \item
  15. struct \mbox{\hyperlink{structutl_1_1forward__iterator__tag}{utl\+::forward\+\_\+iterator\+\_\+tag}}
  16. \item
  17. struct \mbox{\hyperlink{structutl_1_1bidirectional__iterator__tag}{utl\+::bidirectional\+\_\+iterator\+\_\+tag}}
  18. \item
  19. struct \mbox{\hyperlink{structutl_1_1random__access__iterator__tag}{utl\+::random\+\_\+access\+\_\+iterator\+\_\+tag}}
  20. \item
  21. struct \mbox{\hyperlink{structutl_1_1contiguous__iterator__tag}{utl\+::contiguous\+\_\+iterator\+\_\+tag}}
  22. \item
  23. class \mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$}}
  24. \item
  25. class \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$}}
  26. \item
  27. class \mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$}}
  28. \begin{DoxyCompactList}\small\item\em Output device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality. \end{DoxyCompactList}\item
  29. struct \mbox{\hyperlink{structutl_1_1outdev__it__details_1_1is__outdev__it__}{utl\+::outdev\+\_\+it\+\_\+details\+::is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$}}
  30. \begin{DoxyCompactList}\small\item\em Primary template to catch any non S\+PI interface types. \end{DoxyCompactList}\item
  31. struct \mbox{\hyperlink{structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60}{utl\+::outdev\+\_\+it\+\_\+details\+::is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$}}
  32. \begin{DoxyCompactList}\small\item\em template to catch a proper S\+PI interface type \end{DoxyCompactList}\item
  33. class \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$}}
  34. \begin{DoxyCompactList}\small\item\em Input device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality. \end{DoxyCompactList}\item
  35. struct \mbox{\hyperlink{structutl_1_1indev__it__details_1_1is__indev__it__}{utl\+::indev\+\_\+it\+\_\+details\+::is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$}}
  36. \begin{DoxyCompactList}\small\item\em Primary template to catch any non S\+PI interface types. \end{DoxyCompactList}\item
  37. struct \mbox{\hyperlink{structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b}{utl\+::indev\+\_\+it\+\_\+details\+::is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$}}
  38. \begin{DoxyCompactList}\small\item\em template to catch a proper S\+PI interface type \end{DoxyCompactList}\item
  39. class \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$}}
  40. \begin{DoxyCompactList}\small\item\em Indexed device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality. \end{DoxyCompactList}\item
  41. struct \mbox{\hyperlink{structutl_1_1idxdev__it__details_1_1is__idxdev__it__}{utl\+::idxdev\+\_\+it\+\_\+details\+::is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$}}
  42. \begin{DoxyCompactList}\small\item\em Primary template to catch any non S\+PI interface types. \end{DoxyCompactList}\item
  43. struct \mbox{\hyperlink{structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635}{utl\+::idxdev\+\_\+it\+\_\+details\+::is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$}}
  44. \begin{DoxyCompactList}\small\item\em template to catch a proper S\+PI interface type \end{DoxyCompactList}\end{DoxyCompactItemize}
  45. \subsection*{Namespaces}
  46. \begin{DoxyCompactItemize}
  47. \item
  48. \mbox{\hyperlink{namespaceutl}{utl}}
  49. \begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item
  50. \mbox{\hyperlink{namespaceutl_1_1outdev__it__details}{utl\+::outdev\+\_\+it\+\_\+details}}
  51. \item
  52. \mbox{\hyperlink{namespaceutl_1_1indev__it__details}{utl\+::indev\+\_\+it\+\_\+details}}
  53. \item
  54. \mbox{\hyperlink{namespaceutl_1_1idxdev__it__details}{utl\+::idxdev\+\_\+it\+\_\+details}}
  55. \end{DoxyCompactItemize}
  56. \subsection*{Functions}
  57. \textbf{ }\par
  58. \begin{DoxyCompactItemize}
  59. \item
  60. {\footnotesize template$<$typename \+\_\+\+C1 , typename \+\_\+\+D1 , typename \+\_\+\+C2 , typename \+\_\+\+D2 $>$ }\\bool \mbox{\hyperlink{namespaceutl_a5ba78d196f9abb63a1d2fff13cabe636}{utl\+::operator==}} (const istreamdev\+\_\+it$<$ \+\_\+\+C1, \+\_\+\+D1 $>$ \&lhs, const istreamdev\+\_\+it$<$ \+\_\+\+C2, \+\_\+\+D2 $>$ \&rhs) noexcept
  61. \begin{DoxyCompactList}\small\item\em Equality comparison template so that comparison between cv-\/qualified and non-\/cv-\/qualified iterators be valid. \end{DoxyCompactList}\item
  62. {\footnotesize template$<$typename \+\_\+\+C1 , typename \+\_\+\+D1 , typename \+\_\+\+C2 , typename \+\_\+\+D2 $>$ }\\bool \mbox{\hyperlink{namespaceutl_aa7a25ea4d2598ec5db5b37bfaaf55ec3}{utl\+::operator!=}} (const istreamdev\+\_\+it$<$ \+\_\+\+C1, \+\_\+\+D1 $>$ \&lhs, const istreamdev\+\_\+it$<$ \+\_\+\+C2, \+\_\+\+D2 $>$ \&rhs) noexcept
  63. \item
  64. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, index\+\_\+t \+\_\+end1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, index\+\_\+t \+\_\+end2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a6726b451c897c4581e8781a819c025ba}{utl\+::operator==}} (const outdev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+end1 $>$ \&lhs, const outdev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+end2 $>$ \&rhs) noexcept
  65. \begin{DoxyCompactList}\small\item\em Equality comparison template so that comparison between cv-\/qualified and non-\/cv-\/qualified iterators be valid. \end{DoxyCompactList}\item
  66. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, index\+\_\+t \+\_\+end1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, index\+\_\+t \+\_\+end2$>$ }\\bool \mbox{\hyperlink{namespaceutl_ada8975062732a20074909f8a3f609538}{utl\+::operator!=}} (const outdev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+end1 $>$ \&lhs, const outdev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+end2 $>$ \&rhs) noexcept
  67. \begin{DoxyCompactList}\small\item\em Inequality comparison template so that comparison between cv-\/qualified and non-\/cv-\/qualified iterators be valid. \end{DoxyCompactList}\end{DoxyCompactItemize}
  68. \begin{Indent}\textbf{ indev\+\_\+it Equality\+Comparable \&\& Less\+Than\+Comparable requirements}\par
  69. {\em comparison template so that comparison between cv-\/qualified and non-\/cv-\/qualified iterators be valid }\begin{DoxyCompactItemize}
  70. \item
  71. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_aa30fa8ed97138ea75003069144f78e97}{utl\+::operator==}} (const indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const indev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept
  72. \item
  73. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_aac9f2116bf5b1463391b2a5ec437ef1d}{utl\+::operator$<$}} (const indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const indev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept
  74. \begin{DoxyCompactList}\small\item\em Less than. \end{DoxyCompactList}\item
  75. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a15d049c37bf09ffb29f2a0c0070bf89c}{utl\+::operator!=}} (const indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const indev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept
  76. \item
  77. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a93043b2e245bb724c9c2e89577222532}{utl\+::operator$<$=}} (const indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const indev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept
  78. \item
  79. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a254af18987f59f185ceeaac1aaf3c1e1}{utl\+::operator$>$}} (const indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const indev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept
  80. \item
  81. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_abdada8bc0cbd311c4dea3dde078f5483}{utl\+::operator$>$=}} (const indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const indev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept
  82. \item
  83. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a7ad3384389159ce575279712fb92e3c6}{utl\+::operator==}} (const iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const iodev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept
  84. \item
  85. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_aacd0760a2943441abcc86ef9d825c8b0}{utl\+::operator$<$}} (const iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const iodev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept
  86. \begin{DoxyCompactList}\small\item\em Less than. \end{DoxyCompactList}\item
  87. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a388830b63c30f5ee32a3e2a761c703c8}{utl\+::operator!=}} (const iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const iodev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept
  88. \item
  89. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_aa369d59a59c21d50b371b5db6195b043}{utl\+::operator$<$=}} (const iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const iodev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept
  90. \item
  91. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a623dee5dafd7fe274dc205c3e20c96af}{utl\+::operator$>$}} (const iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const iodev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept
  92. \item
  93. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a1988125a6394416aaf6ae85eaafa3ec4}{utl\+::operator$>$=}} (const iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const iodev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept
  94. \end{DoxyCompactItemize}
  95. \end{Indent}
  96. \begin{Indent}\textbf{ iterator arithmetic}\par
  97. \begin{DoxyCompactItemize}
  98. \item
  99. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\auto \mbox{\hyperlink{namespaceutl_aae4b45dc79b7d9b85e0bf83278f88508}{utl\+::operator-\/}} (indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&y) noexcept -\/$>$ decltype(x.\+cursor() -\/ y.\+cursor())
  100. \item
  101. {\footnotesize template$<$typename \+\_\+\+Cont , typename \+\_\+\+It , index\+\_\+t \+\_\+beg, size\+\_\+t \+\_\+size$>$ }\\indev\+\_\+it$<$ \+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size $>$ \mbox{\hyperlink{namespaceutl_a69289a7a150563ce48244d7f39b33dbb}{utl\+::operator+}} (typename \+\_\+\+Cont\+::difference\+\_\+type n, indev\+\_\+it$<$ \+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size $>$ \&it) noexcept
  102. \item
  103. {\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\auto \mbox{\hyperlink{namespaceutl_a191590b661dc64e2fd487adb6b5e8889}{utl\+::operator-\/}} (iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&y) noexcept -\/$>$ decltype(x.\+cursor() -\/ y.\+cursor())
  104. \item
  105. {\footnotesize template$<$typename \+\_\+\+Cont , typename \+\_\+\+It , index\+\_\+t \+\_\+beg, size\+\_\+t \+\_\+size$>$ }\\iodev\+\_\+it$<$ \+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size $>$ \mbox{\hyperlink{namespaceutl_a829bc4894560bf7e0a6fd829ac9d3c10}{utl\+::operator+}} (typename \+\_\+\+Cont\+::difference\+\_\+type n, iodev\+\_\+it$<$ \+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size $>$ \&it) noexcept
  106. \end{DoxyCompactItemize}
  107. \end{Indent}
  108. \subsection{Detailed Description}
  109. Iterator collection for devices.
  110. Copyright (C) 2018 Christos Choutouridis
  111. This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
  112. This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details.
  113. You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}.