[libgda] GI: make GdaDiff introspectable



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]