diff options
Diffstat (limited to 'endless/eosmacros.h')
-rw-r--r-- | endless/eosmacros.h | 21 |
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 */ |