From 655c65de9db544bbd548c4beb93ce71db2b736e4 Mon Sep 17 00:00:00 2001 From: Gergely Polonkai Date: Tue, 9 Sep 2014 21:42:46 +0200 Subject: [PATCH] Add enum <=> nick conversion functions They are for planets, aspects and antiscia --- src/astrognome.c | 96 ++++++++++++++++++++++++++++++++++++++++++++++++ src/astrognome.h | 10 +++++ 2 files changed, 106 insertions(+) diff --git a/src/astrognome.c b/src/astrognome.c index bd2fe06..6d2afb1 100644 --- a/src/astrognome.c +++ b/src/astrognome.c @@ -188,6 +188,102 @@ ag_house_system_nick_to_id(const gchar *nick) return GSWE_HOUSE_SYSTEM_NONE; } +const gchar * +ag_planet_id_to_nick(GswePlanet planet) +{ + GEnumClass *planet_class; + GEnumValue *enum_value; + + planet_class = g_type_class_ref(GSWE_TYPE_PLANET); + enum_value = g_enum_get_value(planet_class, planet); + + if (enum_value) { + return enum_value->value_nick; + } + + return NULL; +} + +GswePlanet +ag_planet_nick_to_id(const gchar *nick) +{ + GEnumClass *planet_class; + GEnumValue *enum_value; + + planet_class = g_type_class_ref(GSWE_TYPE_PLANET); + enum_value = g_enum_get_value_by_nick(planet_class, nick); + + if (enum_value) { + return enum_value->value; + } + + return GSWE_PLANET_NONE; +} + +const gchar * +ag_aspect_id_to_nick(GsweAspect aspect) +{ + GEnumClass *aspect_class; + GEnumValue *enum_value; + + aspect_class = g_type_class_ref(GSWE_TYPE_ASPECT); + enum_value = g_enum_get_value(aspect_class, aspect); + + if (enum_value) { + return enum_value->value_nick; + } + + return NULL; +} + +GsweAspect +ag_aspect_nick_to_id(const gchar *nick) +{ + GEnumClass *aspect_class; + GEnumValue *enum_value; + + aspect_class = g_type_class_ref(GSWE_TYPE_ASPECT); + enum_value = g_enum_get_value_by_nick(aspect_class, nick); + + if (enum_value) { + return enum_value->value; + } + + return GSWE_ASPECT_NONE; +} + +const gchar * +ag_antiscion_axis_id_to_nick(GsweAntiscionAxis antiscion_axis) +{ + GEnumClass *antiscion_axis_class; + GEnumValue *enum_value; + + antiscion_axis_class = g_type_class_ref(GSWE_TYPE_ANTISCION_AXIS); + enum_value = g_enum_get_value(antiscion_axis_class, antiscion_axis); + + if (enum_value) { + return enum_value->value_nick; + } + + return NULL; +} + +GsweAntiscionAxis +ag_antiscion_axis_nick_to_id(const gchar *nick) +{ + GEnumClass *antiscion_axis_class; + GEnumValue *enum_value; + + antiscion_axis_class = g_type_class_ref(GSWE_TYPE_ANTISCION_AXIS); + enum_value = g_enum_get_value_by_nick(antiscion_axis_class, nick); + + if (enum_value) { + return enum_value->value; + } + + return GSWE_ANTISCION_AXIS_NONE; +} + /** * ag_get_user_data_dir: * diff --git a/src/astrognome.h b/src/astrognome.h index efcc1c4..fe2d791 100644 --- a/src/astrognome.h +++ b/src/astrognome.h @@ -35,6 +35,16 @@ enum { const gchar *ag_house_system_id_to_nick(GsweHouseSystem house_system); GsweHouseSystem ag_house_system_nick_to_id(const gchar *nick); + +const gchar *ag_planet_id_to_nick(GswePlanet planet); +GswePlanet ag_planet_nick_to_id(const gchar *nick); + +const gchar *ag_aspect_id_to_nick(GsweAspect aspect); +GsweAspect ag_aspect_nick_to_id(const gchar *nick); + +const gchar *ag_antiscion_axis_id_to_nick(GsweAntiscionAxis antiscion_axis); +GsweAntiscionAxis ag_antiscion_axis_nick_to_id(const gchar *nick); + GFile *ag_get_user_data_dir(void); #ifndef GDOUBLE_FROM_LE