37#if defined(__cpp_lib_byte)
38 using Byte = std::byte;
40 enum class Byte :
unsigned char {
43 template<
class _IntType, std::enable_if_t<std::is_
integral_v<_IntType>,
int> = 0>
47 return static_cast<Byte>(
static_cast<unsigned char>(
static_cast<unsigned int>(arg) << shift));
50 template<
class _IntType, std::enable_if_t<std::is_
integral_v<_IntType>,
int> = 0>
54 return static_cast<Byte>(
static_cast<unsigned char>(
static_cast<unsigned int>(arg) >> shift));
58 const Byte right)
noexcept {
60 return static_cast<Byte>(
static_cast<unsigned char>(
static_cast<unsigned int>(left) |
static_cast<unsigned int>(right)));
64 const Byte right)
noexcept {
66 return static_cast<Byte>(
static_cast<unsigned char>(
static_cast<unsigned int>(left) &
static_cast<unsigned int>(right)));
70 const Byte right)
noexcept {
72 return static_cast<Byte>(
static_cast<unsigned char>(
static_cast<unsigned int>(left) ^
static_cast<unsigned int>(right)));
80 template<
class _IntType, std::enable_if_t<std::is_
integral_v<_IntType>,
int> = 0>
82 return arg = arg << shift;
85 template<
class _IntType, std::enable_if_t<std::is_
integral_v<_IntType>,
int> = 0>
87 return arg = arg >> shift;
91 return left = left | right;
95 return left = left & right;
99 return left = left ^ right;
102 template<
class _IntType, std::enable_if_t<std::is_
integral_v<_IntType>,
int> = 0>
Definition Application.hpp:19
constexpr Byte operator>>(const Byte arg, const _IntType shift) noexcept
Definition DataTypes.hpp:51
Byte
Definition DataTypes.hpp:40
Int32 SInt
Definition DataTypes.hpp:29
std::uint64_t UInt64
Definition DataTypes.hpp:26
constexpr Byte operator^(const Byte left, const Byte right) noexcept
Definition DataTypes.hpp:69
std::int64_t SInt64
Definition DataTypes.hpp:25
constexpr Byte & operator^=(Byte &left, const Byte right) noexcept
Definition DataTypes.hpp:98
std::int16_t SInt16
Definition DataTypes.hpp:19
Int32 Int
Definition DataTypes.hpp:28
constexpr Byte operator<<(const Byte arg, const _IntType shift) noexcept
Definition DataTypes.hpp:44
UInt32 UInt
Definition DataTypes.hpp:30
constexpr Byte operator~(const Byte arg) noexcept
Definition DataTypes.hpp:75
std::int32_t Int32
Definition DataTypes.hpp:21
std::uint16_t UInt16
Definition DataTypes.hpp:20
constexpr Byte & operator>>=(Byte &arg, const _IntType shift) noexcept
Definition DataTypes.hpp:86
bool Bool
Definition DataTypes.hpp:35
std::uint8_t UInt8
Definition DataTypes.hpp:17
std::int32_t SInt32
Definition DataTypes.hpp:22
constexpr Byte & operator|=(Byte &left, const Byte right) noexcept
Definition DataTypes.hpp:90
std::int8_t SInt8
Definition DataTypes.hpp:16
std::int64_t Int64
Definition DataTypes.hpp:24
constexpr Byte operator|(const Byte left, const Byte right) noexcept
Definition DataTypes.hpp:57
constexpr Byte & operator<<=(Byte &arg, const _IntType shift) noexcept
Definition DataTypes.hpp:81
constexpr _IntType to_integer(const Byte arg) noexcept
Definition DataTypes.hpp:103
std::uint32_t UInt32
Definition DataTypes.hpp:23
constexpr Byte operator&(const Byte left, const Byte right) noexcept
Definition DataTypes.hpp:63
float Float
Definition DataTypes.hpp:32
std::int8_t Int8
Definition DataTypes.hpp:15
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
std::int16_t Int16
Definition DataTypes.hpp:18
constexpr Byte & operator&=(Byte &left, const Byte right) noexcept
Definition DataTypes.hpp:94
double Double
Definition DataTypes.hpp:33