From 7f644b581d6c29fb1ebc565bd336edb27340cbfc Mon Sep 17 00:00:00 2001 From: Andrea Zagli <azagli@libero.it> Date: Sat, 28 Dec 2019 11:34:48 +0100 Subject: [PATCH] Boxed field struct. --- src/audit.c | 61 +++++++++++++++++++++++++---------------------- src/libzakaudit.h | 10 ++++++++ 2 files changed, 42 insertions(+), 29 deletions(-) diff --git a/src/audit.c b/src/audit.c index da610b0..b5e0139 100644 --- a/src/audit.c +++ b/src/audit.c @@ -63,13 +63,6 @@ typedef struct gchar *field_value; } ChangesColumn; -typedef struct -{ - gint id; - gchar *name; - gboolean is_key; -} Field; - typedef struct { gchar **values; @@ -86,7 +79,7 @@ static gboolean load_fields (ZakAudit *zak_audit, static gboolean load_tables (ZakAudit *zak_audit, ZakAuditDatasource *datasource); static gboolean load_datasources (ZakAudit *zak_audit, va_list ap); -static Field *get_field_from_name (ZakAudit *zak_audit, +static ZakAuditField *get_field_from_name (ZakAudit *zak_audit, ZakAuditTable *table, const char *field); static ZakAuditTable *get_table_from_name (ZakAudit *zak_audit, @@ -223,16 +216,6 @@ zak_audit_init (ZakAudit *zak_audit) priv->gtkbuilder = gtk_builder_new (); } -static void -free_field (gpointer data) -{ - Field *f; - - f = (Field *)data; - - g_free (f->name); -} - static gboolean load_fields (ZakAudit *zak_audit, ZakAuditDatasource *datasource, @@ -244,7 +227,7 @@ load_fields (ZakAudit *zak_audit, gchar *sql; gint rows, row; - Field *field; + ZakAuditField *field; ZakAuditPrivate *priv = ZAK_AUDIT_GET_PRIVATE (zak_audit); @@ -281,7 +264,7 @@ load_fields (ZakAudit *zak_audit, for (row = 0; row < rows; row++) { - field = g_new0 (Field, 1); + field = g_new0 (ZakAuditField, 1); field->id = gdaex_data_model_get_field_value_integer_at (dm, row, "id"); field->name = gdaex_data_model_get_field_value_stringify_at (dm, row, "name"); @@ -472,12 +455,12 @@ load_datasources (ZakAudit *zak_audit, va_list ap) return TRUE; } -static Field +static ZakAuditField *get_field_from_name (ZakAudit *zak_audit, ZakAuditTable *table, const char *field) { - Field *ret_field; + ZakAuditField *ret_field; GList *c = g_list_first (table->fields); gchar *real_field; @@ -487,9 +470,9 @@ static Field ret_field = NULL; while (c != NULL) { - if (g_strcmp0 (((Field *)c->data)->name, real_field) == 0) + if (g_strcmp0 (((ZakAuditField *)c->data)->name, real_field) == 0) { - ret_field = (Field *)c->data; + ret_field = (ZakAuditField *)c->data; break; } @@ -569,7 +552,7 @@ insert_value (ZakAudit *zak_audit, ZakAuditPrivate *priv = ZAK_AUDIT_GET_PRIVATE (zak_audit); - Field *field = get_field_from_name (zak_audit, table, field_name); + ZakAuditField *field = get_field_from_name (zak_audit, table, field_name); if (field == NULL) { g_warning (_("Unable to find the field «%s» on loaded fields."), @@ -1728,7 +1711,7 @@ GtkWidget ZakAuditDatasource *datasource; ZakAuditTable *table; - Field *field; + ZakAuditField *field; guint l; guint strpart; @@ -2122,7 +2105,7 @@ const gchar { ZakAuditDatasource *datasource; ZakAuditTable *table; - Field *field; + ZakAuditField *field; guint l; guint strpart; @@ -2337,6 +2320,26 @@ GOptionGroup return ret; } +ZakAuditField +*zak_audit_field_copy (ZakAuditField *field) +{ + ZakAuditField *f; + + f = g_slice_new (ZakAuditField); + f->id = field->id; + f->name = g_strdup (field->name); + f->is_key = field->is_key; + + return f; +} + +void +zak_audit_field_free (ZakAuditField *field) +{ + g_free (field->name); + g_slice_free (ZakAuditField, field); +} + ZakAuditTable *zak_audit_table_copy (ZakAuditTable *table) { @@ -2357,9 +2360,9 @@ void zak_audit_table_free (ZakAuditTable *table) { g_free (table->name); - g_list_free_full (table->fields, free_field); + g_list_free_full (table->fields, g_free); g_free (table->fields_sql); - g_list_free_full (table->keys, free_field); + g_list_free_full (table->keys, g_free); g_free (table->keys_sql); g_slice_free (ZakAuditTable, table); } diff --git a/src/libzakaudit.h b/src/libzakaudit.h index 3b549a3..f39e527 100644 --- a/src/libzakaudit.h +++ b/src/libzakaudit.h @@ -115,6 +115,16 @@ void zak_audit_destroy (ZakAudit *zak_audit); GOptionGroup *zak_audit_get_option_group (ZakAudit *zak_audit); +typedef struct +{ + gint id; + gchar *name; + gboolean is_key; +} ZakAuditField; + +ZakAuditField *zak_audit_field_copy (ZakAuditField *field); +void zak_audit_field_free (ZakAuditField *field); + typedef struct { gint id; -- 2.49.0