[libgda] GI: make GdaDiff introspectable
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda] GI: make GdaDiff introspectable
- Date: Wed, 10 Oct 2018 00:12:37 +0000 (UTC)
commit 6398e1f7e056173aed74dd187cb79d062c78f478
Author: Daniel Espinosa <esodan gmail com>
Date: Tue Oct 9 19:12:01 2018 -0500
GI: make GdaDiff introspectable
libgda/gda-data-comparator.c | 20 ++++++++++++++++++++
libgda/gda-data-comparator.h | 4 ++++
2 files changed, 24 insertions(+)
---
diff --git a/libgda/gda-data-comparator.c b/libgda/gda-data-comparator.c
index 1632ad019..404c84d06 100644
--- a/libgda/gda-data-comparator.c
+++ b/libgda/gda-data-comparator.c
@@ -612,3 +612,23 @@ gda_data_comparator_get_diff (GdaDataComparator *comp, gint pos)
return g_array_index (priv->diffs, GdaDiff*, pos);
}
+
+void
+copy_hash (gpointer key, gpointer value, GdaDiff *dst)
+{
+ g_hash_table_insert (dst->values, g_strdup (key), gda_value_copy (value));
+}
+
+GdaDiff*
+gda_diff_copy (GdaDiff *src)
+{
+ GdaDiff *dst = g_new0 (GdaDiff, 1);
+ dst->type = src->type;
+ dst->old_row = src->old_row;
+ dst->new_row = src->new_row;
+ dst->values = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) g_free,
+ (GDestroyNotify) gda_value_free);
+ g_hash_table_foreach (src->values, copy_hash, dst);
+}
+
+G_DEFINE_BOXED_TYPE (GdaDiff, gda_diff, gda_diff_copy, gda_diff_free)
diff --git a/libgda/gda-data-comparator.h b/libgda/gda-data-comparator.h
index 05d6b1997..ccda48442 100644
--- a/libgda/gda-data-comparator.h
+++ b/libgda/gda-data-comparator.h
@@ -57,6 +57,8 @@ typedef struct {
* value = a GValue pointer */
} GdaDiff;
+#define GDA_TYPE_DIFF (gda_diff_get_type ())
+
/* struct for the object's class */
struct _GdaDataComparatorClass
{
@@ -98,6 +100,8 @@ gboolean gda_data_comparator_compute_diff (GdaDataComparator *comp,
gint gda_data_comparator_get_n_diffs (GdaDataComparator *comp);
const GdaDiff *gda_data_comparator_get_diff (GdaDataComparator *comp, gint pos);
+GType gda_diff_get_type (void) G_GNUC_CONST;
+
G_END_DECLS
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]