From a92fdca8b296b9cc6c337dad2cfdf5ae4ff6eb7a Mon Sep 17 00:00:00 2001 From: "Gergely POLONKAI (W00d5t0ck)" Date: Mon, 16 Sep 2013 14:20:49 +0200 Subject: [PATCH] Created functions gswe_moment_get_sign_planets() and gswe_moment_get_house_planets() --- src/gswe-moment.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++ src/gswe-moment.h | 11 +++++++++ 2 files changed, 69 insertions(+) diff --git a/src/gswe-moment.c b/src/gswe-moment.c index 1e78cc7..1d436e6 100644 --- a/src/gswe-moment.c +++ b/src/gswe-moment.c @@ -718,6 +718,64 @@ gswe_moment_get_all_planets(GsweMoment *moment) return moment->priv->planet_list; } +/** + * gswe_moment_get_sign_planets: + * @moment: a GsweMoment + * @sign: the sign of whose planets are requested + * + * Gets the list of planets in @sign. + * + * Returns: (transfer container) (element-type GswePlanetData): a #GList of + * #GswePlanetData. + */ +GList * +gswe_moment_get_sign_planets(GsweMoment *moment, GsweZodiac sign) +{ + GList *ret = NULL, + *planet; + + gswe_moment_calculate_all_planets(moment); + + for (planet = moment->priv->planet_list; planet; planet = g_list_next(planet)) { + GswePlanetData *pd = planet->data; + + if (pd->sign->sign_id == sign) { + ret = g_list_prepend(ret, pd); + } + } + + return ret; +} + +/** + * gswe_moment_get_house_planets: + * @moment: a GsweMoment + * @house: a house number + * + * Gets the list of planets in house @house. + * + * Returns: (transfer container) (element-type GswePlanetData): a #GList of + * #GswePlanetData + */ +GList * +gswe_moment_get_house_planets(GsweMoment *moment, guint house) +{ + GList *ret = NULL, + *planet; + + gswe_moment_calculate_all_planets(moment); + + for (planet = moment->priv->planet_list; planet; planet = g_list_next(planet)) { + GswePlanetData *pd = planet->data; + + if (pd->house == house) { + ret = g_list_prepend(ret, pd); + } + } + + return ret; +} + /** * gswe_moment_get_house: * @moment: a GsweMoment object diff --git a/src/gswe-moment.h b/src/gswe-moment.h index e15db9b..8910045 100644 --- a/src/gswe-moment.h +++ b/src/gswe-moment.h @@ -125,24 +125,35 @@ GType gswe_moment_get_type(void); /* Method definitions */ GsweMoment *gswe_moment_new(void); GsweMoment *gswe_moment_new_full(GsweTimestamp *timestamp, gdouble longitude, gdouble latitude, gdouble altitude, GsweHouseSystem house_system); + void gswe_moment_set_timestamp(GsweMoment *moment, GsweTimestamp *timestamp); GsweTimestamp *gswe_moment_get_timestamp(GsweMoment *moment); + void gswe_moment_set_coordinates(GsweMoment *moment, gdouble longitude, gdouble latitude, gdouble altitude); GsweCoordinates *gswe_moment_get_coordinates(GsweMoment *moment); + void gswe_moment_set_house_system(GsweMoment *moment, GsweHouseSystem house_system); GsweHouseSystem gswe_moment_get_house_system(GsweMoment *moment); + GList *gswe_moment_get_house_cusps(GsweMoment *moment, GError **err); gint gswe_moment_get_house(GsweMoment *moment, gdouble position, GError **err); + gboolean gswe_moment_has_planet(GsweMoment *moment, GswePlanet planet); void gswe_moment_add_planet(GsweMoment *moment, GswePlanet planet); void gswe_moment_add_all_planets(GsweMoment *moment); GList *gswe_moment_get_all_planets(GsweMoment *moment); const GswePlanetData *gswe_moment_get_planet(GsweMoment *moment, GswePlanet planet, GError **err); +GList *gswe_moment_get_sign_planets(GsweMoment *moment, GsweZodiac sign); +GList *gswe_moment_get_house_planets(GsweMoment *moment, guint house); + guint gswe_moment_get_element_points(GsweMoment *moment, GsweElement element); guint gswe_moment_get_quality_points(GsweMoment *moment, GsweQuality quality); + const GsweMoonPhaseData *gswe_moment_get_moon_phase(GsweMoment *moment, GError **err); + GList *gswe_moment_get_all_aspects(GsweMoment *moment); GList *gswe_moment_get_planet_aspects(GsweMoment *moment, GswePlanet planet, GError **err); + GList *gswe_moment_get_all_antiscia(GsweMoment *moment); GList *gswe_moment_get_all_planet_antiscia(GsweMoment *moment, GswePlanet planet, GError **err); GList *gswe_moment_get_axis_all_antiscia(GsweMoment *moment, GsweAntiscionAxis axis);