farm-ng-core
enum_details.h File Reference
#include <farm_pp/preprocessor/comparison/equal.hpp>
#include <farm_pp/preprocessor/control/if.hpp>
#include <farm_pp/preprocessor/punctuation/remove_parens.hpp>
#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 dependency graph for enum_details.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define FARM_ENUM_DETAILS_OP_MAKE_TUPLE(dummy1, dummy2, ENUM)   ((FARM_PP_REMOVE_PARENS(ENUM)))
 
#define FARM_ENUM_DETAILS_TO_SEQ_OF_TUPLES(...)
 
#define FARM_ENUM_DETAILS_GET_INT_TYPE(...)
 
#define FARM_ENUM_DETAILS_GET_VARS(...)
 
#define FARM_ENUM_DETAILS_OP_VALUE_WITH_INIT(PAIR)
 
#define FARM_ENUM_DETAILS_ENUM_NS_OP(NAME, PAIR)   NAME##Impl::FARM_PP_TUPLE_ELEM(0, PAIR)
 
#define FARM_ENUM_DETAILS_OP_COMMA_VALUE(dummy1, dummy2, PAIR)   , FARM_ENUM_DETAILS_OP_VALUE_WITH_INIT(PAIR)
 
#define FARM_ENUM_DETAILS_NS_OP_COMMA(dummy1, NAME, PAIR)   , FARM_ENUM_DETAILS_ENUM_NS_OP(NAME, PAIR)
 
#define FARM_ENUM_DETAILS_CSV(...)
 
#define FARM_ENUM_NS_ENUM_CSV(NAME, ...)
 
#define FARM_ENUM_DETAILS_OP_TO_STRING_CASE(dummy1, TYPE, PAIR)
 
#define FARM_ENUM_DETAILS_OP_TO_PRETTY_CASE(dummy, types, PAIR)
 
#define FARM_ENUM_DETAILS_OP_SET_VALUE_CASES(dummy1, TYPE, PAIR)
 
#define FARM_ENUM_DETAILS_OP_COMMA_STRING(dummy1, dummy2, PAIR)   , FARM_PP_STRINGIZE(FARM_PP_TUPLE_ELEM(0, PAIR))
 
#define FARM_ENUM_DETAILS_COMMA_SEP_STRINGS(...)
 
#define FARM_ENUM_DETAILS_OP_COMMA_VALUE_STRING(dummy1, dummy2, PAIR)   ", " FARM_PP_STRINGIZE(FARM_PP_TUPLE_ELEM(0, PAIR))
 
#define FARM_ENUM_DETAILS_OP_POSITION_ICASE(dummy, TYPE, I, PAIR)
 
#define FARM_ENUM_DETAILS_CSV_STRING(...)
 
#define FARM_ENUM_DETAILS_OP_INTS(dummy, TYPES, PAIR)
 
#define FARM_ENUM_DETAILS_COMMA_SEP_INTS(TYPE, INT_TYPE, ...)
 
#define FARM_ENUM_DEF_IMPL(NAME, ...)
 

Macro Definition Documentation

◆ FARM_ENUM_DEF_IMPL

#define FARM_ENUM_DEF_IMPL (   NAME,
  ... 
)

◆ FARM_ENUM_DETAILS_COMMA_SEP_INTS

#define FARM_ENUM_DETAILS_COMMA_SEP_INTS (   TYPE,
  INT_TYPE,
  ... 
)
Value:
INT_TYPE(TYPE::FARM_PP_TUPLE_ELEM( \
0, \
FARM_PP_SEQ_ELEM(0, FARM_ENUM_DETAILS_TO_SEQ_OF_TUPLES(__VA_ARGS__)))) \
FARM_PP_SEQ_FOR_EACH( \
(TYPE, INT_TYPE), \
FARM_PP_SEQ_POP_FRONT(FARM_ENUM_DETAILS_TO_SEQ_OF_TUPLES(__VA_ARGS__)))

◆ FARM_ENUM_DETAILS_COMMA_SEP_STRINGS

#define FARM_ENUM_DETAILS_COMMA_SEP_STRINGS (   ...)
Value:
FARM_PP_STRINGIZE(FARM_PP_TUPLE_ELEM( \
0, \
FARM_PP_SEQ_ELEM(0, FARM_ENUM_DETAILS_TO_SEQ_OF_TUPLES(__VA_ARGS__)))) \
FARM_PP_SEQ_FOR_EACH( \
_, \
FARM_PP_SEQ_POP_FRONT(FARM_ENUM_DETAILS_TO_SEQ_OF_TUPLES(__VA_ARGS__)))

◆ FARM_ENUM_DETAILS_CSV

