enum helper methods in cpp file
This commit is contained in:
18
esputils.h
18
esputils.h
@ -5,6 +5,8 @@
|
|||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <string>
|
||||||
|
#include <string_view>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Avoid "unused parameter" warnings
|
Avoid "unused parameter" warnings
|
||||||
@ -43,26 +45,26 @@
|
|||||||
{ \
|
{ \
|
||||||
Values(DECLARE_TYPESAFE_ENUM_HELPER1) \
|
Values(DECLARE_TYPESAFE_ENUM_HELPER1) \
|
||||||
}; \
|
}; \
|
||||||
namespace { \
|
std::string toString(Name value); \
|
||||||
template<typename T> \
|
std::optional<Name> parse##Name(std::string_view str);
|
||||||
T toString(Name value) \
|
|
||||||
|
#define IMPLEMENT_TYPESAFE_ENUM(Name, Derivation, Values) \
|
||||||
|
std::string toString(Name value) \
|
||||||
{ \
|
{ \
|
||||||
switch (value) \
|
switch (value) \
|
||||||
{ \
|
{ \
|
||||||
using TheEnum = Name; \
|
using TheEnum = Name; \
|
||||||
Values(DECLARE_TYPESAFE_ENUM_HELPER2) \
|
Values(DECLARE_TYPESAFE_ENUM_HELPER2) \
|
||||||
} \
|
} \
|
||||||
return T{"Unknown " #Name "("} + int(value) + ')'; \
|
return std::string{"Unknown " #Name "("} + std::to_string(int(value)) + ')'; \
|
||||||
} \
|
} \
|
||||||
template<typename T> \
|
std::optional<Name> parse##Name(std::string_view str) \
|
||||||
std::optional<Name> parse##Name(const T &str) \
|
|
||||||
{ \
|
{ \
|
||||||
using TheEnum = Name; \
|
using TheEnum = Name; \
|
||||||
if (false) {} \
|
if (false) {} \
|
||||||
Values(DECLARE_TYPESAFE_ENUM_HELPER3) \
|
Values(DECLARE_TYPESAFE_ENUM_HELPER3) \
|
||||||
return std::nullopt; \
|
return std::nullopt; \
|
||||||
} \
|
}
|
||||||
} // namespace
|
|
||||||
|
|
||||||
namespace espcpputils {
|
namespace espcpputils {
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user