11#ifndef INCGUARD_MGL_BIT_H_1610068077
12#define INCGUARD_MGL_BIT_H_1610068077
30 return static_cast<T
>(1u << bit);
41template<
class EnumType,
typename FlagType = u
int32_t>
49 static constexpr size_t kSize =
sizeof(FlagType) * 8;
89 [[nodiscard]]
constexpr const FlagType &
GetValue() const noexcept
102 [[nodiscard]]
constexpr bool Has(EnumType value)
const noexcept
114 [[nodiscard]]
constexpr bool HasAny() const noexcept
189 constexpr explicit operator bool() const noexcept
228 _value |= rhs._value;
254 _value &= rhs._value;
280 _value ^= rhs._value;
375 return _value == rhs._value;
386 return _value != rhs._value;
スコープを持つ列挙型に対応したビットフラグを扱うクラス
Definition mgl_bit.h:43
constexpr EnumBitFlags(FlagType value) noexcept
コンストラクタ
Definition mgl_bit.h:78
constexpr EnumBitFlags & operator|=(const EnumBitFlags &rhs) noexcept
自身の型との|=演算子
Definition mgl_bit.h:226
constexpr EnumBitFlags & operator&=(const EnumBitFlags &rhs) noexcept
自身の型との&=演算子
Definition mgl_bit.h:252
constexpr EnumBitFlags & operator^=(EnumType rhs) noexcept
EnumType型との^=演算子
Definition mgl_bit.h:265
constexpr EnumBitFlags & operator|=(EnumType rhs) noexcept
EnumType型との|=演算子
Definition mgl_bit.h:213
constexpr bool HasAny() const noexcept
いずれかの値を保持しているかを取得
Definition mgl_bit.h:114
constexpr EnumBitFlags & Set(EnumType value) noexcept
指定した値をセットする
Definition mgl_bit.h:126
constexpr bool operator!() const noexcept
否定演算子
Definition mgl_bit.h:201
constexpr EnumBitFlags & Clear() noexcept
全てのフラグをクリアする
Definition mgl_bit.h:151
std::underlying_type_t< EnumType > UnderlyingType
EnumTypeの基底の型
Definition mgl_bit.h:46
constexpr EnumBitFlags operator~() const noexcept
~演算子(全てのビットの反転)
Definition mgl_bit.h:362
constexpr const FlagType & GetValue() const noexcept
フラグの値を取得
Definition mgl_bit.h:89
constexpr EnumBitFlags & Flip() noexcept
全ての値を反転させる
Definition mgl_bit.h:176
constexpr EnumBitFlags operator&(EnumType rhs) const noexcept
EnumType型との&演算子
Definition mgl_bit.h:315
static constexpr size_t kSize
ビットフラグのサイズ
Definition mgl_bit.h:49
constexpr EnumBitFlags operator^(EnumType rhs) const noexcept
EnumType型との^演算子
Definition mgl_bit.h:339
constexpr EnumBitFlags & operator^=(const EnumBitFlags &rhs) noexcept
自身の型との^=演算子
Definition mgl_bit.h:278
constexpr EnumBitFlags & Flip(EnumType value) noexcept
指定した値のフラグを反転させる
Definition mgl_bit.h:164
constexpr EnumBitFlags operator^(const EnumBitFlags &rhs) const noexcept
自身の型との^演算子
Definition mgl_bit.h:351
constexpr EnumBitFlags operator|(const EnumBitFlags &rhs) const noexcept
自身の型との|演算子
Definition mgl_bit.h:303
constexpr EnumBitFlags operator|(EnumType rhs) const noexcept
EnumType型との|演算子
Definition mgl_bit.h:291
constexpr EnumBitFlags & Clear(EnumType value) noexcept
指定した値をクリアする
Definition mgl_bit.h:139
constexpr EnumBitFlags() noexcept
コンストラクタ
Definition mgl_bit.h:56
constexpr bool Has(EnumType value) const noexcept
指定した値を保持しているかを取得
Definition mgl_bit.h:102
constexpr bool operator==(const EnumBitFlags &rhs) const noexcept
等価演算子
Definition mgl_bit.h:373
constexpr EnumBitFlags & operator&=(EnumType rhs) noexcept
EnumType型との&=演算子
Definition mgl_bit.h:239
constexpr EnumBitFlags operator&(const EnumBitFlags &rhs) const noexcept
自身の型との&演算子
Definition mgl_bit.h:327
constexpr bool operator!=(const EnumBitFlags &rhs) const noexcept
不等価演算子
Definition mgl_bit.h:384
constexpr EnumBitFlags(EnumType value) noexcept
コンストラクタ
Definition mgl_bit.h:67
constexpr T MakeBit(uint8_t bit) noexcept
ビットフラグを生成
Definition mgl_bit.h:28