Micro template library A library for building device drivers
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 

124 lines
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/}.