Enables the usage of strongly typed enumerators as flags. More...

Collaboration diagram for Flag:

Classes

struct  boca::Flag< Enum >
 Mark a strongly typed enumerator as a flag. More...
 

Typedefs

template<typename Enum , typename Type >
using boca::FlagReturn = typename std::enable_if< Flag< Enum >::enable, Type >
 

Functions

template<typename Enum >
FlagReturn< Enum, typename std::underlying_type< Enum >::type >::type boca::Underlying (Enum enum_1)
 
template<typename Enum >
FlagReturn< Enum, Enum >::type boca::operator& (Enum enum_1, Enum enum_2)
 
template<typename Enum >
constexpr FlagReturn< Enum, Enum >::type boca::operator| (Enum enum_1, Enum enum_2)
 
template<typename Enum >
FlagReturn< Enum, Enum >::type boca::operator^ (Enum enum_1, Enum enum_2)
 
template<typename Enum >
FlagReturn< Enum, Enum >::type boca::operator~ (Enum enum_1)
 
template<typename Enum >
FlagReturn< Enum, Enum & >::type boca::operator&= (Enum &enum_1, Enum enum_2)
 
template<typename Enum >
FlagReturn< Enum, Enum & >::type boca::operator|= (Enum &enum_1, Enum enum_2)
 
template<typename Enum >
FlagReturn< Enum, Enum & >::type boca::operator^= (Enum &enum_1, Enum enum_2)
 
template<typename Enum >
FlagReturn< Enum, Enum & >::type boca::operator<<= (Enum &enum_1, Enum enum_2)
 
template<typename Enum >
FlagReturn< Enum, bool >::type boca::to_bool (Enum value)
 
template<typename Enum >
FlagReturn< Enum, bool >::type boca::is (Enum enum_1, Enum enum_2)
 
template<typename Enum , typename Function >
void boca::FlagSwitch (Enum enum_1, Function function)
 

Detailed Description

Enables the usage of strongly typed enumerators as flags.

Typedef Documentation

template<typename Enum , typename Type >
using boca::FlagReturn = typedef typename std::enable_if<Flag<Enum>::enable, Type>

Function Documentation

template<typename Enum , typename Function >
void boca::FlagSwitch ( Enum  enum_1,
Function  function 
)
template<typename Enum >
FlagReturn<Enum, bool>::type boca::is ( Enum  enum_1,
Enum  enum_2 
)
template<typename Enum >
FlagReturn<Enum, Enum>::type boca::operator& ( Enum  enum_1,
Enum  enum_2 
)
template<typename Enum >
FlagReturn<Enum, Enum&>::type boca::operator&= ( Enum &  enum_1,
Enum  enum_2 
)
template<typename Enum >
FlagReturn<Enum, Enum&>::type boca::operator<<= ( Enum &  enum_1,
Enum  enum_2 
)
template<typename Enum >
FlagReturn<Enum, Enum>::type boca::operator^ ( Enum  enum_1,
Enum  enum_2 
)
template<typename Enum >
FlagReturn<Enum, Enum&>::type boca::operator^= ( Enum &  enum_1,
Enum  enum_2 
)
template<typename Enum >
constexpr FlagReturn<Enum, Enum>::type boca::operator| ( Enum  enum_1,
Enum  enum_2 
)
template<typename Enum >
FlagReturn<Enum, Enum&>::type boca::operator|= ( Enum &  enum_1,
Enum  enum_2 
)
template<typename Enum >
FlagReturn<Enum, Enum>::type boca::operator~ ( Enum  enum_1)
template<typename Enum >
FlagReturn<Enum, bool>::type boca::to_bool ( Enum  value)
template<typename Enum >
FlagReturn<Enum, typename std::underlying_type<Enum>::type>::type boca::Underlying ( Enum  enum_1)