16#include "pw_preprocessor/apply.h"
17#include "pw_tokenizer/internal/enum.h"
18#include "pw_tokenizer/tokenize.h"
20namespace pw::tokenizer {
30 static_assert(std::is_enum_v<T>,
"Must be an enum");
31 static_assert(
sizeof(T) <=
sizeof(Token),
"Must fit in a token");
32 return static_cast<Token
>(value);
42 return PwTokenizerEnumToString(value);
56#define PW_TOKENIZE_ENUM(fully_qualified_name, ...) \
57 PW_APPLY(_PW_TOKENIZE_ENUMERATOR, \
59 fully_qualified_name, \
61 [[maybe_unused]] constexpr const char* PwTokenizerEnumToString( \
62 fully_qualified_name _pw_enum_value) { \
63 switch (_pw_enum_value) { \
64 PW_APPLY(_PW_TOKENIZE_TO_STRING_CASE, \
66 fully_qualified_name, \
69 return "Unknown " #fully_qualified_name " value"; \
80#define PW_TOKENIZE_ENUM_CUSTOM(fully_qualified_name, ...) \
81 PW_APPLY(_PW_TOKENIZE_ENUMERATOR_CUSTOM, \
83 fully_qualified_name, \
85 [[maybe_unused]] constexpr const char* PwTokenizerEnumToString( \
86 fully_qualified_name _pw_enum_value) { \
87 switch (_pw_enum_value) { \
88 PW_APPLY(_PW_TOKENIZE_TO_STRING_CASE_CUSTOM, \
90 fully_qualified_name, \
93 return "Unknown " #fully_qualified_name " value"; \
constexpr const char * EnumToString(T value)
Returns a string representation of a given enumerator value name. Used in the case of a non-tokenizin...
Definition: enum.h:41
constexpr auto EnumToToken(T value)
Tokenizes a given enumerator value. Used in the vase of a tokenizing log backend.
Definition: enum.h:29