enumflags.h File Reference

Classes

struct  EnumInfo
 
struct  EnumWrapper< ENUMCLASS >
 

Namespaces

 details
 

Macros

#define PRIVATE_MAXON_ENUM_TYPE0(FRIEND, DECL, EXTRA, E, id)
 
#define PRIVATE_MAXON_ENUM_DATATYPE(FRIEND, DECL, E, N, id)
 
#define PRIVATE_MAXON_ENUM_TYPE1(FRIEND, DECL, EXTRA, E, id)
 
#define PRIVATE_MAXON_ENUM_TYPE2(FRIEND, DECL, EXTRA, E, id)
 
#define MAXON_DATATYPE_EARLY_ENUM(E, id)
 
#define PRIVATE_MAXON_ENUM_TYPE_C(nonempty, FRIEND, DECL, EXTRA, E, id)
 
#define PRIVATE_MAXON_ENUM_TYPE_B(nonempty, FRIEND, DECL, EXTRA, E, id)
 
#define PRIVATE_MAXON_ENUM_TYPE_A(nonempty, FRIEND, DECL, EXTRA, E, id)
 
#define PRIVATE_MAXON_ENUM_TYPE(FRIEND, DECL, EXTRA, E, ...)
 
#define MAXON_ENUM_ORDERED_LIST(E, ...)
 
#define MAXON_ENUM_ORDERED_LIST_CLASS(E, ...)
 
#define PRIVATE_MAXON_ENUM_UNORDERED_LIST(FRIEND, E)
 
#define MAXON_ENUM_LIST(E, ...)
 
#define MAXON_ENUM_LIST_CLASS(E, ...)
 
#define PRIVATE_MAXON_ENUM_FLAGS(FRIEND, E)
 
#define MAXON_ENUM_FLAGS(E, ...)
 
#define MAXON_ENUM_ORDERED_FLAGS(E, ...)
 
#define MAXON_ENUM_FLAGS_CLASS(E, ...)
 
#define MAXON_ENUM_ORDERED_FLAGS_CLASS(E, ...)
 

Typedefs

template<typename T >
using UnderlyingType = typename std::conditional< STD_IS_REPLACEMENT(enum, T), typename std::underlying_type< typename std::conditional< STD_IS_REPLACEMENT(enum, T), T, ENUM_DONT_INITIALIZE >::type >::type, T >::type
 

Functions

const EnumInfoPrivateGetEnumInfo (...)
 
template<typename E >
const EnumInfoGetEnumInfo ()
 
template<typename E >
constexpr E ConditionalFlag (Bool condition, E value)
 
template<typename E >
Bool IsAllSet (E flags, E mask)
 
template<typename T , typename E >
Bool TestFlag (const T flags, const E flag)
 
template<typename T , typename E >
void SetFlag (T &flags, const E flag)
 
template<typename T , typename E >
void DeleteFlag (T &flags, const E flag)
 
template<typename T , typename E >
void ToggleFlag (T &flags, const E flag)
 

Macro Definition Documentation

◆ PRIVATE_MAXON_ENUM_TYPE0

#define PRIVATE_MAXON_ENUM_TYPE0 (   FRIEND,
  DECL,
  EXTRA,
  E,
  id 
)

◆ PRIVATE_MAXON_ENUM_DATATYPE

#define PRIVATE_MAXON_ENUM_DATATYPE (   FRIEND,
  DECL,
  E,
  N,
  id 
)

◆ PRIVATE_MAXON_ENUM_TYPE1

#define PRIVATE_MAXON_ENUM_TYPE1 (   FRIEND,
  DECL,
  EXTRA,
  E,
  id 
)

◆ PRIVATE_MAXON_ENUM_TYPE2

#define PRIVATE_MAXON_ENUM_TYPE2 (   FRIEND,
  DECL,
  EXTRA,
  E,
  id 
)

◆ MAXON_DATATYPE_EARLY_ENUM

#define MAXON_DATATYPE_EARLY_ENUM (   E,
  id 
)

◆ PRIVATE_MAXON_ENUM_TYPE_C

#define PRIVATE_MAXON_ENUM_TYPE_C (   nonempty,
  FRIEND,
  DECL,
  EXTRA,
  E,
  id 
)

◆ PRIVATE_MAXON_ENUM_TYPE_B

