NSUNI/NSLAR Library a250670
Loading...
Searching...
No Matches
Flag Enums

Contains macros for defining flag enums. More...

Macros

#define NNL_FLAG_ENUM
 An attribute for defining flag enums.
#define NNL_DEFINE_ENUM_OPERATORS(ENUMTYPE)
 Macro to define bitwise operators for enum types.

Detailed Description

Contains macros for defining flag enums.

Macro Definition Documentation

◆ NNL_DEFINE_ENUM_OPERATORS

#define NNL_DEFINE_ENUM_OPERATORS ( ENUMTYPE)
Value:
inline ENUMTYPE operator|(ENUMTYPE a, ENUMTYPE b) { \
return static_cast<ENUMTYPE>(static_cast<std::underlying_type_t<ENUMTYPE>>(a) | \
static_cast<std::underlying_type_t<ENUMTYPE>>(b)); \
} \
inline ENUMTYPE& operator|=(ENUMTYPE& a, ENUMTYPE b) { return a = a | b; } \
inline ENUMTYPE operator&(ENUMTYPE a, ENUMTYPE b) { \
return static_cast<ENUMTYPE>(static_cast<std::underlying_type_t<ENUMTYPE>>(a) & \
static_cast<std::underlying_type_t<ENUMTYPE>>(b)); \
} \
inline ENUMTYPE operator&=(ENUMTYPE& a, ENUMTYPE b) { return a = a & b; } \
inline ENUMTYPE operator~(ENUMTYPE a) { \
return static_cast<ENUMTYPE>(~static_cast<std::underlying_type_t<ENUMTYPE>>(a)); \
} \
inline ENUMTYPE operator^(ENUMTYPE a, ENUMTYPE b) { \
return static_cast<ENUMTYPE>(static_cast<std::underlying_type_t<ENUMTYPE>>(a) ^ \
static_cast<std::underlying_type_t<ENUMTYPE>>(b)); \
} \
inline ENUMTYPE operator^=(ENUMTYPE& a, ENUMTYPE b) { return a = a ^ b; }

Macro to define bitwise operators for enum types.

Parameters
ENUMTYPEThe enum type to generate operators for

◆ NNL_FLAG_ENUM

#define NNL_FLAG_ENUM

An attribute for defining flag enums.

Indicates that an enumeration represents a set of bitwise flags, where any combination of values is a valid case.