From: Andrea Zagli Date: Sun, 22 Dec 2019 11:33:49 +0000 (+0100) Subject: Boxed Datasource struct. X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=d52c799d26b5313908284138d4bf0536161d63bf;p=zakaudit%2Flibzakaudit Boxed Datasource struct. --- diff --git a/src/audit.c b/src/audit.c index 932a1fd..04583da 100644 --- a/src/audit.c +++ b/src/audit.c @@ -80,15 +80,6 @@ typedef struct gchar *keys_sql; } Table; -typedef struct -{ - gint id; - gchar *name; - gchar *cnc_string; - GdaEx *gdaex; - GList *tables; -} Datasource; - typedef struct { gchar **values; @@ -100,18 +91,18 @@ static void zak_audit_init (ZakAudit *zak_audit); static ZakAudit *zak_audit_new_ (void); static gboolean load_fields (ZakAudit *zak_audit, - Datasource *datasource, + ZakAuditDatasource *datasource, Table *table); static gboolean load_tables (ZakAudit *zak_audit, - Datasource *datasource); + ZakAuditDatasource *datasource); static gboolean load_datasources (ZakAudit *zak_audit, va_list ap); static Field *get_field_from_name (ZakAudit *zak_audit, Table *table, const char *field); static Table *get_table_from_name (ZakAudit *zak_audit, - Datasource *datasource, + ZakAuditDatasource *datasource, const char *table); -static Datasource *get_datasource_from_name (ZakAudit *zak_audit, +static ZakAuditDatasource *get_datasource_from_name (ZakAudit *zak_audit, const char *datasource); static gboolean insert_value (ZakAudit *zak_audit, gint id_actions, @@ -281,7 +272,7 @@ free_datasource (gpointer data) static gboolean load_fields (ZakAudit *zak_audit, - Datasource *datasource, + ZakAuditDatasource *datasource, Table *table) { GdaDataModel *dm; @@ -369,7 +360,7 @@ load_fields (ZakAudit *zak_audit, static gboolean load_tables (ZakAudit *zak_audit, - Datasource *datasource) + ZakAuditDatasource *datasource) { GdaDataModel *dm; gchar *sql; @@ -431,7 +422,7 @@ load_datasources (ZakAudit *zak_audit, va_list ap) gchar *sql; gint rows; gint row; - Datasource *datas; + ZakAuditDatasource *datas; GString *str_in; char *datasource_name; @@ -488,7 +479,7 @@ load_datasources (ZakAudit *zak_audit, va_list ap) for (row = 0; row < rows; row++) { - datas = g_new0 (Datasource, 1); + datas = g_new0 (ZakAuditDatasource, 1); datas->id = gdaex_data_model_get_field_value_integer_at (dm, row, "id"); datas->name = gdaex_data_model_get_field_value_stringify_at (dm, row, "name"); @@ -548,7 +539,7 @@ static Field static Table *get_table_from_name (ZakAudit *zak_audit, - Datasource *datasource, + ZakAuditDatasource *datasource, const char *table) { Table *ret_table; @@ -574,11 +565,11 @@ static Table return ret_table; } -static Datasource +static ZakAuditDatasource *get_datasource_from_name (ZakAudit *zak_audit, const char *datasource) { - Datasource *ret_datasource; + ZakAuditDatasource *ret_datasource; ZakAuditPrivate *priv = ZAK_AUDIT_GET_PRIVATE (zak_audit); @@ -591,9 +582,9 @@ static Datasource ret_datasource = NULL; while (f != NULL) { - if (g_strcmp0 (((Datasource *)f->data)->name, real_datasource) == 0) + if (g_strcmp0 (((ZakAuditDatasource *)f->data)->name, real_datasource) == 0) { - ret_datasource = (Datasource *)f->data; + ret_datasource = (ZakAuditDatasource *)f->data; } f = g_list_next (f); @@ -1014,7 +1005,7 @@ zak_audit_action_v (ZakAudit *zak_audit, gint cols; gint col; GDateTime *gdt; - Datasource *datasource; + ZakAuditDatasource *datasource; Table *table; ZakAuditPrivate *priv = ZAK_AUDIT_GET_PRIVATE (zak_audit); @@ -1394,7 +1385,7 @@ zak_audit_action_from_where (ZakAudit *zak_audit, { gboolean ret; - Datasource *datasource; + ZakAuditDatasource *datasource; Table *table; GdaConnection *conn; @@ -1772,7 +1763,7 @@ GtkWidget GtkWidget *ret; - Datasource *datasource; + ZakAuditDatasource *datasource; Table *table; Field *field; @@ -2166,7 +2157,7 @@ const gchar const gchar *table_name, const gchar **key_values) { - Datasource *datasource; + ZakAuditDatasource *datasource; Table *table; Field *field; @@ -2278,7 +2269,7 @@ zak_audit_get_record_at (ZakAudit *zak_audit, { GdaDataModel *dm; gchar *sql; - Datasource *datasource; + ZakAuditDatasource *datasource; /* find the datasource */ datasource = get_datasource_from_name (zak_audit, datasource_name); @@ -2382,3 +2373,28 @@ GOptionGroup return ret; } + +ZakAuditDatasource +*zak_audit_datasource_copy (ZakAuditDatasource *datasource) +{ + ZakAuditDatasource *b; + + b = g_slice_new (ZakAuditDatasource); + b->id = datasource->id; + b->name = g_strdup (datasource->name); + b->cnc_string = g_strdup (datasource->cnc_string); + b->gdaex = g_object_ref (datasource->gdaex); + b->tables = g_list_copy (datasource->tables); + + return b; +} + +void +zak_audit_datasource_free (ZakAuditDatasource *datasource) +{ + g_free (datasource->name); + g_free (datasource->cnc_string); + g_object_unref (datasource->gdaex); + g_list_free (datasource->tables); + g_slice_free (ZakAuditDatasource, datasource); +} diff --git a/src/libzakaudit.h b/src/libzakaudit.h index 05adf42..097329c 100644 --- a/src/libzakaudit.h +++ b/src/libzakaudit.h @@ -115,6 +115,21 @@ void zak_audit_destroy (ZakAudit *zak_audit); GOptionGroup *zak_audit_get_option_group (ZakAudit *zak_audit); +typedef struct +{ + gint id; + gchar *name; + gchar *cnc_string; + GdaEx *gdaex; + GList *tables; +} ZakAuditDatasource; + +ZakAuditDatasource *zak_audit_datasource_copy (ZakAuditDatasource *datasource); +void zak_audit_datasource_free (ZakAuditDatasource *datasource); + +G_DEFINE_BOXED_TYPE (ZakAuditDatasource, zak_audit_datasource, zak_audit_datasource_copy, zak_audit_datasource_free); + + G_END_DECLS