From f419efd50898862a63c9f31a61115c5b6de79fec Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Wed, 4 Sep 2013 14:25:01 +0100 Subject: Add EOS_DEFINE_ENUM_TYPE macro A simple macro that allows you to define a GEnum type. If we start getting a ton of enumeration types, then we should consider adding the various autotooling hooks for generating them through the glib-mkenums script. --- endless/eosmacros.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'endless/eosmacros.h') 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 */ -- cgit v1.2.3