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>
52 template <
typename TInteger>
57 return etl::byte(
static_cast<unsigned int>(b) << shift);
63 template <
typename TInteger>
68 return etl::byte(
static_cast<unsigned int>(b) >> shift);
74 template <
typename TInteger>
79 return b = b << shift;;
85 template <
typename TInteger>
90 return b = b >> shift;
98 return etl::byte(
static_cast<unsigned int>(lhs) |
static_cast<unsigned int>(rhs));
106 return etl::byte(
static_cast<unsigned int>(lhs) &
static_cast<unsigned int>(rhs));
114 return etl::byte(
static_cast<unsigned int>(lhs) ^
static_cast<unsigned int>(rhs));
122 return lhs = lhs | rhs;
130 return lhs = lhs & rhs;
138 return lhs = lhs ^ rhs;
146 return etl::byte(~
static_cast<unsigned int>(b));
159 template <
typename TInteger>
173 template <
typename T>
175 : value(
static_cast<unsigned char>(v))
182 template <
typename T>
185 return static_cast<T
>(value);
197 return (lhs.value == rhs.value);
205 return !(lhs == rhs);
211 template <
typename TInteger>
221 template <
typename TInteger>
225 return etl::byte(to_integer<unsigned int>(b) << shift);
231 template <
typename TInteger>
235 return etl::byte(to_integer<unsigned int>(b) >> shift);
241 template <
typename TInteger>
253 template <
typename TInteger>
267 return etl::byte(to_integer<unsigned int>(lhs) | to_integer<unsigned int>(rhs));
275 return etl::byte(to_integer<unsigned int>(lhs) & to_integer<unsigned int>(rhs));
283 return etl::byte(to_integer<unsigned int>(lhs) ^ to_integer<unsigned int>(rhs));
291 return lhs = lhs | rhs;
299 return lhs = lhs & rhs;
307 return lhs = lhs ^ rhs;
315 return etl::byte(~to_integer<unsigned char>(b));
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:1191
bitset_ext
Definition: absolute.h:38
etl::enable_if< etl::is_integral< TInteger >::value, etl::byte >::type operator<<(etl::byte b, TInteger shift)
Shift left.
Definition: byte.h:223
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:645
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:633
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