Scoped enum operators and methods. More...
Go to the source code of this file.
Namespaces | |
| namespace | bbm |
Functions | |
| template<typename ENUM > requires concepts::reflection::enumerate<ENUM> | |
| std::ostream & | operator<< (std::ostream &s, ENUM e) |
| ostream output uses toString conversion | |
Core Enum Operations | |
| template<typename FLAGNAME > requires std::is_enum_v<FLAGNAME> | |
| constexpr FLAGNAME | operator| (FLAGNAME a, FLAGNAME b) |
| Concat two flags. | |
| template<typename FLAGNAME > requires std::is_enum_v<FLAGNAME> | |
| constexpr FLAGNAME | operator+ (FLAGNAME a, FLAGNAME b) |
| Conact two flags. | |
| template<typename FLAGNAME > requires std::is_enum_v<FLAGNAME> | |
| constexpr FLAGNAME | operator& (FLAGNAME a, FLAGNAME b) |
| Get the shared flags. | |
| template<typename FLAGNAME > requires std::is_enum_v<FLAGNAME> | |
| constexpr FLAGNAME | operator^ (FLAGNAME a, FLAGNAME b) |
| Get the flags from 'a' that are not in 'b'. | |
| template<typename FLAGNAME > requires std::is_enum_v<FLAGNAME> | |
| constexpr FLAGNAME | operator~ (FLAGNAME a) |
| Set/unset flag that are unset/set respectively. | |
| template<typename FLAGNAME > requires std::is_enum_v<FLAGNAME> | |
| constexpr FLAGNAME & | operator&= (FLAGNAME &a, FLAGNAME b) |
| Update 'a' with a & b. | |
| template<typename FLAGNAME > requires std::is_enum_v<FLAGNAME> | |
| constexpr FLAGNAME & | operator|= (FLAGNAME &a, FLAGNAME b) |
| Update 'a' with a | b. | |
| template<typename FLAGNAME > requires std::is_enum_v<FLAGNAME> | |
| constexpr FLAGNAME & | operator+= (FLAGNAME &a, FLAGNAME b) |
| Update 'a' with a+b. | |
| template<typename FLAGNAME > requires std::is_enum_v<FLAGNAME> | |
| constexpr FLAGNAME & | operator^= (FLAGNAME &a, FLAGNAME b) |
| Update 'a' with a^b,. | |
| template<typename FLAGNAME , typename FLAG > requires std::is_enum_v<FLAG> && std::is_same_v<scalar_t<FLAGNAME>, FLAG> | |
| constexpr auto | is_set (const FLAGNAME &a, const FLAG &flag) |
| Check if all in 'flag' are also set in 'a'; compatible with packet types. | |
Scoped enum operators and methods.
The defined operators are:
Guarantees 'constexpr' when is_enum_v<FLAGNAME>