Make ENUM_STRING function static

`ENUM_STRING` can be used inside a `class`/`struct`/`union` for `enum`s contained within them. Making the function `static` allows doing this and doesn't require supplying a `this` pointer of the enclosing class for usage.
This commit is contained in:
PixelyIon 2021-11-16 19:24:56 +05:30
parent c2a6da6431
commit 4b9f99bb27

View File

@ -14,14 +14,14 @@
* @brief Creates a function to convert an enumerant to its string representation at runtime * @brief Creates a function to convert an enumerant to its string representation at runtime
* @example ENUM_STRING(Example, { ENUM_CASE(A); ENUM_CASE(B); }) * @example ENUM_STRING(Example, { ENUM_CASE(A); ENUM_CASE(B); })
*/ */
#define ENUM_STRING(name, cases) \ #define ENUM_STRING(name, cases) \
constexpr const char *ToString(name value) { \ constexpr static const char *ToString(name value) { \
using ENUM_TYPE = name; \ using ENUM_TYPE = name; \
switch (value) { \ switch (value) { \
cases \ cases \
default: \ default: \
return "Unknown"; \ return "Unknown"; \
} \ } \
} }
/** /**
@ -29,7 +29,7 @@
*/ */
#define ENUM_CASE_PAIR(key, value) \ #define ENUM_CASE_PAIR(key, value) \
case ENUM_TYPE::key: \ case ENUM_TYPE::key: \
return value return value
/** /**
* @brief Creates a switch case statement to convert an enumerant to the given values * @brief Creates a switch case statement to convert an enumerant to the given values