summaryrefslogtreecommitdiff
path: root/endless/eosmacros.h
diff options
context:
space:
mode:
Diffstat (limited to 'endless/eosmacros.h')
-rw-r--r--endless/eosmacros.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/endless/eosmacros.h b/endless/eosmacros.h
index 7d85c15..1dfa786 100644
--- a/endless/eosmacros.h
+++ b/endless/eosmacros.h
@@ -9,4 +9,25 @@
/* Shared preprocessor macros */
+#define EOS_ENUM_VALUE(value, nick) { value, #value, #nick },
+
+#define EOS_DEFINE_ENUM_TYPE(EnumType, enum_type, values) \
+GType \
+enum_type##_get_type (void) \
+{ \
+ static volatile gsize g_define_type_id__volatile = 0; \
+ if (g_once_init_enter (&g_define_type_id__volatile)) \
+ { \
+ static const GEnumValue v[] = { \
+ values \
+ { 0, NULL, NULL }, \
+ }; \
+ GType g_define_type_id = \
+ g_enum_register_static (g_intern_static_string (#EnumType), v); \
+\
+ g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \
+ } \
+ return g_define_type_id__volatile; \
+}
+
#endif /* EOS_MACROS_H */