#define FARM_ENUM_DETAILS_CSV (   ...)
Value:
FARM_PP_SEQ_ELEM(0, FARM_ENUM_DETAILS_TO_SEQ_OF_TUPLES(__VA_ARGS__))) \
FARM_PP_SEQ_FOR_EACH( \
_, \
FARM_PP_SEQ_POP_FRONT(FARM_ENUM_DETAILS_TO_SEQ_OF_TUPLES(__VA_ARGS__)))

◆ FARM_ENUM_DETAILS_CSV_STRING

#define FARM_ENUM_DETAILS_CSV_STRING (   ...)
Value:
FARM_PP_STRINGIZE(FARM_PP_TUPLE_ELEM( \
0, \
FARM_PP_SEQ_ELEM(0, FARM_ENUM_DETAILS_TO_SEQ_OF_TUPLES(__VA_ARGS__)))) \
FARM_PP_SEQ_FOR_EACH( \
_, \
FARM_PP_SEQ_POP_FRONT(FARM_ENUM_DETAILS_TO_SEQ_OF_TUPLES(__VA_ARGS__)))

◆ FARM_ENUM_DETAILS_ENUM_NS_OP

#define FARM_ENUM_DETAILS_ENUM_NS_OP (   NAME,
  PAIR 
)    NAME##Impl::FARM_PP_TUPLE_ELEM(0, PAIR)

◆ FARM_ENUM_DETAILS_GET_INT_TYPE

#define FARM_ENUM_DETAILS_GET_INT_TYPE (   ...)
Value:
FARM_PP_IF( \
FARM_PP_EQUAL(FARM_PP_TUPLE_SIZE((__VA_ARGS__)), 2), \
FARM_PP_TUPLE_ELEM(0, (__VA_ARGS__)), \
int)

◆ FARM_ENUM_DETAILS_GET_VARS

#define FARM_ENUM_DETAILS_GET_VARS (   ...)
Value:
FARM_PP_REMOVE_PARENS(FARM_PP_IF( \
FARM_PP_EQUAL(FARM_PP_TUPLE_SIZE((__VA_ARGS__)), 2), \
(FARM_PP_TUPLE_ELEM(1, (__VA_ARGS__))), \
(__VA_ARGS__)))

◆ FARM_ENUM_DETAILS_NS_OP_COMMA

#define FARM_ENUM_DETAILS_NS_OP_COMMA (   dummy1,
  NAME,
  PAIR 
)    , FARM_ENUM_DETAILS_ENUM_NS_OP(NAME, PAIR)

◆ FARM_ENUM_DETAILS_OP_COMMA_STRING

#define FARM_ENUM_DETAILS_OP_COMMA_STRING (   dummy1,
  dummy2,
  PAIR 
)    , FARM_PP_STRINGIZE(FARM_PP_TUPLE_ELEM(0, PAIR))

◆ FARM_ENUM_DETAILS_OP_COMMA_VALUE

#define FARM_ENUM_DETAILS_OP_COMMA_VALUE (   dummy1,
  dummy2,
  PAIR 
)    , FARM_ENUM_DETAILS_OP_VALUE_WITH_INIT(PAIR)

◆ FARM_ENUM_DETAILS_OP_COMMA_VALUE_STRING

#define FARM_ENUM_DETAILS_OP_COMMA_VALUE_STRING (   dummy1,
  dummy2,
  PAIR 
)    ", " FARM_PP_STRINGIZE(FARM_PP_TUPLE_ELEM(0, PAIR))

◆ FARM_ENUM_DETAILS_OP_INTS

#define FARM_ENUM_DETAILS_OP_INTS (   dummy,
  TYPES,
  PAIR 
)
Value:
, FARM_PP_TUPLE_ELEM( \
1, TYPES)(FARM_PP_TUPLE_ELEM(0, TYPES)::FARM_PP_TUPLE_ELEM(0, PAIR))

◆ FARM_ENUM_DETAILS_OP_MAKE_TUPLE

#define FARM_ENUM_DETAILS_OP_MAKE_TUPLE (   dummy1,
  dummy2,
  ENUM 
)    ((FARM_PP_REMOVE_PARENS(ENUM)))

◆ FARM_ENUM_DETAILS_OP_POSITION_ICASE

#define FARM_ENUM_DETAILS_OP_POSITION_ICASE (   dummy,
  TYPE,
  I,
  PAIR 
)
Value:
case TYPE::FARM_PP_TUPLE_ELEM(0, PAIR): { \
return I; \
}

◆ FARM_ENUM_DETAILS_OP_SET_VALUE_CASES

