Go to the documentation of this file.
31 #define FARM_ENUM_IOSTREAM_OVERLOAD(EnumName) \
32 namespace enum_wrapper_ { \
33 inline auto operator<<(std::ostream &os, EnumName##Impl value) \
35 os << toPretty(value); \
38 inline auto operator>>(std::istream &is, EnumName##Impl &value) \
42 if (!trySetFromString(value, str)) { \
43 throw std::runtime_error(std::string("Bad Value: ") + str); \
47 } // namespace enum_wrapper_
51 #define FARM_ENUM(EnumName, ...) \
52 FARM_ENUM_WITHOUT_IOSTREAM(EnumName, __VA_ARGS__); \
53 FARM_ENUM_IOSTREAM_OVERLOAD(EnumName)
56 #define FARM_ENUM_DEF(EnumName, ...) \
57 FARM_ENUM_WITHOUT_IOSTREAM_DEF(EnumName, __VA_ARGS__); \
58 FARM_ENUM_IOSTREAM_OVERLOAD(EnumName)