|
|
|
@ -232,42 +232,3 @@ ALWAYS_INLINE constexpr T SignExtendN(T value)
|
|
|
|
|
static_cast<std::underlying_type<type_>::type>(rhs)); \
|
|
|
|
|
return lhs; \
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#define IMPLEMENT_STATIC_FRIEND_ENUM_CLASS_BITWISE_OPERATORS(type_) \
|
|
|
|
|
ALWAYS_INLINE constexpr static friend type_ operator&(type_ lhs, type_ rhs) \
|
|
|
|
|
{ \
|
|
|
|
|
return static_cast<type_>(static_cast<std::underlying_type<type_>::type>(lhs) & \
|
|
|
|
|
static_cast<std::underlying_type<type_>::type>(rhs)); \
|
|
|
|
|
} \
|
|
|
|
|
ALWAYS_INLINE constexpr static friend type_ operator|(type_ lhs, type_ rhs) \
|
|
|
|
|
{ \
|
|
|
|
|
return static_cast<type_>(static_cast<std::underlying_type<type_>::type>(lhs) | \
|
|
|
|
|
static_cast<std::underlying_type<type_>::type>(rhs)); \
|
|
|
|
|
} \
|
|
|
|
|
ALWAYS_INLINE constexpr static friend type_ operator^(type_ lhs, type_ rhs) \
|
|
|
|
|
{ \
|
|
|
|
|
return static_cast<type_>(static_cast<std::underlying_type<type_>::type>(lhs) ^ \
|
|
|
|
|
static_cast<std::underlying_type<type_>::type>(rhs)); \
|
|
|
|
|
} \
|
|
|
|
|
ALWAYS_INLINE constexpr static friend type_ operator~(type_ val) \
|
|
|
|
|
{ \
|
|
|
|
|
return static_cast<type_>(~static_cast<std::underlying_type<type_>::type>(val)); \
|
|
|
|
|
} \
|
|
|
|
|
ALWAYS_INLINE constexpr static friend type_& operator&=(type_& lhs, type_ rhs) \
|
|
|
|
|
{ \
|
|
|
|
|
lhs = static_cast<type_>(static_cast<std::underlying_type<type_>::type>(lhs) & \
|
|
|
|
|
static_cast<std::underlying_type<type_>::type>(rhs)); \
|
|
|
|
|
return lhs; \
|
|
|
|
|
} \
|
|
|
|
|
ALWAYS_INLINE constexpr static friend type_& operator|=(type_& lhs, type_ rhs) \
|
|
|
|
|
{ \
|
|
|
|
|
lhs = static_cast<type_>(static_cast<std::underlying_type<type_>::type>(lhs) | \
|
|
|
|
|
static_cast<std::underlying_type<type_>::type>(rhs)); \
|
|
|
|
|
return lhs; \
|
|
|
|
|
} \
|
|
|
|
|
ALWAYS_INLINE constexpr static friend type_& operator^=(type_& lhs, type_ rhs) \
|
|
|
|
|
{ \
|
|
|
|
|
lhs = static_cast<type_>(static_cast<std::underlying_type<type_>::type>(lhs) ^ \
|
|
|
|
|
static_cast<std::underlying_type<type_>::type>(rhs)); \
|
|
|
|
|
return lhs; \
|
|
|
|
|
}
|
|
|
|
|