#define FARM_ENUM_DETAILS_OP_SET_VALUE_CASES (   dummy1,
  TYPE,
  PAIR 
)
Value:
if (str == FARM_PP_STRINGIZE(FARM_PP_TUPLE_ELEM(0, PAIR))) { \
value = TYPE::FARM_PP_TUPLE_ELEM(0, PAIR); \
return true; \
}

◆ FARM_ENUM_DETAILS_OP_TO_PRETTY_CASE

#define FARM_ENUM_DETAILS_OP_TO_PRETTY_CASE (   dummy,
  types,
  PAIR 
)
Value:
case FARM_PP_TUPLE_ELEM(0, types)::FARM_PP_TUPLE_ELEM(0, PAIR): { \
return FARM_PP_STRINGIZE(FARM_PP_TUPLE_ELEM(0, PAIR)) + \
std::string(" (=") + \
std::to_string(FARM_PP_TUPLE_ELEM(1, types)(value)) + \
std::string(")"); \
}

◆ FARM_ENUM_DETAILS_OP_TO_STRING_CASE

#define FARM_ENUM_DETAILS_OP_TO_STRING_CASE (   dummy1,
  TYPE,
  PAIR 
)
Value:
case TYPE::FARM_PP_TUPLE_ELEM(0, PAIR): { \
return FARM_PP_STRINGIZE(FARM_PP_TUPLE_ELEM(0, PAIR)); \
}

◆ FARM_ENUM_DETAILS_OP_VALUE_WITH_INIT

#define FARM_ENUM_DETAILS_OP_VALUE_WITH_INIT (   PAIR)
Value:
FARM_PP_IF( \
FARM_PP_EQUAL(FARM_PP_TUPLE_SIZE(PAIR), 1), \
FARM_PP_TUPLE_ELEM(0, PAIR), \
FARM_PP_TUPLE_ELEM(0, PAIR) = FARM_PP_TUPLE_ELEM(1, PAIR))

◆ FARM_ENUM_DETAILS_TO_SEQ_OF_TUPLES

#define FARM_ENUM_DETAILS_TO_SEQ_OF_TUPLES (   ...)
Value:
FARM_PP_SEQ_FOR_EACH( \
FARM_ENUM_DETAILS_OP_MAKE_TUPLE, _, FARM_PP_TUPLE_TO_SEQ(__VA_ARGS__))

◆ FARM_ENUM_NS_ENUM_CSV

#define FARM_ENUM_NS_ENUM_CSV (   NAME,
  ... 
)
Value:
NAME, \
FARM_PP_SEQ_ELEM(0, FARM_ENUM_DETAILS_TO_SEQ_OF_TUPLES(__VA_ARGS__))) \
FARM_PP_SEQ_FOR_EACH( \
NAME, \
FARM_PP_SEQ_POP_FRONT(FARM_ENUM_DETAILS_TO_SEQ_OF_TUPLES(__VA_ARGS__)))
FARM_ENUM_DETAILS_ENUM_NS_OP
#define FARM_ENUM_DETAILS_ENUM_NS_OP(NAME, PAIR)
Definition: enum_details.h:80
core.event_service.str
str
Definition: event_service.py:547
FARM_ENUM_DETAILS_OP_MAKE_TUPLE
#define FARM_ENUM_DETAILS_OP_MAKE_TUPLE(dummy1, dummy2, ENUM)
Definition: enum_details.h:39
FARM_ENUM_DETAILS_OP_INTS
#define FARM_ENUM_DETAILS_OP_INTS(dummy, TYPES, PAIR)
Definition: enum_details.h:184
FARM_ENUM_DETAILS_OP_COMMA_STRING
#define FARM_ENUM_DETAILS_OP_COMMA_STRING(dummy1, dummy2, PAIR)
Definition: enum_details.h:148
FARM_ENUM_DETAILS_OP_COMMA_VALUE
#define FARM_ENUM_DETAILS_OP_COMMA_VALUE(dummy1, dummy2, PAIR)
Definition: enum_details.h:85
FARM_ENUM_DETAILS_OP_COMMA_VALUE_STRING
#define FARM_ENUM_DETAILS_OP_COMMA_VALUE_STRING(dummy1, dummy2, PAIR)
Definition: enum_details.h:163
FARM_ENUM_DETAILS_TO_SEQ_OF_TUPLES
#define FARM_ENUM_DETAILS_TO_SEQ_OF_TUPLES(...)
Definition: enum_details.h:44
FARM_ENUM_DETAILS_NS_OP_COMMA
#define FARM_ENUM_DETAILS_NS_OP_COMMA(dummy1, NAME, PAIR)
Definition: enum_details.h:90
FARM_ENUM_DETAILS_OP_VALUE_WITH_INIT
#define FARM_ENUM_DETAILS_OP_VALUE_WITH_INIT(PAIR)
Definition: enum_details.h:72