@@ -194,9 +194,15 @@ gswe_antiscion_data_get_type
 | 
			
		||||
<SECTION>
 | 
			
		||||
<FILE>gswe-house-system-info</FILE>
 | 
			
		||||
GsweHouseSystemInfo
 | 
			
		||||
gswe_house_system_info_new
 | 
			
		||||
gswe_house_system_info_ref
 | 
			
		||||
gswe_house_system_info_unref
 | 
			
		||||
gswe_house_system_info_set_house_system
 | 
			
		||||
gswe_house_system_info_get_house_system
 | 
			
		||||
gswe_house_system_info_get_name
 | 
			
		||||
gswe_house_system_info_set_sweph_id
 | 
			
		||||
gswe_house_system_info_get_sweph_id
 | 
			
		||||
gswe_house_system_info_set_name
 | 
			
		||||
gswe_house_system_info_get_name
 | 
			
		||||
<SUBSECTION Standard>
 | 
			
		||||
GSWE_TYPE_HOUSE_SYSTEM_INFO
 | 
			
		||||
gswe_house_system_info_get_type
 | 
			
		||||
 
 | 
			
		||||
@@ -32,10 +32,10 @@ struct _GsweHouseSystemInfo {
 | 
			
		||||
 | 
			
		||||
    /* the name of this house system */
 | 
			
		||||
    gchar *name;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
GsweHouseSystemInfo *gswe_house_system_info_copy(GsweHouseSystemInfo *house_system_info);
 | 
			
		||||
void gswe_house_system_info_free(GsweHouseSystemInfo *house_system_info);
 | 
			
		||||
    /* reference count */
 | 
			
		||||
    guint refcount;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif /* __SWE_GLIB_GSWE_HOUSE_SYSTEM_INFO_PRIVATE_H__ */
 | 
			
		||||
#else /* not defined __SWE_GLIB_BUILDING__ */
 | 
			
		||||
 
 | 
			
		||||
@@ -29,40 +29,83 @@
 | 
			
		||||
 * #GsweHouseSystemInfo stores information of a house system.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
G_DEFINE_BOXED_TYPE(GsweHouseSystemInfo, gswe_house_system_info, (GBoxedCopyFunc)gswe_house_system_info_copy, (GBoxedFreeFunc)gswe_house_system_info_free);
 | 
			
		||||
G_DEFINE_BOXED_TYPE(GsweHouseSystemInfo, gswe_house_system_info, (GBoxedCopyFunc)gswe_house_system_info_ref, (GBoxedFreeFunc)gswe_house_system_info_unref);
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
gswe_house_system_info_free(GsweHouseSystemInfo *house_system_info)
 | 
			
		||||
{
 | 
			
		||||
    if (house_system_info->name) {
 | 
			
		||||
        g_free(house_system_info->name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    g_free(house_system_info);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * gswe_house_system_info_new:
 | 
			
		||||
 *
 | 
			
		||||
 * Creates a new #GsweHouseSystemInfo with reference count of 1.
 | 
			
		||||
 *
 | 
			
		||||
 * Returns: (transfer full): a new #GsweHouseSystemInfo
 | 
			
		||||
 */
 | 
			
		||||
GsweHouseSystemInfo *
 | 
			
		||||
gswe_house_system_info_copy(GsweHouseSystemInfo *house_system_info)
 | 
			
		||||
gswe_house_system_info_new(void)
 | 
			
		||||
{
 | 
			
		||||
    GsweHouseSystemInfo *ret;
 | 
			
		||||
 | 
			
		||||
    if (house_system_info == NULL) {
 | 
			
		||||
        return NULL;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ret               = g_new0(GsweHouseSystemInfo, 1);
 | 
			
		||||
    ret->house_system = house_system_info->house_system;
 | 
			
		||||
    ret->sweph_id     = house_system_info->sweph_id;
 | 
			
		||||
    ret->name         = g_strdup(house_system_info->name);
 | 
			
		||||
    ret = g_new0(GsweHouseSystemInfo, 1);
 | 
			
		||||
    ret->refcount = 1;
 | 
			
		||||
 | 
			
		||||
    return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
gswe_house_system_info_free(GsweHouseSystemInfo *house_system_info)
 | 
			
		||||
/**
 | 
			
		||||
 * gswe_house_system_info_ref:
 | 
			
		||||
 * @house_system_info: (in): a #GsweHouseSystemInfo
 | 
			
		||||
 *
 | 
			
		||||
 * Increases reference count on @house_system_info by one.
 | 
			
		||||
 *
 | 
			
		||||
 * Returns: (transfer none): the same #GsweHouseSystemInfo
 | 
			
		||||
 */
 | 
			
		||||
GsweHouseSystemInfo *
 | 
			
		||||
gswe_house_system_info_ref(GsweHouseSystemInfo *house_system_info)
 | 
			
		||||
{
 | 
			
		||||
    if (house_system_info) {
 | 
			
		||||
        if (house_system_info->name) {
 | 
			
		||||
            g_free(house_system_info->name);
 | 
			
		||||
        }
 | 
			
		||||
    house_system_info->refcount++;
 | 
			
		||||
 | 
			
		||||
        g_free(house_system_info);
 | 
			
		||||
    return house_system_info;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * gswe_house_system_info_unref:
 | 
			
		||||
 * @house_system_info: a #GsweHouseSystemInfo
 | 
			
		||||
 *
 | 
			
		||||
 * Decreases reference count on @house_system_info by one. If reference count
 | 
			
		||||
 * drops to zero, @house_system_info is freed.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
gswe_house_system_info_unref(GsweHouseSystemInfo *house_system_info)
 | 
			
		||||
{
 | 
			
		||||
    if (--house_system_info->refcount == 0) {
 | 
			
		||||
        gswe_house_system_info_free(house_system_info);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * gswe_house_system_info_set_house_system:
 | 
			
		||||
 * @house_system_info: (in): a #GsweHouseSystemInfo
 | 
			
		||||
 * @house_system: a #GsweHouseSystem
 | 
			
		||||
 *
 | 
			
		||||
 * Sets up @house_system_info to represent @house_system.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
gswe_house_system_info_set_house_system(GsweHouseSystemInfo *house_system_info, GsweHouseSystem house_system)
 | 
			
		||||
{
 | 
			
		||||
    house_system_info->house_system = house_system;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * gswe_house_system_info_get_house_system:
 | 
			
		||||
 * @house_system_info: (in) (allow-none): a #GsweHouseSystemInfo
 | 
			
		||||
 * @house_system_info: (in): a #GsweHouseSystemInfo
 | 
			
		||||
 *
 | 
			
		||||
 * Gets the house system ID this #GsweHouseSystemInfo represents.
 | 
			
		||||
 *
 | 
			
		||||
@@ -71,16 +114,26 @@ gswe_house_system_info_free(GsweHouseSystemInfo *house_system_info)
 | 
			
		||||
GsweHouseSystem
 | 
			
		||||
gswe_house_system_info_get_house_system(GsweHouseSystemInfo *house_system_info)
 | 
			
		||||
{
 | 
			
		||||
    if (house_system_info) {
 | 
			
		||||
        return house_system_info->house_system;
 | 
			
		||||
    } else {
 | 
			
		||||
        return GSWE_HOUSE_SYSTEM_NONE;
 | 
			
		||||
    }
 | 
			
		||||
    return house_system_info->house_system;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * gswe_house_system_info_set_sweph_id:
 | 
			
		||||
 * @house_system_info: a #GsweHouseSystemInfo
 | 
			
		||||
 * @sweph_id: a character recognized by Swiss Ephemeris as a house system
 | 
			
		||||
 *
 | 
			
		||||
 * Sets up @house_system_info to represent the Swiss Ephemeris house system
 | 
			
		||||
 * marked by @sweph_id.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
gswe_house_system_info_set_sweph_id(GsweHouseSystemInfo *house_system_info, gchar sweph_id)
 | 
			
		||||
{
 | 
			
		||||
    house_system_info->sweph_id = sweph_id;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * gswe_house_system_info_get_sweph_id:
 | 
			
		||||
 * @house_system_info: (in) (allow-none): a #GsweHouseSystemInfo
 | 
			
		||||
 * @house_system_info: (in): a #GsweHouseSystemInfo
 | 
			
		||||
 *
 | 
			
		||||
 * Gets the Swiss Ephemeris ID for the house system.
 | 
			
		||||
 *
 | 
			
		||||
@@ -89,16 +142,29 @@ gswe_house_system_info_get_house_system(GsweHouseSystemInfo *house_system_info)
 | 
			
		||||
gchar
 | 
			
		||||
gswe_house_system_info_get_sweph_id(GsweHouseSystemInfo *house_system_info)
 | 
			
		||||
{
 | 
			
		||||
    if (house_system_info) {
 | 
			
		||||
        return house_system_info->sweph_id;
 | 
			
		||||
    } else {
 | 
			
		||||
        return 0;
 | 
			
		||||
    return house_system_info->sweph_id;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * gswe_house_system_info_set_name:
 | 
			
		||||
 * @house_system_info: a #GsweHouseSystemInfo
 | 
			
		||||
 * @name: the new name for this house system
 | 
			
		||||
 *
 | 
			
		||||
 * Sets the name of @house_system_info.
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
gswe_house_system_info_set_name(GsweHouseSystemInfo *house_system_info, const gchar *name)
 | 
			
		||||
{
 | 
			
		||||
    if (house_system_info->name) {
 | 
			
		||||
        g_free(house_system_info->name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    house_system_info->name = g_strdup(name);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * gswe_house_system_info_get_name:
 | 
			
		||||
 * @house_system_info: (in) (allow-none): a #GsweHouseSystemInfo
 | 
			
		||||
 * @house_system_info: (in): a #GsweHouseSystemInfo
 | 
			
		||||
 *
 | 
			
		||||
 * Gets the name of the house system.
 | 
			
		||||
 *
 | 
			
		||||
@@ -107,10 +173,6 @@ gswe_house_system_info_get_sweph_id(GsweHouseSystemInfo *house_system_info)
 | 
			
		||||
const gchar *
 | 
			
		||||
gswe_house_system_info_get_name(GsweHouseSystemInfo *house_system_info)
 | 
			
		||||
{
 | 
			
		||||
    if (house_system_info) {
 | 
			
		||||
        return house_system_info->name;
 | 
			
		||||
    } else {
 | 
			
		||||
        return NULL;
 | 
			
		||||
    }
 | 
			
		||||
    return house_system_info->name;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -37,8 +37,18 @@ typedef struct _GsweHouseSystemInfo GsweHouseSystemInfo;
 | 
			
		||||
GType gswe_house_system_info_get_type(void);
 | 
			
		||||
#define GSWE_TYPE_HOUSE_SYSTEM_INFO (gswe_house_system_info_get_type())
 | 
			
		||||
 | 
			
		||||
GsweHouseSystemInfo *gswe_house_system_info_new(void);
 | 
			
		||||
 | 
			
		||||
GsweHouseSystemInfo *gswe_house_system_info_ref(GsweHouseSystemInfo *house_system_info);
 | 
			
		||||
void gswe_house_system_info_unref(GsweHouseSystemInfo *house_system_info);
 | 
			
		||||
 | 
			
		||||
void gswe_house_system_info_set_house_system(GsweHouseSystemInfo *house_system_info, GsweHouseSystem house_system);
 | 
			
		||||
GsweHouseSystem gswe_house_system_info_get_house_system(GsweHouseSystemInfo *house_system_info);
 | 
			
		||||
 | 
			
		||||
void gswe_house_system_info_set_sweph_id(GsweHouseSystemInfo *house_system_info, gchar sweph_id);
 | 
			
		||||
gchar gswe_house_system_info_get_sweph_id(GsweHouseSystemInfo *house_system_info);
 | 
			
		||||
 | 
			
		||||
void gswe_house_system_info_set_name(GsweHouseSystemInfo *house_system_info, const gchar *name);
 | 
			
		||||
const gchar *gswe_house_system_info_get_name(GsweHouseSystemInfo *house_system_info);
 | 
			
		||||
 | 
			
		||||
G_END_DECLS
 | 
			
		||||
 
 | 
			
		||||
@@ -495,7 +495,7 @@ gswe_moment_calculate_house_positions(GsweMoment *moment, GError **err)
 | 
			
		||||
            ascmc[10],
 | 
			
		||||
            jd;
 | 
			
		||||
    gint i;
 | 
			
		||||
    GsweHouseSystemInfo *house_system_data;
 | 
			
		||||
    GsweHouseSystemInfo *house_system_info;
 | 
			
		||||
 | 
			
		||||
    if (moment->priv->house_revision == moment->priv->revision) {
 | 
			
		||||
        return;
 | 
			
		||||
@@ -512,7 +512,7 @@ gswe_moment_calculate_house_positions(GsweMoment *moment, GError **err)
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if ((house_system_data = g_hash_table_lookup(gswe_house_system_info_table, GINT_TO_POINTER(moment->priv->house_system))) == NULL) {
 | 
			
		||||
    if ((house_system_info = g_hash_table_lookup(gswe_house_system_info_table, GINT_TO_POINTER(moment->priv->house_system))) == NULL) {
 | 
			
		||||
        g_set_error(err, GSWE_ERROR, GSWE_ERROR_UNKNOWN_HSYS, "Unknown house system");
 | 
			
		||||
 | 
			
		||||
        return;
 | 
			
		||||
@@ -526,7 +526,7 @@ gswe_moment_calculate_house_positions(GsweMoment *moment, GError **err)
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    swe_houses(jd, moment->priv->coordinates.latitude, moment->priv->coordinates.longitude, house_system_data->sweph_id, cusps, ascmc);
 | 
			
		||||
    swe_houses(jd, moment->priv->coordinates.latitude, moment->priv->coordinates.longitude, house_system_info->sweph_id, cusps, ascmc);
 | 
			
		||||
 | 
			
		||||
    /* TODO: SWE house system 'G' (Gauquelin sector cusps) have 36 houses; we
 | 
			
		||||
     * should detect that somehow (house system 'G' is not implemented yet in
 | 
			
		||||
 
 | 
			
		||||
@@ -62,7 +62,7 @@ GsweTimestamp *gswe_full_moon_base_date;
 | 
			
		||||
    g_hash_table_replace((ht), GINT_TO_POINTER(s), (v));
 | 
			
		||||
 | 
			
		||||
#define ADD_HOUSE_SYSTEM(ht, v, i, s, n) \
 | 
			
		||||
    (v) = g_new0(GsweHouseSystemInfo, 1); \
 | 
			
		||||
    (v) = gswe_house_system_info_new(); \
 | 
			
		||||
    (v)->house_system = i; \
 | 
			
		||||
    (v)->sweph_id = s; \
 | 
			
		||||
    (v)->name = g_strdup(n); \
 | 
			
		||||
@@ -96,13 +96,6 @@ GsweTimestamp *gswe_full_moon_base_date;
 | 
			
		||||
 */
 | 
			
		||||
G_DEFINE_QUARK(gswe-error-quark, gswe_error);
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
gswe_free_house_system_info(gpointer house_system_info)
 | 
			
		||||
{
 | 
			
		||||
    g_free(((GsweHouseSystemInfo *)house_system_info)->name);
 | 
			
		||||
    g_free(house_system_info);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * gswe_init:
 | 
			
		||||
 *
 | 
			
		||||
@@ -163,7 +156,7 @@ gswe_init(void)
 | 
			
		||||
    ADD_SIGN(gswe_sign_info_table, sign_info, GSWE_SIGN_AQUARIUS,    _("Aquarius"),    GSWE_ELEMENT_AIR,   GSWE_QUALITY_FIX);
 | 
			
		||||
    ADD_SIGN(gswe_sign_info_table, sign_info, GSWE_SIGN_PISCES,      _("Pisces"),      GSWE_ELEMENT_WATER, GSWE_QUALITY_MUTABLE);
 | 
			
		||||
 | 
			
		||||
    gswe_house_system_info_table = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, gswe_free_house_system_info);
 | 
			
		||||
    gswe_house_system_info_table = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, (GDestroyNotify)gswe_house_system_info_unref);
 | 
			
		||||
 | 
			
		||||
    ADD_HOUSE_SYSTEM(gswe_house_system_info_table, house_system_info, GSWE_HOUSE_SYSTEM_NONE,     0,   _("None"));
 | 
			
		||||
    ADD_HOUSE_SYSTEM(gswe_house_system_info_table, house_system_info, GSWE_HOUSE_SYSTEM_PLACIDUS, 'P', _("Placidus"));
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user