nx_video_source_sdk
1.0
Video Source SDK
|
#include <type_traits>
Go to the source code of this file.
Macros | |
#define | NX_KIT_API |
#define | NX_KIT_ENABLE_FLAGS(ENUM) |
Functions | |
template<typename Enum > | |
constexpr std::underlying_type< Enum >::type | nx::kit::flags_detail::toUnderlyingType (Enum value) |
Facilities to enable bit flags functionality for enums.
Usage example:
#include <nx/kit/flags.h>
#include <nx/kit/debug.h>
enum class Color: unsigned char
{
black = 0,
red = 1 << 0,
green = 1 << 1,
blue = 1 << 2,
yellow = red | green,
magenta = red | blue,
cyan = green | blue,
white = red | green | blue,
};
NX_KIT_ENABLE_FLAGS(Color);
// Class member enumerations are supported.
struct Border
{
// Unscoped enumerations are supported.
enum CrossDirection
{
NoDirection = 0,
InDirection = 1 << 0,
OutDirection = 1 << 1,
EitherDirection = InDirection | OutDirection,
};
};
NX_KIT_ENABLE_FLAGS(Border::CrossDirection);
int main()
{
NX_KIT_ASSERT((Color::magenta | Color::green & ~Color::red) == Color::cyan);
NX_KIT_ASSERT((Border::OutDirection | Border::InDirection) == Border::EitherDirection);
}
This header can be included in any C++ project.
#define NX_KIT_ENABLE_FLAGS | ( | ENUM | ) |
Enable flag operations for a given enum. Must be invoked at namespace scope in the innermost namespace containing enum declaration.