35 static_assert(std::is_enum_v<T>,
"lmms::Flags can only be used with enum types");
51 constexpr auto testAll(
Flags flags)
const ->
bool {
return (*
this & flags) == flags; }
69 constexpr explicit operator bool()
const {
return m_value != 0; }
77#define LMMS_DECLARE_OPERATORS_FOR_FLAGS(type) \
78constexpr inline auto operator|(type l, type r) -> ::lmms::Flags<type> { return ::lmms::Flags{l} | ::lmms::Flags{r}; }
friend constexpr auto operator-(Flags l, Flags r) -> Flags
Definition Flags.h:60
friend constexpr auto operator&(Flags l, Flags r) -> Flags
Definition Flags.h:56
constexpr auto operator+=(Flags f) -> Flags &
Definition Flags.h:65
std::underlying_type_t< T > UnderlyingType
Definition Flags.h:39
constexpr auto testAll(Flags flags) const -> bool
Definition Flags.h:51
T EnumType
Definition Flags.h:38
friend constexpr auto operator^(Flags l, Flags r) -> Flags
Definition Flags.h:58
constexpr auto operator^=(Flags f) -> Flags &
Definition Flags.h:64
constexpr auto testAny(Flags flags) const -> bool
Definition Flags.h:52
constexpr Flags()=default
constexpr Flags(UnderlyingType value)
Definition Flags.h:47
friend constexpr auto operator==(Flags l, Flags r) -> bool=default
UnderlyingType m_value
Definition Flags.h:74
constexpr auto testFlag(EnumType flag) const -> bool
Definition Flags.h:53
friend constexpr auto operator|(Flags l, Flags r) -> Flags
Definition Flags.h:57
constexpr auto operator&=(Flags f) -> Flags &
Definition Flags.h:62
constexpr auto operator|=(Flags f) -> Flags &
Definition Flags.h:63
constexpr auto operator-=(Flags f) -> Flags &
Definition Flags.h:66
constexpr auto operator~() const -> Flags
Definition Flags.h:55
friend constexpr auto operator+(Flags l, Flags r) -> Flags
Definition Flags.h:59
constexpr Flags(T value)
Definition Flags.h:43
int * l
Definition inflate.c:1579
unsigned f
Definition inflate.c:1572
static PuglViewHint int value
Definition pugl.h:1708
Definition AudioAlsa.cpp:35
int r
Definition crypt.c:458
int flag
Definition unix.c:754
#define const
Definition zconf.h:137