enumflags.h File Reference

Classes

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)
 
#define MAXON_DATATYPE_EARLY_ENUM_CLASS(E, CLS)
 
#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_enum< T >::value, typename std::underlying_type< typename std::conditional< std::is_enum< T >::value, T, ENUM_DONT_INITIALIZE >::type >::type, T >::type
 

Functions

template<typename E >
constexpr E ConditionalFlag (Bool condition, E value)
 

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)

◆ MAXON_DATATYPE_EARLY_ENUM_CLASS

#define MAXON_DATATYPE_EARLY_ENUM_CLASS (   E,
  CLS 
)

◆ 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_enum<T>::value, typename std::underlying_type<typename std::conditional<std::is_enum<T>::value, 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

◆ ConditionalFlag()

constexpr E ConditionalFlag ( Bool  condition,
value 
)