#define PRIVATE_MAXON_ENUM_TYPE_B (   nonempty,
  FRIEND,
  DECL,
  EXTRA,
  E,
  id 
)

◆ PRIVATE_MAXON_ENUM_TYPE_A

#define PRIVATE_MAXON_ENUM_TYPE_A (   nonempty,
  FRIEND,
  DECL,
  EXTRA,
  E,
  id 
)

◆ PRIVATE_MAXON_ENUM_TYPE

#define PRIVATE_MAXON_ENUM_TYPE (   FRIEND,
  DECL,
  EXTRA,
  E,
  ... 
)

◆ MAXON_ENUM_ORDERED_LIST

#define MAXON_ENUM_ORDERED_LIST (   E,
  ... 
)

◆ MAXON_ENUM_ORDERED_LIST_CLASS

#define MAXON_ENUM_ORDERED_LIST_CLASS (   E,
  ... 
)

◆ PRIVATE_MAXON_ENUM_UNORDERED_LIST

#define PRIVATE_MAXON_ENUM_UNORDERED_LIST (   FRIEND,
 
)

◆ MAXON_ENUM_LIST

#define MAXON_ENUM_LIST (   E,
  ... 
)

◆ MAXON_ENUM_LIST_CLASS

#define MAXON_ENUM_LIST_CLASS (   E,
  ... 
)

◆ PRIVATE_MAXON_ENUM_FLAGS

#define PRIVATE_MAXON_ENUM_FLAGS (   FRIEND,
 
)

◆ MAXON_ENUM_FLAGS

#define MAXON_ENUM_FLAGS (   E,
  ... 
)

◆ MAXON_ENUM_ORDERED_FLAGS

#define MAXON_ENUM_ORDERED_FLAGS (   E,
  ... 
)

◆ MAXON_ENUM_FLAGS_CLASS

#define MAXON_ENUM_FLAGS_CLASS (   E,
  ... 
)

◆ MAXON_ENUM_ORDERED_FLAGS_CLASS

#define MAXON_ENUM_ORDERED_FLAGS_CLASS (   E,
  ... 
)

Typedef Documentation

◆ UnderlyingType

using UnderlyingType = typename std::conditional<STD_IS_REPLACEMENT(enum, T), typename std::underlying_type<typename std::conditional<STD_IS_REPLACEMENT(enum, T), T, ENUM_DONT_INITIALIZE>::type>::type, T>::type

A type alias for the underlying type of T if T is an enumeration type, or T itself.

Function Documentation

◆ PrivateGetEnumInfo()

const EnumInfo& PrivateGetEnumInfo (   ...)

◆ GetEnumInfo()

const EnumInfo& GetEnumInfo ( )

Returns the EnumInfo for enum type E. For an enum type E you can get the info by calling GetEnumInfo<E>().

Template Parameters
EAn enum type.
Returns
The EnumInfo for E.

◆ ConditionalFlag()

constexpr E ConditionalFlag ( Bool  condition,
value 
)
constexpr

◆ IsAllSet()

Bool IsAllSet ( flags,
mask 
)

◆ TestFlag()

Bool TestFlag ( const T  flags,
const E  flag 
)

Tests if a specific flag is set in a MAXON enum flag set.

Note
Helper for MAXON_ENUM_FLAGS.
Parameters
[in]flagsGiven enum flag set.
[in]flagSpecific flag.

◆ SetFlag()

void SetFlag ( T &  flags,
const E  flag 
)

Sets a specific flag in a MAXON enum flag set.

Note
Helper for MAXON_ENUM_FLAGS.
Parameters
[in]flagsGiven enum flag set.
[in]flagSpecific flag.

◆ DeleteFlag()

void DeleteFlag ( T &  flags,
const E  flag 
)

Deletes a specific flag in a MAXON enum flag set.

Note
Helper for MAXON_ENUM_FLAGS.
Parameters
[in]flagsGiven enum flag set.
[in]flagSpecific flag.

◆ ToggleFlag()

void ToggleFlag ( T &  flags,
const E  flag 
)

Toggles a flag in a MAXON enum flag set

Note
Helper for MAXON_ENUM_FLAGS.
Parameters
[in]flagsGiven enum flag set.
[in]flagSpecific flag.