uTL
micro Template library
|
STL's core language concepts. More...
Namespaces | |
_1wire_i_det | |
common_impl | |
detail | |
details | |
i2c_i_details | |
idx_dev_details | |
idxdev_it_details | |
in_dev_details | |
inbuf_dev_details | |
indev_it_details | |
meta | |
out_dev_details | |
outdev_it_details | |
spi | |
Abstract base class for spi bus. | |
spi_i_details | |
Classes | |
class | _1wire_i |
Template base class for 1-wire communication interface using CRTP. More... | |
class | _1wire_i< virtual_tag > |
A virtual base class implementation. More... | |
class | _1wire_id_t |
class | _1wire_uart_i |
1-wire UART interface template class using CRTP Using the private virtual interface we provide the interface from _1wire_i<> More... | |
class | _1wire_uart_i< virtual_tag > |
A virtual base class interface implementation. Using the private virtual interface we provide the interface from _1wire_i<virtual_tag> More... | |
struct | array |
A standard container for storing a fixed size sequence of elements. More... | |
struct | array_traits |
array container traits helper More... | |
struct | array_traits< _Tp, 0 > |
struct | bidirectional_iterator_tag |
struct | contiguous_iterator_tag |
struct | crtp_tag |
CRTP support tag type. More... | |
struct | dev_iterator_traits |
Device iterator collection. More... | |
struct | forward_iterator_tag |
class | i2c_bb_i |
A bit banking implementation of i2c bus inherited from i2c_i base class. More... | |
class | i2c_bb_i< virtual_tag > |
A virtual base class interface specialization. Using the private virtual interface we provide the interface from i2c_i<virtual_tag> More... | |
class | i2c_i |
Abstract base class for i2c bus. More... | |
class | i2c_i< virtual_tag > |
A virtual base class specialization. More... | |
struct | id_t |
A standard container for storing IDs as a fixed size sequence of bytes. This type is based on etl::array Meets the requirements of: container, reversible container, sequence. Sets support random access iterators. More... | |
struct | id_traits |
id container traits helper More... | |
struct | id_traits< _Tp, 0 > |
class | idx_dev |
Abstract base class for indexed devices. More... | |
class | idx_dev< virtual_tag, data_t, idx_t, N > |
A virtual base class specialization. More... | |
class | in_dev |
Abstract base class for input devices. More... | |
class | in_dev< virtual_tag, data_t, streamsize > |
A virtual base class specialization. More... | |
class | inbuf_dev |
Abstract base class for input buffered devices. More... | |
class | inbuf_dev< virtual_tag, data_t, streamsize > |
A virtual base class specialization. More... | |
class | indev_it |
Input device iterator type. We "future call" interface methods from owner class to provide iterator functionality. More... | |
struct | input_iterator_tag |
class | iodev_it |
Indexed device iterator type. We "future call" interface methods from owner class to provide iterator functionality. More... | |
struct | is_invocable |
std::is_invocable trait for C++11 More... | |
struct | is_invocable_r |
std::is_invocable_r trait for C++11 More... | |
class | istreamdev_it |
class | ostream_dev |
Abstract base classes for output stream devices. More... | |
class | ostream_dev< virtual_tag, data_t > |
class | ostreamdev_it |
class | out_dev |
Abstract base classes for output devices. More... | |
class | out_dev< virtual_tag, data_t, streamsize > |
A virtual base class specialization. More... | |
class | outdev_it |
Output device iterator type. We "future call" interface methods from owner class to provide iterator functionality. More... | |
struct | output_iterator_tag |
Iterator tags [std.iterator.tags] Extension: contiguous_iterator_tag for denoting contiguous iterators. More... | |
struct | random_access_iterator_tag |
class | spi_bb_i |
A bit banking implementation of spi bus inherited from spi_i base class. More... | |
class | spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder > |
A virtual base class interface specialization. Using the private virtual interface we provide the interface from spi_i<virtual_tag> More... | |
class | spi_i |
class | spi_i< virtual_tag > |
A virtual base class implementation. More... | |
struct | virtual_tag |
virtual support tag type More... | |
Typedefs | |
template<typename T > | |
using | remove_cvref_t = std::remove_cv_t< std::remove_reference_t< T > > |
template<typename T > | |
using | cref_ = const std::remove_reference_t< T > & |
template<typename T > | |
using | _ref_t = std::add_lvalue_reference_t< T > |
template<typename _T1 , typename _T2 , typename _Ret = _T1> | |
using | use_if_same_t = meta::eval< meta::enable_if< meta::same_< _T1, _T2 >::value, _Ret > > |
template<typename... Ts> | |
using | common_reference = common_impl::common_reference< Ts... > |
template<typename... Ts> | |
using | common_reference_t = meta::eval< common_reference< Ts... > > |
byte and word types | |
using | byte_t = uint8_t |
8 bits wide More... | |
using | word_t = uint16_t |
16 bits wide More... | |
using | dword_t = uint32_t |
size and index | |
using | size_t = std::size_t |
using | index_t = size_t |
index_t and size_t mend to be interchangeable More... | |
using | ptrdiff_t = std::ptrdiff_t |
template<typename _Callable , typename... _Args> | |
using | invoke_result = detail::invoke_result_< is_invocable< _Callable, _Args... >::value, _Callable, _Args... > |
invoke_result (for C++14) More... | |
template<typename _Callable , typename... _Args> | |
using | invoke_result_t = meta::eval< invoke_result< _Callable, _Args... > > |
invoke_result_t (for C++14) More... | |
Functions | |
template<typename _Tp , size_t _Nm> | |
void | swap (array< _Tp, _Nm > &lhs, array< _Tp, _Nm > &rhs) noexcept(noexcept(lhs.swap(rhs))) |
template<size_t _Int, typename _Tp , size_t _Nm> | |
constexpr _Tp & | get (array< _Tp, _Nm > &arr) noexcept |
template<size_t _Int, typename _Tp , size_t _Nm> | |
constexpr _Tp && | get (array< _Tp, _Nm > &&arr) noexcept |
template<size_t _Int, typename _Tp , size_t _Nm> | |
constexpr const _Tp & | get (const array< _Tp, _Nm > &arr) noexcept |
template<typename _Callable , typename... _Args> | |
decltype(auto) | invoke (_Callable &&fn, _Args &&... args) |
Invoke a callable object (for C++14) More... | |
Array comparisons. | |
template<typename _Tp , size_t _Nm> | |
bool | operator== (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs) |
template<typename _Tp , size_t _Nm> | |
bool | operator!= (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs) |
template<typename _Tp , size_t _Nm> | |
bool | operator< (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs) |
template<typename _Tp , size_t _Nm> | |
bool | operator> (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs) |
template<typename _Tp , size_t _Nm> | |
bool | operator<= (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs) |
template<typename _Tp , size_t _Nm> | |
bool | operator>= (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs) |
device ID comparisons. | |
template<typename _Tp , size_t _Nm> | |
bool | operator== (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs) |
template<typename _Tp , size_t _Nm> | |
bool | operator!= (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs) |
template<typename _Tp , size_t _Nm> | |
bool | operator< (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs) |
template<typename _Tp , size_t _Nm> | |
bool | operator> (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs) |
template<typename _Tp , size_t _Nm> | |
bool | operator<= (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs) |
template<typename _Tp , size_t _Nm> | |
bool | operator>= (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs) |
template<typename _C1 , typename _D1 , typename _C2 , typename _D2 > | |
bool | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 > | 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 | 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 > | operator+ (typename _Cont::difference_type n, iodev_it< _Cont, _It, _beg, _size > &it) noexcept |
Variables | |
template<class I > | |
_utlConcept | WeaklyIncrementable |
template<class T , class U > | |
_utlConcept | Same = meta::same_<T, U>::value |
template<class Derived , class Base > | |
_utlConcept | DerivedFrom |
template<class From , class To > | |
_utlConcept | ConvertibleTo = std::is_convertible<From, To>::value |
template<class T , class U > | |
_utlConcept | CommonReference |
template<class T , class U > | |
_utlConcept | Common |
template<class T > | |
_utlConcept | Integral = std::is_integral<T>::value |
template<class T > | |
_utlConcept | SignedIntegral = Integral<T> && std::is_signed<T>::value |
template<class T > | |
_utlConcept | UnsignedIntegral = Integral<T> && !std::is_signed<T>::value |
template<typename T > | |
_utlConcept | MoveAssignable = std::is_move_assignable<T>::value |
template<typename T > | |
_utlConcept | CopyAssignable = std::is_copy_assignable<T>::value |
template<class LHS , class RHS > | |
_utlConcept | Assignable |
template<class T > | |
_utlConcept | Destructible = std::is_nothrow_destructible<T>::value |
template<class T , class... Args> | |
_utlConcept | Constructible |
template<class T > | |
_utlConcept | DefaultConstructible = Constructible<T> |
template<class T > | |
_utlConcept | MoveConstructible |
template<class T > | |
_utlConcept | CopyConstructible |
template<class T > | |
_utlConcept | Movable |
template<class T > | |
_utlConcept | Copyable |
template<class B > | |
_utlConcept | Boolean |
template<class T , class U > | |
_utlConcept | WeaklyEqualityComparableWith |
template<class T > | |
_utlConcept | EqualityComparable = WeaklyEqualityComparableWith<T, T> |
template<class T , class U > | |
_utlConcept | EqualityComparableWith |
template<class T > | |
_utlConcept | StrictTotallyOrdered |
template<class T , class U > | |
_utlConcept | StrictTotallyOrderedWith |
template<class T > | |
_utlConcept | Semiregular = Copyable<T> && DefaultConstructible<T> |
template<class T > | |
_utlConcept | Regular = Semiregular<T> && EqualityComparable<T> |
template<class T > | |
_utlConcept | Scalar |
template<class T > | |
_utlConcept | Arithmetic |
template<class T > | |
_utlConcept | FloatingPoint |
template<class F , class... Args> | |
_utlConcept | Invocable = is_invocable<F, Args...>::value |
template<class F , class... Args> | |
_utlConcept | RegularInvocable = Invocable<F, Args...> |
template<class F , class... Args> | |
_utlConcept | Predicate |
template<class R , class T , class U > | |
_utlConcept | Relation |
template<class R , class T , class U > | |
_utlConcept | StrictWeakOrder = Relation<R, T, U> |
template<typename _Tp > | |
constexpr bool | Idx_dev = idx_dev_details::is_idx_dev_ <_Tp>::value |
template<typename _Tp > | |
constexpr bool | In_dev = in_dev_details::is_in_dev_ <_Tp>::value |
template<typename _Tp > | |
constexpr bool | Inbuf_dev = inbuf_dev_details::is_inbuf_dev_ <_Tp>::value |
template<typename _Tp > | |
constexpr bool | Out_dev = out_dev_details::is_out_dev_<_Tp>::value |
using | is_swappable = std::is_swappable |
using | is_swappable_with = std::is_swappable_with |
template<class T , class U > | |
_utlConcept | SwappableWith |
template<class T > | |
_utlConcept | Swappable = is_swappable_with<T, T>::type::value |
STL's core language concepts.
We provide std concepts in case host's stl does not provide them yet.
For more information
using utl::_ref_t = typedef std::add_lvalue_reference_t<T> |
using utl::byte_t = typedef uint8_t |
using utl::common_reference = typedef common_impl::common_reference<Ts...> |
using utl::common_reference_t = typedef meta::eval< common_reference<Ts...> > |
using utl::cref_ = typedef const std::remove_reference_t<T>& |
using utl::dword_t = typedef uint32_t |
using utl::index_t = typedef size_t |
index_t and size_t mend to be interchangeable
using utl::invoke_result = typedef detail::invoke_result_< is_invocable<_Callable, _Args...>::value, _Callable, _Args... > |
using utl::invoke_result_t = typedef meta::eval < invoke_result<_Callable, _Args...> > |
using utl::is_swappable = typedef std::is_swappable |
using utl::is_swappable_with = typedef std::is_swappable_with |
using utl::ptrdiff_t = typedef std::ptrdiff_t |
using utl::remove_cvref_t = typedef std::remove_cv_t< std::remove_reference_t<T> > |
using utl::size_t = typedef std::size_t |
using utl::use_if_same_t = typedef meta::eval< meta::enable_if< meta::same_<_T1, _T2>::value, _Ret > > |
using utl::word_t = typedef uint16_t |
|
noexcept |
|
noexcept |
|
noexcept |
|
inline |
|
inlinenoexcept |
Definition at line 236 of file dev_iterators.h.
|
inlinenoexcept |
Inequality comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid.
lhs | Left hand site iterator |
rhs | Right hand site iterator |
Definition at line 382 of file dev_iterators.h.
|
inlinenoexcept |
Definition at line 624 of file dev_iterators.h.
|
inlinenoexcept |
Definition at line 909 of file dev_iterators.h.
|
inlinenoexcept |
Definition at line 659 of file dev_iterators.h.
|
inlinenoexcept |
Definition at line 944 of file dev_iterators.h.
|
inlinenoexcept |
Definition at line 651 of file dev_iterators.h.
|
inlinenoexcept |
Definition at line 936 of file dev_iterators.h.
|
inlinenoexcept |
Less than.
Definition at line 616 of file dev_iterators.h.
|
inlinenoexcept |
Less than.
Definition at line 901 of file dev_iterators.h.
|
inlinenoexcept |
Definition at line 630 of file dev_iterators.h.
|
inlinenoexcept |
Definition at line 915 of file dev_iterators.h.
|
inlinenoexcept |
Equality comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid.
lhs | Left hand site iterator |
rhs | Right hand site iterator |
Definition at line 229 of file dev_iterators.h.
|
inlinenoexcept |
Equality comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid.
lhs | Left hand site iterator |
rhs | Right hand site iterator |
Definition at line 366 of file dev_iterators.h.
|
inlinenoexcept |
Equality
Definition at line 608 of file dev_iterators.h.
|
inlinenoexcept |
Equality
Definition at line 893 of file dev_iterators.h.
|
inlinenoexcept |
Definition at line 636 of file dev_iterators.h.
|
inlinenoexcept |
Definition at line 921 of file dev_iterators.h.
|
inlinenoexcept |
Definition at line 642 of file dev_iterators.h.
|
inlinenoexcept |
Definition at line 927 of file dev_iterators.h.
_utlConcept utl::Arithmetic |
_utlConcept utl::Assignable |
_utlConcept utl::Boolean |
_utlConcept utl::Common |
_utlConcept utl::CommonReference |
_utlConcept utl::Constructible |
_utlConcept utl::ConvertibleTo = std::is_convertible<From, To>::value |
_utlConcept utl::Copyable |
_utlConcept utl::CopyAssignable = std::is_copy_assignable<T>::value |
_utlConcept utl::CopyConstructible |
_utlConcept utl::DefaultConstructible = Constructible<T> |
_utlConcept utl::DerivedFrom |
_utlConcept utl::Destructible = std::is_nothrow_destructible<T>::value |
_utlConcept utl::EqualityComparable = WeaklyEqualityComparableWith<T, T> |
_utlConcept utl::EqualityComparableWith |
_utlConcept utl::FloatingPoint |
constexpr bool utl::Idx_dev = idx_dev_details::is_idx_dev_ <_Tp>::value |
constexpr bool utl::In_dev = in_dev_details::is_in_dev_ <_Tp>::value |
constexpr bool utl::Inbuf_dev = inbuf_dev_details::is_inbuf_dev_ <_Tp>::value |
Predicate for input device checking
_Tp | Type to check |
Definition at line 380 of file inbuf_dev.h.
_utlConcept utl::Integral = std::is_integral<T>::value |
_utlConcept utl::Invocable = is_invocable<F, Args...>::value |
_utlConcept utl::Movable |
_utlConcept utl::MoveAssignable = std::is_move_assignable<T>::value |
_utlConcept utl::MoveConstructible |
constexpr bool utl::Out_dev = out_dev_details::is_out_dev_<_Tp>::value |
_utlConcept utl::Predicate |
_utlConcept utl::Regular = Semiregular<T> && EqualityComparable<T> |
_utlConcept utl::RegularInvocable = Invocable<F, Args...> |
_utlConcept utl::Relation |
_utlConcept utl::Same = meta::same_<T, U>::value |
_utlConcept utl::Scalar |
_utlConcept utl::Semiregular = Copyable<T> && DefaultConstructible<T> |
_utlConcept utl::SignedIntegral = Integral<T> && std::is_signed<T>::value |
_utlConcept utl::StrictTotallyOrdered |
_utlConcept utl::StrictTotallyOrderedWith |
_utlConcept utl::StrictWeakOrder = Relation<R, T, U> |
_utlConcept utl::Swappable = is_swappable_with<T, T>::type::value |
_utlConcept utl::SwappableWith |
_utlConcept utl::UnsignedIntegral = Integral<T> && !std::is_signed<T>::value |
_utlConcept utl::WeaklyEqualityComparableWith |
_utlConcept utl::WeaklyIncrementable |
Definition at line 49 of file iterators.h.