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 {};
41 template <
typename TInteger>
43 typename etl::enable_if<etl::is_integral<TInteger>::value, TInteger>::type
52 template <
typename TInteger>
54 typename etl::enable_if<etl::is_integral<TInteger>::value, etl::byte>::type
55 operator <<(etl::byte b, TInteger shift) ETL_NOEXCEPT
57 return etl::byte(
static_cast<unsigned int>(b) << shift);
63 template <
typename TInteger>
65 typename etl::enable_if<etl::is_integral<TInteger>::value, etl::byte>::type
66 operator >>(etl::byte b, TInteger shift) ETL_NOEXCEPT
68 return etl::byte(
static_cast<unsigned int>(b) >> shift);
74 template <
typename TInteger>
76 typename etl::enable_if<etl::is_integral<TInteger>::value, etl::byte&>::type
79 return b = b << shift;;
85 template <
typename TInteger>
87 typename etl::enable_if<etl::is_integral<TInteger>::value, etl::byte&>::type
90 return b = b >> shift;
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 constexpr etl::byte
operator ^(etl::byte lhs, etl::byte rhs) ETL_NOEXCEPT
114 return etl::byte(
static_cast<unsigned int>(lhs) ^
static_cast<unsigned int>(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 ETL_CONSTEXPR14 etl::byte&
operator ^=(etl::byte& lhs, etl::byte rhs) ETL_NOEXCEPT
138 return lhs = lhs ^ rhs;
144 inline constexpr etl::byte
operator ~(etl::byte b) ETL_NOEXCEPT
146 return etl::byte(~
static_cast<unsigned int>(b));
159 template <
typename TInteger>
173 template <
typename T>
175 : value(
static_cast<unsigned char>(v))
180 template <
typename T>
183 return static_cast<T
>(value);
197 return (lhs.value == rhs.value);
205 return !(lhs == rhs);
211 template <
typename TInteger>
221 template <
typename TInteger>
231 template <
typename TInteger>
241 template <
typename TInteger>
253 template <
typename TInteger>
291 return lhs = lhs | rhs;
299 return lhs = lhs & rhs;
307 return lhs = lhs ^ rhs;
The byte class.
Definition byte.h:155
friend bool operator==(etl::byte lhs, etl::byte rhs)
Equality test.
Definition byte.h:195
friend etl::enable_if< etl::is_integral< TInteger >::value, TInteger >::type to_integer(etl::byte b)
To integer.
Definition byte.h:213
enable_if
Definition type_traits_generator.h:1254
bitset_ext
Definition absolute.h:39
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:3196
etl::byte operator~(etl::byte b)
Not.
Definition byte.h:313
etl::byte & operator^=(etl::byte &lhs, etl::byte rhs)
Exclusive or equals.
Definition byte.h:305
etl::enable_if< etl::is_integral< TInteger >::value, etl::byte & >::type operator<<=(etl::byte &b, TInteger shift)
Shift left equals.
Definition byte.h:243
etl::byte operator|(etl::byte lhs, etl::byte rhs)
Or.
Definition byte.h:265
etl::byte & operator|=(etl::byte &lhs, etl::byte rhs)
Or equals.
Definition byte.h:289
etl::enable_if< etl::is_integral< TInteger >::value, TInteger >::type to_integer(etl::byte b)
To integer.
Definition byte.h:213
etl::byte operator&(etl::byte lhs, etl::byte rhs)
And.
Definition byte.h:273
bool operator!=(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1151
etl::enable_if< etl::is_integral< TInteger >::value, etl::byte >::type operator>>(etl::byte b, TInteger shift)
Shift right.
Definition byte.h:233
etl::byte operator^(etl::byte lhs, etl::byte rhs)
Exclusive Or.
Definition byte.h:281
bool operator==(const etl::array< T, SIZE > &lhs, const etl::array< T, SIZE > &rhs)
Definition array.h:1139
etl::enable_if< etl::is_integral< TInteger >::value, etl::byte & >::type operator>>=(etl::byte &b, TInteger shift)
Shift right equals.
Definition byte.h:255
etl::byte & operator&=(etl::byte &lhs, etl::byte rhs)
And equals.
Definition byte.h:297