diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2014-11-04 22:18:37 +0000 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2014-11-04 22:23:27 +0000 |
| commit | 71197c46412febc58479226bfa631fbbe33f9d35 (patch) | |
| tree | 51d89825117263c28993fc5532cd78bce4940770 | |
| parent | 4d89a297c5e8922123515a9714b02e4dd53b77d9 (diff) | |
Tweak flags implementation
| -rw-r--r-- | src/flags.hh | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/flags.hh b/src/flags.hh index a3cbc5e0..10e05187 100644 --- a/src/flags.hh +++ b/src/flags.hh @@ -10,7 +10,7 @@ template<typename Flags> struct WithBitOps : std::false_type {}; template<typename Flags> -using EnumStorageType = typename std::underlying_type<Flags>::type; +using UnderlyingType = typename std::underlying_type<Flags>::type; template<typename Flags> using EnableIfWithBitOps = typename std::enable_if<WithBitOps<Flags>::value>::type; @@ -18,33 +18,33 @@ using EnableIfWithBitOps = typename std::enable_if<WithBitOps<Flags>::value>::ty template<typename Flags, typename = EnableIfWithBitOps<Flags>> constexpr Flags operator|(Flags lhs, Flags rhs) { - return (Flags)((EnumStorageType<Flags>) lhs | (EnumStorageType<Flags>) rhs); + return (Flags)((UnderlyingType<Flags>) lhs | (UnderlyingType<Flags>) rhs); } template<typename Flags, typename = EnableIfWithBitOps<Flags>> Flags& operator|=(Flags& lhs, Flags rhs) { - (EnumStorageType<Flags>&) lhs |= (EnumStorageType<Flags>) rhs; + (UnderlyingType<Flags>&) lhs |= (UnderlyingType<Flags>) rhs; return lhs; } template<typename Flags, typename = EnableIfWithBitOps<Flags>> constexpr bool operator&(Flags lhs, Flags rhs) { - return ((EnumStorageType<Flags>) lhs & (EnumStorageType<Flags>) rhs) != 0; + return ((UnderlyingType<Flags>) lhs & (UnderlyingType<Flags>) rhs) == (UnderlyingType<Flags>)rhs; } template<typename Flags, typename = EnableIfWithBitOps<Flags>> Flags& operator&=(Flags& lhs, Flags rhs) { - (EnumStorageType<Flags>&) lhs &= (EnumStorageType<Flags>) rhs; + (UnderlyingType<Flags>&) lhs &= (UnderlyingType<Flags>) rhs; return lhs; } template<typename Flags, typename = EnableIfWithBitOps<Flags>> constexpr Flags operator~(Flags lhs) { - return (Flags)(~(EnumStorageType<Flags>)lhs); + return (Flags)(~(UnderlyingType<Flags>)lhs); } } |
