farm-ng-core
enum.h File Reference
#include "farm_ng/core/enum/enum_without_iostream.h"
#include <istream>
#include <ostream>
Include dependency graph for enum.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define FARM_ENUM_IOSTREAM_OVERLOAD(EnumName)
 
#define FARM_ENUM(EnumName, ...)
 
#define FARM_ENUM_DEF(EnumName, ...)
 

Macro Definition Documentation

◆ FARM_ENUM

#define FARM_ENUM (   EnumName,
  ... 
)
Value:
FARM_ENUM_WITHOUT_IOSTREAM(EnumName, __VA_ARGS__); \
FARM_ENUM_IOSTREAM_OVERLOAD(EnumName)

◆ FARM_ENUM_DEF

#define FARM_ENUM_DEF (   EnumName,
  ... 
)
Value:
FARM_ENUM_WITHOUT_IOSTREAM_DEF(EnumName, __VA_ARGS__); \
FARM_ENUM_IOSTREAM_OVERLOAD(EnumName)

◆ FARM_ENUM_IOSTREAM_OVERLOAD

#define FARM_ENUM_IOSTREAM_OVERLOAD (   EnumName)
Value:
namespace enum_wrapper_ { \
inline auto operator<<(std::ostream &os, EnumName##Impl value) \
-> std::ostream & { \
os << toPretty(value); \
return os; \
} \
inline auto operator>>(std::istream &is, EnumName##Impl &value) \
-> std::istream & { \
std::string str; \
is >> str; \
if (!trySetFromString(value, str)) { \
throw std::runtime_error(std::string("Bad Value: ") + str); \
} \
return is; \
} \
}
core.event_service.str
str
Definition: event_service.py:547
farm_ng::operator<<
auto operator<<(std::ostream &os, Error const &error) -> std::ostream &
Definition: expected.cpp:19
FARM_ENUM_WITHOUT_IOSTREAM_DEF
FARM_ENUM_WITHOUT_IOSTREAM_DEF(Autos, int,(van, truck,(sedan, 4)))
FARM_ENUM_WITHOUT_IOSTREAM
FARM_ENUM_WITHOUT_IOSTREAM(Fruits, uint8_t,((apple, 1),(banana, 3), pear))