spicetools/util/flags_helper.h

32 lines
633 B
C
Raw Normal View History

2024-08-28 15:10:34 +00:00
#pragma once
#include "external/fmt/include/fmt/format.h"
#define ENUM_VARIANT(value) case (value): return #value
#define FLAGS_START(VAR) \
if ((VAR) == 0) { \
return "0x0"; \
} \
\
bool first = true; \
std::string result
#define FLAG(VAR, value) \
do { \
if ((VAR) & (value)) { \
if (!first) { \
result += " | "; \
} \
first = false; \
result += (#value); \
} \
} while (0)
#define FLAGS_END(VAR) \
if (result.empty()) { \
result = fmt::format("0x{:08x}", (VAR)); \
} \
\
return result