Open Search
    enumflags.h File Reference

    Classes

    struct  EnumInfo
     
    struct  EnumWrapper< ENUMCLASS >
     

    Namespaces

     details
     

    Macros

    #define PRIVATE_MAXON_ENUM_TYPE0(FRIEND, EXTRA, E, id)
     
    #define PRIVATE_MAXON_ENUM_DATATYPE(FRIEND, E, N, id)
     
    #define PRIVATE_MAXON_ENUM_TYPE1(FRIEND, EXTRA, E, id)
     
    #define PRIVATE_MAXON_ENUM_TYPE2(FRIEND, EXTRA, E, id)
     
    #define MAXON_DATATYPE_EARLY_ENUM(E, id)
     
    #define PRIVATE_MAXON_ENUM_TYPE_C(nonempty, FRIEND, EXTRA, E, id)
     
    #define PRIVATE_MAXON_ENUM_TYPE_B(nonempty, FRIEND, EXTRA, E, id)
     
    #define PRIVATE_MAXON_ENUM_TYPE_A(nonempty, FRIEND, EXTRA, E, id)
     
    #define PRIVATE_MAXON_ENUM_TYPE(FRIEND, 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,
      EXTRA,
      E,
      id 
    )

    ◆ PRIVATE_MAXON_ENUM_DATATYPE

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

    ◆ PRIVATE_MAXON_ENUM_TYPE1

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

    ◆ PRIVATE_MAXON_ENUM_TYPE2

    #define PRIVATE_MAXON_ENUM_TYPE2 (   FRIEND,
      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,
      EXTRA,
      E,
      id 
    )

    ◆ PRIVATE_MAXON_ENUM_TYPE_B

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

    ◆ PRIVATE_MAXON_ENUM_TYPE_A

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

    ◆ PRIVATE_MAXON_ENUM_TYPE

    #define PRIVATE_MAXON_ENUM_TYPE (   FRIEND,
      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.