index 85b639bea72a0649869e27383bb056bb16b26936..ef298c736a1aea2a922e7f92c91499ad2a653826 100644 (file)
--- a/tig.h
+++ b/tig.h
#define ENUM_MAP(name, value) { name, STRING_SIZE(name), value }
+#define ENUM_SYM_MACRO(prefix, name) prefix##_##name
+#define ENUM_MAP_MACRO(prefix, name) ENUM_MAP(#name, ENUM_SYM_MACRO(prefix, name))
+
+#define DEFINE_ENUM(name, info) \
+ enum name { info(ENUM_SYM_MACRO) }; \
+ static const struct enum_map name##_map[] = { info(ENUM_MAP_MACRO) }
+
static inline int
string_enum_compare(const char *str1, const char *str2, int len)
{