Loading...
Searching...
No Matches
Namespaces | Functions
flags.h File Reference

Scoped enum operators and methods. More...

#include <type_traits>
#include "util/reflection.h"

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.
 

Detailed Description

Scoped enum operators and methods.

The defined operators are:

Guarantees 'constexpr' when is_enum_v<FLAGNAME>