26#ifndef ETL_BYTE_INCLUDED
27#define ETL_BYTE_INCLUDED
34#if ETL_USING_CPP11 && !defined(ETL_BYTE_FORCE_CPP03_IMPLEMENTATION)
36 enum class byte :
unsigned char
43 template <
typename TInteger>
44 constexpr typename etl::enable_if<etl::is_integral<TInteger>::value, TInteger>::type
to_integer(etl::byte b) ETL_NOEXCEPT
52 template <
typename TInteger>
53 constexpr typename etl::enable_if<etl::is_integral<TInteger>::value, etl::byte>::type
operator<<(etl::byte b, TInteger shift) ETL_NOEXCEPT
55 return etl::byte(
static_cast<unsigned int>(b) << shift);
61 template <
typename TInteger>
62 constexpr typename etl::enable_if<etl::is_integral<TInteger>::value, etl::byte>::type
operator>>(etl::byte b, TInteger shift) ETL_NOEXCEPT
64 return etl::byte(
static_cast<unsigned int>(b) >> shift);
70 template <
typename TInteger>
71 constexpr typename etl::enable_if<etl::is_integral<TInteger>::value, etl::byte&>::type
operator<<=(etl::byte& b, TInteger shift) ETL_NOEXCEPT
73 return b = b << shift;
79 template <
typename TInteger>
80 constexpr typename etl::enable_if<etl::is_integral<TInteger>::value, etl::byte&>::type
operator>>=(etl::byte& b, TInteger shift) ETL_NOEXCEPT
82 return b = b >> shift;
88 inline constexpr etl::byte
operator|(etl::byte lhs, etl::byte rhs) ETL_NOEXCEPT
90 return etl::byte(
static_cast<unsigned int>(lhs) |
static_cast<unsigned int>(rhs));
96 inline constexpr etl::byte
operator&(etl::byte lhs, etl::byte rhs) ETL_NOEXCEPT
98 return etl::byte(
static_cast<unsigned int>(lhs) &
static_cast<unsigned int>(rhs));
104 inline constexpr etl::byte
operator^(etl::byte lhs, etl::byte rhs) ETL_NOEXCEPT
106 return etl::byte(
static_cast<unsigned int>(lhs) ^
static_cast<unsigned int>(rhs));
112 inline ETL_CONSTEXPR14 etl::byte&
operator|=(etl::byte& lhs, etl::byte rhs) ETL_NOEXCEPT
114 return lhs = lhs | rhs;
120 inline ETL_CONSTEXPR14 etl::byte&
operator&=(etl::byte& lhs, etl::byte rhs) ETL_NOEXCEPT
122 return lhs = lhs & rhs;
128 inline ETL_CONSTEXPR14 etl::byte&
operator^=(etl::byte& lhs, etl::byte rhs) ETL_NOEXCEPT
130 return lhs = lhs ^ rhs;
136 inline constexpr etl::byte
operator~(etl::byte b) ETL_NOEXCEPT
138 return etl::byte(~
static_cast<unsigned int>(b));
151 template <
typename TInteger>
163 template <
typename T>
165 : value(
static_cast<unsigned char>(v))
170 template <
typename T>
173 return static_cast<T
>(value);
187 return (lhs.value == rhs.value);
195 return !(lhs == rhs);
201 template <
typename TInteger>
210 template <
typename TInteger>
219 template <
typename TInteger>
228 template <
typename TInteger>
239 template <
typename TInteger>
276 return lhs = lhs | rhs;
284 return lhs = lhs & rhs;
292 return lhs = lhs ^ rhs;
The byte class.
Definition byte.h:147
friend bool operator==(etl::byte lhs, etl::byte rhs)
Equality test.
Definition byte.h:185
friend etl::enable_if< etl::is_integral< TInteger >::value, TInteger >::type to_integer(etl::byte b)
To integer.
Definition byte.h:202
bitset_ext
Definition absolute.h:40
ETL_CONSTEXPR14 bool operator==(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1081
std::basic_ostream< T, std::char_traits< T > > & operator<<(std::basic_ostream< T, std::char_traits< T > > &os, const etl::ibasic_string< T > &str)
Definition basic_string.h:3213
etl::byte operator~(etl::byte b)
Not.
Definition byte.h:298
etl::byte & operator^=(etl::byte &lhs, etl::byte rhs)
Exclusive or equals.
Definition byte.h:290
etl::enable_if< etl::is_integral< TInteger >::value, etl::byte & >::type operator<<=(etl::byte &b, TInteger shift)
Shift left equals.
Definition byte.h:229
etl::byte operator|(etl::byte lhs, etl::byte rhs)
Or.
Definition byte.h:250
etl::byte & operator|=(etl::byte &lhs, etl::byte rhs)
Or equals.
Definition byte.h:274
etl::enable_if< etl::is_integral< TInteger >::value, TInteger >::type to_integer(etl::byte b)
To integer.
Definition byte.h:202
etl::byte operator&(etl::byte lhs, etl::byte rhs)
And.
Definition byte.h:258
etl::enable_if< etl::is_integral< TInteger >::value, etl::byte >::type operator>>(etl::byte b, TInteger shift)
Shift right.
Definition byte.h:220
ETL_CONSTEXPR14 bool operator!=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1093
etl::byte operator^(etl::byte lhs, etl::byte rhs)
Exclusive Or.
Definition byte.h:266
etl::enable_if< etl::is_integral< TInteger >::value, etl::byte & >::type operator>>=(etl::byte &b, TInteger shift)
Shift right equals.
Definition byte.h:240
etl::byte & operator&=(etl::byte &lhs, etl::byte rhs)
And equals.
Definition byte.h:282