#include <farm_pp/preprocessor/seq/for_each.hpp>
#include <farm_pp/preprocessor/seq/for_each_i.hpp>
#include <farm_pp/preprocessor/seq/pop_front.hpp>
#include <farm_pp/preprocessor/stringize.hpp>
#include <farm_pp/preprocessor/tuple/elem.hpp>
#include <farm_pp/preprocessor/tuple/size.hpp>
#include <farm_pp/preprocessor/tuple/to_seq.hpp>
#include <array>
#include <string>
#include <string_view>
#include <type_traits>
Go to the source code of this file.
|
#define | FARM_ENUMFLAGS_DETAILS_OP_INIT_FLAG(dummy1, dummy2, I, FLAG) , FLAG = (1 << (I + 1)) |
|
#define | FARM_ENUMFLAGS_DETAILS_FLAG_DEFINITIONS(...) |
|
#define | FARM_ENUMFLAG_DETAILS_OP_SET_ENUM_FROM_STRING(dummy1, TYPE, FLAG) |
|
#define | FARM_ENUMFLAG_DETAILS_OP_SINGLE_FLAG_CHECK(dummy1, TYPE, FLAG) |
|
#define | FARM_ENUMFLAG_DETAILS_OP_PUSHBACK_STRING(dummy1, TYPE, FLAG) |
|
#define | FARM_ENUMFLAG_DETAILS_OP_STRING_FOR_FLAG(dummy1, TYPE, FLAG) |
|
#define | FARM_ENUMFLAGS_DETAILS_OP_COMMA_STRING(dummy1, dummy2, STRING) , FARM_PP_STRINGIZE(STRING) |
|
#define | FARM_ENUMFLAGS_DETAILS_COMMA_SEP_STRINGS(...) |
|
#define | FARM_ENUMFLAGS_DETAILS_OP_COMMA_VALUE_STRING(dummy1, dummy2, STRING) ", " FARM_PP_STRINGIZE(STRING) |
|
#define | FARM_ENUMFLAGS_DETAILS_CSV_STRING(...) |
|
#define | FARM_ENUMFLAGS_DETAILS_OP_COMMA_INT(dummy1, TYPE, VAL) , uint64_t(TYPE::VAL) |
|
#define | FARM_ENUMFLAGS_DETAILS_COMMA_SEP_INTS(TYPE, ...) |
|
#define | FARM_ENUMFLAGS_DEF_IMPL(NAME, UINT_TYPE, ...) |
|
◆ FARM_ENUMFLAG_DETAILS_OP_PUSHBACK_STRING
#define FARM_ENUMFLAG_DETAILS_OP_PUSHBACK_STRING |
( |
|
dummy1, |
|
|
|
TYPE, |
|
|
|
FLAG |
|
) |
| |
Value: if (hasMask(value, TYPE::FLAG)) { \
strings.push_back(FARM_PP_STRINGIZE(FLAG)); \
}
◆ FARM_ENUMFLAG_DETAILS_OP_SET_ENUM_FROM_STRING
#define FARM_ENUMFLAG_DETAILS_OP_SET_ENUM_FROM_STRING |
( |
|
dummy1, |
|
|
|
TYPE, |
|
|
|
FLAG |
|
) |
| |
Value: if (
str == FARM_PP_STRINGIZE(FLAG)) { \
value = value | TYPE::FLAG; \
return true; \
}
◆ FARM_ENUMFLAG_DETAILS_OP_SINGLE_FLAG_CHECK
#define FARM_ENUMFLAG_DETAILS_OP_SINGLE_FLAG_CHECK |
( |
|
dummy1, |
|
|
|
TYPE, |
|
|
|
FLAG |
|
) |
| |
Value: case TYPE::FLAG: { \
return true; \
}
◆ FARM_ENUMFLAG_DETAILS_OP_STRING_FOR_FLAG
#define FARM_ENUMFLAG_DETAILS_OP_STRING_FOR_FLAG |
( |
|
dummy1, |
|
|
|
TYPE, |
|
|
|
FLAG |
|
) |
| |
Value: if (hasMask(value, TYPE::FLAG)) { \
prettySet += \
FARM_PP_STRINGIZE(FLAG) " (=" + std::to_string(uint64_t(TYPE::FLAG)) + \
"), "; \
}
◆ FARM_ENUMFLAGS_DEF_IMPL
#define FARM_ENUMFLAGS_DEF_IMPL |
( |
|
NAME, |
|
|
|
UINT_TYPE, |
|
|
|
... |
|
) |
| |
◆ FARM_ENUMFLAGS_DETAILS_COMMA_SEP_INTS
#define FARM_ENUMFLAGS_DETAILS_COMMA_SEP_INTS |
( |
|
TYPE, |
|
|
|
... |
|
) |
| |
Value: uint64_t(TYPE::FARM_PP_TUPLE_ELEM(0, __VA_ARGS__)) FARM_PP_SEQ_FOR_EACH( \
TYPE, \
FARM_PP_SEQ_POP_FRONT(FARM_PP_TUPLE_TO_SEQ(__VA_ARGS__)))
◆ FARM_ENUMFLAGS_DETAILS_COMMA_SEP_STRINGS
#define FARM_ENUMFLAGS_DETAILS_COMMA_SEP_STRINGS |
( |
|
... | ) |
|
Value: FARM_PP_STRINGIZE(FARM_PP_TUPLE_ELEM(0, __VA_ARGS__)) \
FARM_PP_SEQ_FOR_EACH( \
_, \
FARM_PP_SEQ_POP_FRONT(FARM_PP_TUPLE_TO_SEQ(__VA_ARGS__)))
◆ FARM_ENUMFLAGS_DETAILS_CSV_STRING
#define FARM_ENUMFLAGS_DETAILS_CSV_STRING |
( |
|
... | ) |
|
Value: FARM_PP_STRINGIZE(FARM_PP_TUPLE_ELEM(0, __VA_ARGS__)) \
FARM_PP_SEQ_FOR_EACH( \
_, \
FARM_PP_SEQ_POP_FRONT(FARM_PP_TUPLE_TO_SEQ(__VA_ARGS__)))
◆ FARM_ENUMFLAGS_DETAILS_FLAG_DEFINITIONS
#define FARM_ENUMFLAGS_DETAILS_FLAG_DEFINITIONS |
( |
|
... | ) |
|
Value: FARM_PP_TUPLE_ELEM(0, __VA_ARGS__) = 1 FARM_PP_SEQ_FOR_EACH_I( \
_, \
FARM_PP_SEQ_POP_FRONT(FARM_PP_TUPLE_TO_SEQ(__VA_ARGS__)))
◆ FARM_ENUMFLAGS_DETAILS_OP_COMMA_INT
#define FARM_ENUMFLAGS_DETAILS_OP_COMMA_INT |
( |
|
dummy1, |
|
|
|
TYPE, |
|
|
|
VAL |
|
) |
| , uint64_t(TYPE::VAL) |
◆ FARM_ENUMFLAGS_DETAILS_OP_COMMA_STRING
#define FARM_ENUMFLAGS_DETAILS_OP_COMMA_STRING |
( |
|
dummy1, |
|
|
|
dummy2, |
|
|
|
STRING |
|
) |
| , FARM_PP_STRINGIZE(STRING) |
◆ FARM_ENUMFLAGS_DETAILS_OP_COMMA_VALUE_STRING
#define FARM_ENUMFLAGS_DETAILS_OP_COMMA_VALUE_STRING |
( |
|
dummy1, |
|
|
|
dummy2, |
|
|
|
STRING |
|
) |
| ", " FARM_PP_STRINGIZE(STRING) |
◆ FARM_ENUMFLAGS_DETAILS_OP_INIT_FLAG
#define FARM_ENUMFLAGS_DETAILS_OP_INIT_FLAG |
( |
|
dummy1, |
|
|
|
dummy2, |
|
|
|
I, |
|
|
|
FLAG |
|
) |
| , FLAG = (1 << (I + 1)) |