uTL
micro Template library
dev_iterators.h File Reference

Iterator collection for devices. More...

#include <utl/core/impl.h>
#include <utl/meta/meta.h>

Go to the source code of this file.

Classes

struct  utl::dev_iterator_traits< _Cat, _Tp, _Diff >
 Device iterator collection. More...
 
struct  utl::output_iterator_tag
 Iterator tags [std.iterator.tags] Extension: contiguous_iterator_tag for denoting contiguous iterators. More...
 
struct  utl::input_iterator_tag
 
struct  utl::forward_iterator_tag
 
struct  utl::bidirectional_iterator_tag
 
struct  utl::random_access_iterator_tag
 
struct  utl::contiguous_iterator_tag
 
class  utl::ostreamdev_it< cont_t, data_t >
 
class  utl::istreamdev_it< cont_t, data_t >
 
class  utl::outdev_it< cont_t, iter_t, _beg, _end >
 Output device iterator type. We "future call" interface methods from owner class to provide iterator functionality. More...
 
struct  utl::outdev_it_details::is_outdev_it_< _Tp, typename >
 Primary template to catch any non SPI interface types. More...
 
struct  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 > >
 template to catch a proper SPI interface type More...
 
class  utl::indev_it< cont_t, iter_t, _beg, _size >
 Input device iterator type. We "future call" interface methods from owner class to provide iterator functionality. More...
 
struct  utl::indev_it_details::is_indev_it_< _Tp, typename >
 Primary template to catch any non SPI interface types. More...
 
struct  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 > >
 template to catch a proper SPI interface type More...
 
class  utl::iodev_it< cont_t, iter_t, _beg, _size >
 Indexed device iterator type. We "future call" interface methods from owner class to provide iterator functionality. More...
 
struct  utl::iodev_it< cont_t, iter_t, _beg, _size >::value_type_t
 
struct  utl::idxdev_it_details::is_idxdev_it_< _Tp, typename >
 Primary template to catch any non SPI interface types. More...
 
struct  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 > >
 template to catch a proper SPI interface type More...
 

Namespaces

 utl
 STL's core language concepts.
 
 utl::outdev_it_details
 
 utl::indev_it_details
 
 utl::idxdev_it_details
 

Functions

template<typename _C1 , typename _D1 , typename _C2 , typename _D2 >
bool utl::operator== (const istreamdev_it< _C1, _D1 > &lhs, const istreamdev_it< _C2, _D2 > &rhs) noexcept
 Equality comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid. More...
 
template<typename _C1 , typename _D1 , typename _C2 , typename _D2 >
bool utl::operator!= (const istreamdev_it< _C1, _D1 > &lhs, const istreamdev_it< _C2, _D2 > &rhs) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, index_t _end1, typename _Cont2 , typename _It2 , index_t _beg2, index_t _end2>
bool utl::operator== (const outdev_it< _Cont1, _It1, _beg1, _end1 > &lhs, const outdev_it< _Cont2, _It2, _beg2, _end2 > &rhs) noexcept
 Equality comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid. More...
 
template<typename _Cont1 , typename _It1 , index_t _beg1, index_t _end1, typename _Cont2 , typename _It2 , index_t _beg2, index_t _end2>
bool utl::operator!= (const outdev_it< _Cont1, _It1, _beg1, _end1 > &lhs, const outdev_it< _Cont2, _It2, _beg2, _end2 > &rhs) noexcept
 Inequality comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid. More...
 
indev_it EqualityComparable && LessThanComparable requirements

comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid

template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator== (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator< (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 Less than. More...
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator!= (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator<= (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator> (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator>= (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator== (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator< (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 Less than. More...
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator!= (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator<= (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator> (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator>= (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
iterator arithmetic
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
auto utl::operator- (indev_it< _Cont1, _It1, _beg1, _size1 > &x, indev_it< _Cont1, _It1, _beg1, _size1 > &y) noexcept -> decltype(x.cursor() - y.cursor())
 
template<typename _Cont , typename _It , index_t _beg, size_t _size>
indev_it< _Cont, _It, _beg, _size > utl::operator+ (typename _Cont::difference_type n, indev_it< _Cont, _It, _beg, _size > &it) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
auto utl::operator- (iodev_it< _Cont1, _It1, _beg1, _size1 > &x, iodev_it< _Cont1, _It1, _beg1, _size1 > &y) noexcept -> decltype(x.cursor() - y.cursor())
 
template<typename _Cont , typename _It , index_t _beg, size_t _size>
iodev_it< _Cont, _It, _beg, _size > utl::operator+ (typename _Cont::difference_type n, iodev_it< _Cont, _It, _beg, _size > &it) noexcept
 

Detailed Description

Iterator collection for devices.

Copyright (C) 2018 Christos Choutouridis

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file dev_iterators.h.