farm-ng-core
enum_flag_details.h File Reference
#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>
Include dependency graph for enum_flag_details.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#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, ...)
 

Macro Definition Documentation

◆ 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))
FARM_ENUMFLAGS_DETAILS_OP_INIT_FLAG
#define FARM_ENUMFLAGS_DETAILS_OP_INIT_FLAG(dummy1, dummy2, I, FLAG)
Definition: enum_flag_details.h:36
core.event_service.str
str
Definition: event_service.py:547
FARM_ENUMFLAGS_DETAILS_OP_COMMA_INT
#define FARM_ENUMFLAGS_DETAILS_OP_COMMA_INT(dummy1, TYPE, VAL)
Definition: enum_flag_details.h:127
FARM_ENUMFLAGS_DETAILS_OP_COMMA_STRING
#define FARM_ENUMFLAGS_DETAILS_OP_COMMA_STRING(dummy1, dummy2, STRING)
Definition: enum_flag_details.h:101
FARM_ENUMFLAGS_DETAILS_OP_COMMA_VALUE_STRING
#define FARM_ENUMFLAGS_DETAILS_OP_COMMA_VALUE_STRING(dummy1, dummy2, STRING)
Definition: enum_flag_details.h:114