Added bits_t member to BitFlags and is_bitflags_v helper constant.
This commit is contained in:
parent
c214398fac
commit
e586698fb6
@ -25,6 +25,8 @@ namespace mijin
|
|||||||
template<typename TBits>
|
template<typename TBits>
|
||||||
struct BitFlags
|
struct BitFlags
|
||||||
{
|
{
|
||||||
|
using bits_t = TBits;
|
||||||
|
|
||||||
constexpr TBits& operator |=(const BitFlags& other) {
|
constexpr TBits& operator |=(const BitFlags& other) {
|
||||||
for (std::size_t idx = 0; idx < sizeof(TBits); ++idx) {
|
for (std::size_t idx = 0; idx < sizeof(TBits); ++idx) {
|
||||||
*(std::bit_cast<std::byte*>(asBits()) + idx) |= *(std::bit_cast<const std::byte*>(other.asBits()) + idx);
|
*(std::bit_cast<std::byte*>(asBits()) + idx) |= *(std::bit_cast<const std::byte*>(other.asBits()) + idx);
|
||||||
@ -83,6 +85,9 @@ private:
|
|||||||
constexpr const TBits* asBits() const { return static_cast<const TBits*>(this); }
|
constexpr const TBits* asBits() const { return static_cast<const TBits*>(this); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
constexpr bool is_bitflags_v = std::is_base_of_v<BitFlags<T>, T>;
|
||||||
|
|
||||||
//
|
//
|
||||||
// public functions
|
// public functions
|
||||||
//
|
//
|
||||||
|
Loading…
x
Reference in New Issue
Block a user