Add function ag_db_save_identical()
It compares two AgDbSave structs and returns TRUE if they are equal or identical.
This commit is contained in:
parent
1628a71f8b
commit
2e34b71f69
88
src/ag-db.c
88
src/ag-db.c
@ -903,3 +903,91 @@ ag_db_get_chart_data_by_id(AgDb *db, guint row_id, GError **err)
|
|||||||
|
|
||||||
return save_data;
|
return save_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gint
|
||||||
|
string_collate(const gchar *str1, const gchar *str2)
|
||||||
|
{
|
||||||
|
if (((str1 == NULL) || (str2 == NULL)) && (str1 != str2)) {
|
||||||
|
return (str1 == NULL) ? -1 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (str1 == str2) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return g_utf8_collate(str1, str2);
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
ag_db_save_identical(const AgDbSave *a, const AgDbSave *b)
|
||||||
|
{
|
||||||
|
if (a == b) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((a == NULL) || (b == NULL)) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string_collate(a->name, b->name) != 0) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string_collate(a->country, b->country) != 0) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string_collate(a->city, b->city) != 0) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a->longitude != b->longitude) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a->latitude != b->latitude) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a->altitude != b->altitude) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a->year != b->year) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a->month != b->month) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a->day != b->day) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a->hour != b->hour) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a->minute != b->minute) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a->second != b->second) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (a->timezone != b->timezone) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string_collate(a->house_system, b->house_system) != 0) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string_collate(a->note, b->note) != 0) {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
@ -68,6 +68,8 @@ GList *ag_db_get_chart_list(AgDb *db, GError **err);
|
|||||||
|
|
||||||
AgDbSave *ag_db_get_chart_data_by_id(AgDb *db, guint row_id, GError **err);
|
AgDbSave *ag_db_get_chart_data_by_id(AgDb *db, guint row_id, GError **err);
|
||||||
|
|
||||||
|
gboolean ag_db_save_identical(const AgDbSave *a, const AgDbSave *b);
|
||||||
|
|
||||||
#define AG_DB_ERROR (ag_db_error_quark())
|
#define AG_DB_ERROR (ag_db_error_quark())
|
||||||
GQuark ag_db_error_quark(void);
|
GQuark ag_db_error_quark(void);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user