[libgda] GdaDataModel: ported to use G_DEFINE/G_DECLARE



commit 82a7ed879b811694bdb91fd435b3bcc8021a5124
Author: Daniel Espinosa <esodan gmail com>
Date:   Wed Apr 3 10:31:49 2019 -0600

    GdaDataModel: ported to use G_DEFINE/G_DECLARE
    
    Updated implementators.
    
    GdaDataModelArray ported to G_DEFINE/G_DECLARE

 libgda/Gda-6.0.metadata          |   1 +
 libgda/gda-data-access-wrapper.c |   6 +-
 libgda/gda-data-meta-wrapper.c   |   5 +-
 libgda/gda-data-model-array.c    |  81 +++-------
 libgda/gda-data-model-dir.c      |   6 +-
 libgda/gda-data-model-dsn-list.c |   5 +-
 libgda/gda-data-model-import.c   |   6 +-
 libgda/gda-data-model-select.c   |   4 +-
 libgda/gda-data-model.c          | 318 +++++++++++++++++----------------------
 libgda/gda-data-model.h          |  15 +-
 libgda/gda-data-pivot.c          |   5 +-
 libgda/gda-data-proxy.c          |   6 +-
 libgda/gda-data-select.c         |   6 +-
 tests/data-model-errors.c        |   5 +-
 14 files changed, 197 insertions(+), 272 deletions(-)
---
diff --git a/libgda/Gda-6.0.metadata b/libgda/Gda-6.0.metadata
index 595de429e..d69a39fde 100644
--- a/libgda/Gda-6.0.metadata
+++ b/libgda/Gda-6.0.metadata
@@ -1,6 +1,7 @@
 // Vala Bindings for GDA
 ServerProviderMeta skip
 ServerProviderXa skip
+DataModelInterface skip
 // libxml2: replace xml.NodePtr by xml.Node* used by Vala bindings
 Set.new_from_spec_node.xml_spec type="Xml.Node*"
 DataModel.add_data_from_xml_node.node type="Xml.Node*"
diff --git a/libgda/gda-data-access-wrapper.c b/libgda/gda-data-access-wrapper.c
index 753d68032..59fa6e632 100644
--- a/libgda/gda-data-access-wrapper.c
+++ b/libgda/gda-data-access-wrapper.c
@@ -4,7 +4,7 @@
  * Copyright (C) 2009 Bas Driessen <bas driessen xobas com>
  * Copyright (C) 2010 David King <davidk openismus com>
  * Copyright (C) 2010 Jonh Wendell <jwendell gnome org>
- * Copyright (C) 2018 Daniel Espinosa <esodan gmail com>
+ * Copyright (C) 2018-2019 Daniel Espinosa <esodan gmail com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -35,7 +35,7 @@
 
 
 /* GdaDataModel interface */
-static void                 gda_data_access_wrapper_data_model_init (GdaDataModelIface *iface);
+static void                 gda_data_access_wrapper_data_model_init (GdaDataModelInterface *iface);
 static gint                 gda_data_access_wrapper_get_n_rows      (GdaDataModel *model);
 static gint                 gda_data_access_wrapper_get_n_columns   (GdaDataModel *model);
 static GdaColumn           *gda_data_access_wrapper_describe_column (GdaDataModel *model, gint col);
@@ -113,7 +113,7 @@ gda_data_access_wrapper_class_init (GdaDataAccessWrapperClass *klass)
 }
 
 static void
-gda_data_access_wrapper_data_model_init (GdaDataModelIface *iface)
+gda_data_access_wrapper_data_model_init (GdaDataModelInterface *iface)
 {
        iface->get_n_rows = gda_data_access_wrapper_get_n_rows;
        iface->get_n_columns = gda_data_access_wrapper_get_n_columns;
diff --git a/libgda/gda-data-meta-wrapper.c b/libgda/gda-data-meta-wrapper.c
index 961b2f206..05a6008d4 100644
--- a/libgda/gda-data-meta-wrapper.c
+++ b/libgda/gda-data-meta-wrapper.c
@@ -2,6 +2,7 @@
  * Copyright (C) 2009 Bas Driessen <bas driessen xobas com>
  * Copyright (C) 2009 - 2013 Vivien Malerba <malerba gnome-db org>
  * Copyright (C) 2010 David King <davidk openismus com>
+ * Copyright (C) 2019 Daniel Espinosa <esodan gmail com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -100,7 +101,7 @@ static void gda_data_meta_wrapper_get_property (GObject *object,
                                                    GParamSpec *pspec);
 
 /* GdaDataModel interface */
-static void                 gda_data_meta_wrapper_data_model_init (GdaDataModelIface *iface);
+static void                 gda_data_meta_wrapper_data_model_init (GdaDataModelInterface *iface);
 static gint                 gda_data_meta_wrapper_get_n_rows      (GdaDataModel *model);
 static gint                 gda_data_meta_wrapper_get_n_columns   (GdaDataModel *model);
 static GdaColumn           *gda_data_meta_wrapper_describe_column (GdaDataModel *model, gint col);
@@ -175,7 +176,7 @@ gda_data_meta_wrapper_class_init (GdaDataMetaWrapperClass *klass)
 }
 
 static void
-gda_data_meta_wrapper_data_model_init (GdaDataModelIface *iface)
+gda_data_meta_wrapper_data_model_init (GdaDataModelInterface *iface)
 {
        iface->get_n_rows = gda_data_meta_wrapper_get_n_rows;
        iface->get_n_columns = gda_data_meta_wrapper_get_n_columns;
diff --git a/libgda/gda-data-model-array.c b/libgda/gda-data-model-array.c
index 35800bbaa..05e38535c 100644
--- a/libgda/gda-data-model-array.c
+++ b/libgda/gda-data-model-array.c
@@ -12,7 +12,7 @@
  * Copyright (C) 2008 Przemysław Grzegorczyk <pgrzegorczyk gmail com>
  * Copyright (C) 2010 David King <davidk openismus com>
  * Copyright (C) 2010 Jonh Wendell <jwendell gnome org>
- * Copyright (C) 2011 Daniel Espinosa <esodan gmail com>
+ * Copyright (C) 2011,2019 Daniel Espinosa <esodan gmail com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -38,20 +38,6 @@
 #include <libgda/gda-data-model-extra.h>
 #include <libgda/gda-util.h>
 
-typedef struct  {
-       gboolean       notify_changes;
-        GHashTable    *column_spec;
-
-        gboolean       read_only;
-
-       /* number of columns in each row */
-       gint           number_of_columns;
-
-       /* the array of rows, each item is a GdaRow */
-       GPtrArray        *rows;
-} GdaDataModelArrayPrivate;
-#define gda_data_model_array_get_instance_private(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, 
GDA_TYPE_DATA_MODEL_ARRAY, GdaDataModelArrayPrivate)
-
 enum {
        PROP_0,
        PROP_READ_ONLY,
@@ -64,10 +50,8 @@ static void gda_data_model_array_finalize     (GObject *object);
 static void gda_data_model_array_set_property (GObject *object, guint prop_id, const GValue *value, 
GParamSpec *pspec);
 static void gda_data_model_array_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec 
*pspec);
 
-static GObjectClass *parent_class = NULL;
-
 /* GdaDataModel interface */
-static void                 gda_data_model_array_data_model_init (GdaDataModelIface *iface);
+static void                 gda_data_model_array_data_model_init (GdaDataModelInterface *iface);
 static gint                 gda_data_model_array_get_n_rows      (GdaDataModel *model);
 static gint                 gda_data_model_array_get_n_columns   (GdaDataModel *model);
 static GdaColumn           *gda_data_model_array_describe_column (GdaDataModel *model, gint col);
@@ -91,8 +75,25 @@ static gboolean             gda_data_model_array_get_notify      (GdaDataModel *
  * GdaDataModelArray class implementation
  */
 
+typedef struct  {
+       gboolean       notify_changes;
+        GHashTable    *column_spec;
+
+        gboolean       read_only;
+
+       /* number of columns in each row */
+       gint           number_of_columns;
+
+       /* the array of rows, each item is a GdaRow */
+       GPtrArray        *rows;
+} GdaDataModelArrayPrivate;
+
+G_DEFINE_TYPE_WITH_CODE (GdaDataModelArray, gda_data_model_array,G_TYPE_OBJECT,
+                         G_ADD_PRIVATE (GdaDataModelArray)
+                         G_IMPLEMENT_INTERFACE(GDA_TYPE_DATA_MODEL,gda_data_model_array_data_model_init))
+
 static void
-gda_data_model_array_data_model_init (GdaDataModelIface *iface)
+gda_data_model_array_data_model_init (GdaDataModelInterface *iface)
 {
         iface->get_n_rows = gda_data_model_array_get_n_rows;
         iface->get_n_columns = gda_data_model_array_get_n_columns;
@@ -116,51 +117,11 @@ gda_data_model_array_data_model_init (GdaDataModelIface *iface)
         iface->send_hint = NULL;
 }
 
-GType
-gda_data_model_array_get_type (void)
-{
-       static GType type = 0;
-
-       if (G_UNLIKELY (type == 0)) {
-               static GMutex registering;
-               static const GTypeInfo info = {
-                       sizeof (GdaDataModelArrayClass),
-                       (GBaseInitFunc) NULL,
-                       (GBaseFinalizeFunc) NULL,
-                       (GClassInitFunc) gda_data_model_array_class_init,
-                       NULL,
-                       NULL,
-                       sizeof (GdaDataModelArray),
-                       0,
-                       (GInstanceInitFunc) gda_data_model_array_init,
-                       0
-               };
-
-               static const GInterfaceInfo data_model_info = {
-                        (GInterfaceInitFunc) gda_data_model_array_data_model_init,
-                        NULL,
-                        NULL
-                };
-
-
-               g_mutex_lock (&registering);
-               if (type == 0) {
-                       type = g_type_register_static (G_TYPE_OBJECT, "GdaDataModelArray", &info, 0);
-                       g_type_add_interface_static (type, GDA_TYPE_DATA_MODEL, &data_model_info);
-               }
-               g_mutex_unlock (&registering);
-       }
-       return type;
-}
-
 static void
 gda_data_model_array_class_init (GdaDataModelArrayClass *klass)
 {
        GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-       parent_class = g_type_class_peek_parent (klass);
-       g_type_class_add_private (object_class, sizeof (GdaDataModelArrayPrivate));
-
        object_class->finalize = gda_data_model_array_finalize;
        object_class->set_property = gda_data_model_array_set_property;
        object_class->get_property = gda_data_model_array_get_property;
@@ -222,7 +183,7 @@ gda_data_model_array_finalize (GObject *object)
         priv->column_spec = NULL;
 
        /* chain to parent class */
-       parent_class->finalize (object);
+       G_OBJECT_CLASS (gda_data_model_array_parent_class)->finalize (object);
 }
 
 static void
diff --git a/libgda/gda-data-model-dir.c b/libgda/gda-data-model-dir.c
index 42be32022..b653f0ff0 100644
--- a/libgda/gda-data-model-dir.c
+++ b/libgda/gda-data-model-dir.c
@@ -4,7 +4,7 @@
  * Copyright (C) 2009 Bas Driessen <bas driessen xobas com>
  * Copyright (C) 2010 David King <davidk openismus com>
  * Copyright (C) 2010 Jonh Wendell <jwendell gnome org>
- * Copyright (C) 2013, 2018 Daniel Espinosa <esodan gmail com>
+ * Copyright (C) 2013, 2018-2019 Daniel Espinosa <esodan gmail com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -49,7 +49,7 @@
 
 
 /* GdaDataModel interface */
-static void                 gda_data_model_dir_data_model_init (GdaDataModelIface *iface);
+static void                 gda_data_model_dir_data_model_init (GdaDataModelInterface *iface);
 static gint                 gda_data_model_dir_get_n_rows      (GdaDataModel *model);
 static gint                 gda_data_model_dir_get_n_columns   (GdaDataModel *model);
 static GdaColumn           *gda_data_model_dir_describe_column (GdaDataModel *model, gint col);
@@ -142,7 +142,7 @@ static void update_data_model (GdaDataModelDir *model);
  * Object init and dispose
  */
 static void
-gda_data_model_dir_data_model_init (GdaDataModelIface *iface)
+gda_data_model_dir_data_model_init (GdaDataModelInterface *iface)
 {
         iface->get_n_rows = gda_data_model_dir_get_n_rows;
         iface->get_n_columns = gda_data_model_dir_get_n_columns;
diff --git a/libgda/gda-data-model-dsn-list.c b/libgda/gda-data-model-dsn-list.c
index 1b17bea8b..46fd9d5da 100644
--- a/libgda/gda-data-model-dsn-list.c
+++ b/libgda/gda-data-model-dsn-list.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) 2008 - 2013 Vivien Malerba <malerba gnome-db org>
  * Copyright (C) 2010 David King <davidk openismus com>
+ * Copyright (C) 2019 Daniel Espinosa <esodan gmail com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -34,7 +35,7 @@ typedef struct {
        GValue *tmp_value;
 } GdaDataModelDsnListPrivate;
 
-static void                 gda_data_model_dsn_list_data_model_init (GdaDataModelIface *iface);
+static void                 gda_data_model_dsn_list_data_model_init (GdaDataModelInterface *iface);
 
 G_DEFINE_TYPE_WITH_CODE (GdaDataModelDsnList, gda_data_model_dsn_list,G_TYPE_OBJECT,
                          G_ADD_PRIVATE (GdaDataModelDsnList)
@@ -59,7 +60,7 @@ static void dsn_changed_cb (GdaConfig *conf, GdaDsnInfo *info, GdaDataModelDsnLi
  * Object init and finalize
  */
 static void
-gda_data_model_dsn_list_data_model_init (GdaDataModelIface *iface)
+gda_data_model_dsn_list_data_model_init (GdaDataModelInterface *iface)
 {
         iface->get_n_rows = gda_data_model_dsn_list_get_n_rows;
         iface->get_n_columns = gda_data_model_dsn_list_get_n_columns;
diff --git a/libgda/gda-data-model-import.c b/libgda/gda-data-model-import.c
index 5d6357228..8003602d3 100644
--- a/libgda/gda-data-model-import.c
+++ b/libgda/gda-data-model-import.c
@@ -5,7 +5,7 @@
  * Copyright (C) 2009 Bas Driessen <bas driessen xobas com>
  * Copyright (C) 2010 David King <davidk openismus com>
  * Copyright (C) 2010 Jonh Wendell <jwendell gnome org>
- * Copyright (C) 2013, 2018 Daniel Espinosa <esodan gmail com>
+ * Copyright (C) 2013, 2018-2019 Daniel Espinosa <esodan gmail com>
  * Copyright (C) 2013 Miguel Angel Cabrera Moya <madmac2501 gmail com>
  *
  * This library is free software; you can redistribute it and/or
@@ -76,7 +76,7 @@ typedef struct {
 
 
 /* GdaDataModel interface */
-static void                 gda_data_model_import_data_model_init (GdaDataModelIface *iface);
+static void                 gda_data_model_import_data_model_init (GdaDataModelInterface *iface);
 static gint                 gda_data_model_import_get_n_rows      (GdaDataModel *model);
 static gint                 gda_data_model_import_get_n_columns   (GdaDataModel *model);
 static GdaColumn           *gda_data_model_import_describe_column (GdaDataModel *model, gint col);
@@ -292,7 +292,7 @@ gda_data_model_import_class_init (GdaDataModelImportClass *klass)
 }
 
 static void
-gda_data_model_import_data_model_init (GdaDataModelIface *iface)
+gda_data_model_import_data_model_init (GdaDataModelInterface *iface)
 {
        iface->get_n_rows = gda_data_model_import_get_n_rows;
        iface->get_n_columns = gda_data_model_import_get_n_columns;
diff --git a/libgda/gda-data-model-select.c b/libgda/gda-data-model-select.c
index 54541c9fb..b4d7f3427 100644
--- a/libgda/gda-data-model-select.c
+++ b/libgda/gda-data-model-select.c
@@ -20,7 +20,7 @@
 #include<gda-data-model-select.h>
 
 // GdaDataModel Interface
-static void gda_data_model_select_data_model_init (GdaDataModelIface *iface);
+static void gda_data_model_select_data_model_init (GdaDataModelInterface *iface);
 
 // GdaDataModelSelect object definition
 
@@ -451,7 +451,7 @@ gda_data_model_select_get_exceptions (GdaDataModel *model)
 }
 
 static void
-gda_data_model_select_data_model_init (GdaDataModelIface *iface)
+gda_data_model_select_data_model_init (GdaDataModelInterface *iface)
 {
        iface->get_n_rows = gda_data_model_select_get_n_rows;
        iface->get_n_columns = gda_data_model_select_get_n_columns;
diff --git a/libgda/gda-data-model.c b/libgda/gda-data-model.c
index 83c63c0dd..efecc7e77 100644
--- a/libgda/gda-data-model.c
+++ b/libgda/gda-data-model.c
@@ -17,7 +17,7 @@
  * Copyright (C) 2008 Phil Longstaff <plongstaff rogers com>
  * Copyright (C) 2008 Przemysław Grzegorczyk <pgrzegorczyk gmail com>
  * Copyright (C) 2010 David King <davidk openismus com>
- * Copyright (C) 2011 - 2013 Daniel Espinosa <esodan gmail com>
+ * Copyright (C) 2011 - 2013,2019 Daniel Espinosa <esodan gmail com>
  * Copyright (C) 2013 Miguel Angel Cabrera Moya <madmac2501 gmail com>
  * Copyright (C) 2015 Corentin Noël <corentin elementary io>
  *
@@ -64,10 +64,8 @@
 #include "csv.h"
 
 extern gchar *gda_lang_locale;
-static GRecMutex init_rmutex;
-#define MUTEX_LOCK() g_rec_mutex_lock(&init_rmutex)
-#define MUTEX_UNLOCK() g_rec_mutex_unlock(&init_rmutex)
-static void gda_data_model_class_init (gpointer g_class);
+
+static void gda_data_model_default_init (GdaDataModelInterface *iface);
 
 static xmlNodePtr gda_data_model_to_xml_node (GdaDataModel *model, const gint *cols, gint nb_cols, 
                                              const gint *rows, gint nb_rows, const gchar *name);
@@ -78,6 +76,8 @@ static gchar *real_gda_data_model_dump_as_string (GdaDataModel *model, gboolean
                                                  gboolean use_data_handlers, gboolean dump_column_titles,
                                                  const gint *rows, gint nb_rows, GError **error);
 
+G_DEFINE_INTERFACE (GdaDataModel, gda_data_model, G_TYPE_OBJECT)
+
 
 /* signals */
 enum {
@@ -92,6 +92,100 @@ enum {
 
 static guint gda_data_model_signals[LAST_SIGNAL] = {0, 0, 0, 0, 0};
 
+static void gda_data_model_default_init (GdaDataModelInterface *iface)
+{
+  /**
+        * GdaDataModel::changed:
+        * @model: the #GdaDataModel
+        *
+        * Gets emitted when any value in @model has been changed
+        */
+       gda_data_model_signals[CHANGED] =
+               g_signal_new ("changed",
+                             GDA_TYPE_DATA_MODEL,
+                             G_SIGNAL_RUN_LAST,
+                             G_STRUCT_OFFSET (GdaDataModelInterface, changed),
+                             NULL, NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                             G_TYPE_NONE, 0);
+       /**
+        * GdaDataModel::row-inserted:
+        * @model: the #GdaDataModel
+        * @row: the row number
+        *
+        * Gets emitted when a row has been inserted in @model
+        */
+       gda_data_model_signals[ROW_INSERTED] =
+               g_signal_new ("row-inserted",
+                             GDA_TYPE_DATA_MODEL,
+                             G_SIGNAL_RUN_LAST,
+                             G_STRUCT_OFFSET (GdaDataModelInterface, row_inserted),
+                             NULL, NULL,
+                             g_cclosure_marshal_VOID__INT,
+                             G_TYPE_NONE, 1, G_TYPE_INT);
+       /**
+        * GdaDataModel::row-updated:
+        * @model: the #GdaDataModel
+        * @row: the row number
+        *
+        * Gets emitted when a row has been modified in @model
+        */
+       gda_data_model_signals[ROW_UPDATED] =
+               g_signal_new ("row-updated",
+                             GDA_TYPE_DATA_MODEL,
+                             G_SIGNAL_RUN_LAST,
+                             G_STRUCT_OFFSET (GdaDataModelInterface, row_updated),
+                             NULL, NULL,
+                             g_cclosure_marshal_VOID__INT,
+                             G_TYPE_NONE, 1, G_TYPE_INT);
+       /**
+        * GdaDataModel::row-removed:
+        * @model: the #GdaDataModel
+        * @row: the row number
+        *
+        * Gets emitted when a row has been removed from @model
+        */
+       gda_data_model_signals[ROW_REMOVED] =
+               g_signal_new ("row-removed",
+                             GDA_TYPE_DATA_MODEL,
+                             G_SIGNAL_RUN_LAST,
+                             G_STRUCT_OFFSET (GdaDataModelInterface, row_removed),
+                             NULL, NULL,
+                             g_cclosure_marshal_VOID__INT,
+                             G_TYPE_NONE, 1, G_TYPE_INT);
+       /**
+        * GdaDataModel::reset:
+        * @model: the #GdaDataModel
+        *
+        * Gets emitted when @model's contents has been completely reset (the number and
+        * type of columns may also have changed)
+        */
+       gda_data_model_signals[RESET] =
+               g_signal_new ("reset",
+                             GDA_TYPE_DATA_MODEL,
+                             G_SIGNAL_RUN_LAST,
+                             G_STRUCT_OFFSET (GdaDataModelInterface, reset),
+                             NULL, NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                             G_TYPE_NONE, 0);
+
+       /**
+        * GdaDataModel::access-changed:
+        * @model: the #GdaDataModel
+        *
+        * Gets emitted when @model's access flags have changed. Use
+        * gda_data_model_get_access_flags() to get the access flags.
+        */
+       gda_data_model_signals[ACCESS_CHANGED] =
+               g_signal_new ("access-changed",
+                             GDA_TYPE_DATA_MODEL,
+                             G_SIGNAL_RUN_LAST,
+                             G_STRUCT_OFFSET (GdaDataModelInterface, access_changed),
+                             NULL, NULL,
+                             g_cclosure_marshal_VOID__VOID,
+                             G_TYPE_NONE, 0);
+}
+
 /* module error */
 GQuark gda_data_model_error_quark (void)
 {
@@ -101,144 +195,12 @@ GQuark gda_data_model_error_quark (void)
         return quark;
 }
 
-GType
-gda_data_model_get_type (void)
-{
-       static GType type = 0;
-
-       if (G_UNLIKELY (type == 0)) {
-               static const GTypeInfo info = {
-                       sizeof (GdaDataModelIface),
-                       (GBaseInitFunc) gda_data_model_class_init,
-                       (GBaseFinalizeFunc) NULL,
-                       (GClassInitFunc) NULL,
-                       NULL,
-                       NULL,
-                       0,
-                       0,
-                       (GInstanceInitFunc) NULL,
-                       0
-               };
-               
-               MUTEX_LOCK();
-               if (type == 0) {
-                       type = g_type_register_static (G_TYPE_INTERFACE, "GdaDataModel", &info, 0);
-                       g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
-               }
-               MUTEX_UNLOCK();
-       }
-       return type;
-}
-
-static void
-gda_data_model_class_init (G_GNUC_UNUSED gpointer g_class)
-{
-       static gboolean initialized = FALSE;
-
-       MUTEX_LOCK();
-       if (! initialized) {
-               /**
-                * GdaDataModel::changed:
-                * @model: the #GdaDataModel
-                *
-                * Gets emitted when any value in @model has been changed
-                */
-               gda_data_model_signals[CHANGED] =
-                       g_signal_new ("changed",
-                                     GDA_TYPE_DATA_MODEL,
-                                     G_SIGNAL_RUN_LAST,
-                                     G_STRUCT_OFFSET (GdaDataModelIface, changed),
-                                     NULL, NULL,
-                                     g_cclosure_marshal_VOID__VOID,
-                                     G_TYPE_NONE, 0);
-               /**
-                * GdaDataModel::row-inserted:
-                * @model: the #GdaDataModel
-                * @row: the row number
-                *
-                * Gets emitted when a row has been inserted in @model
-                */
-               gda_data_model_signals[ROW_INSERTED] =
-                       g_signal_new ("row-inserted",
-                                     GDA_TYPE_DATA_MODEL,
-                                     G_SIGNAL_RUN_LAST,
-                                     G_STRUCT_OFFSET (GdaDataModelIface, row_inserted),
-                                     NULL, NULL,
-                                     g_cclosure_marshal_VOID__INT,
-                                     G_TYPE_NONE, 1, G_TYPE_INT);
-               /**
-                * GdaDataModel::row-updated:
-                * @model: the #GdaDataModel
-                * @row: the row number
-                *
-                * Gets emitted when a row has been modified in @model
-                */
-               gda_data_model_signals[ROW_UPDATED] =
-                       g_signal_new ("row-updated",
-                                     GDA_TYPE_DATA_MODEL,
-                                     G_SIGNAL_RUN_LAST,
-                                     G_STRUCT_OFFSET (GdaDataModelIface, row_updated),
-                                     NULL, NULL,
-                                     g_cclosure_marshal_VOID__INT,
-                                     G_TYPE_NONE, 1, G_TYPE_INT);
-               /**
-                * GdaDataModel::row-removed:
-                * @model: the #GdaDataModel
-                * @row: the row number
-                *
-                * Gets emitted when a row has been removed from @model
-                */
-               gda_data_model_signals[ROW_REMOVED] =
-                       g_signal_new ("row-removed",
-                                     GDA_TYPE_DATA_MODEL,
-                                     G_SIGNAL_RUN_LAST,
-                                     G_STRUCT_OFFSET (GdaDataModelIface, row_removed),
-                                     NULL, NULL,
-                                     g_cclosure_marshal_VOID__INT,
-                                     G_TYPE_NONE, 1, G_TYPE_INT);
-               /**
-                * GdaDataModel::reset:
-                * @model: the #GdaDataModel
-                *
-                * Gets emitted when @model's contents has been completely reset (the number and
-                * type of columns may also have changed)
-                */
-               gda_data_model_signals[RESET] =
-                       g_signal_new ("reset",
-                                     GDA_TYPE_DATA_MODEL,
-                                     G_SIGNAL_RUN_LAST,
-                                     G_STRUCT_OFFSET (GdaDataModelIface, reset),
-                                     NULL, NULL,
-                                     g_cclosure_marshal_VOID__VOID,
-                                     G_TYPE_NONE, 0);
-
-               /**
-                * GdaDataModel::access-changed:
-                * @model: the #GdaDataModel
-                *
-                * Gets emitted when @model's access flags have changed. Use
-                * gda_data_model_get_access_flags() to get the access flags.
-                */
-               gda_data_model_signals[ACCESS_CHANGED] =
-                       g_signal_new ("access-changed",
-                                     GDA_TYPE_DATA_MODEL,
-                                     G_SIGNAL_RUN_LAST,
-                                     G_STRUCT_OFFSET (GdaDataModelIface, access_changed),
-                                     NULL, NULL,
-                                     g_cclosure_marshal_VOID__VOID,
-                                     G_TYPE_NONE, 0);
-
-               initialized = TRUE;
-       }
-       MUTEX_UNLOCK();
-}
-
 static gboolean
 do_notify_changes (GdaDataModel *model)
 {
        gboolean notify_changes = TRUE;
-       if (GDA_DATA_MODEL_GET_CLASS (model)->get_notify)
-               notify_changes = (GDA_DATA_MODEL_GET_CLASS (model)->get_notify) (model);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->get_notify)
+               notify_changes = (GDA_DATA_MODEL_GET_IFACE (model)->get_notify) (model);
        return notify_changes;
 }
 
@@ -381,8 +343,8 @@ gda_data_model_freeze (GdaDataModel *model)
 {
        g_return_if_fail (GDA_IS_DATA_MODEL (model));
        
-       if (GDA_DATA_MODEL_GET_CLASS (model)->freeze)
-               (GDA_DATA_MODEL_GET_CLASS (model)->freeze) (model);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->freeze)
+               (GDA_DATA_MODEL_GET_IFACE (model)->freeze) (model);
 }
 
 /**
@@ -396,8 +358,8 @@ gda_data_model_thaw (GdaDataModel *model)
 {
        g_return_if_fail (GDA_IS_DATA_MODEL (model));
 
-       if (GDA_DATA_MODEL_GET_CLASS (model)->thaw)
-               (GDA_DATA_MODEL_GET_CLASS (model)->thaw) (model);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->thaw)
+               (GDA_DATA_MODEL_GET_IFACE (model)->thaw) (model);
 }
 
 /**
@@ -410,8 +372,8 @@ gboolean
 gda_data_model_get_notify (GdaDataModel *model)
 {
        g_return_val_if_fail (GDA_IS_DATA_MODEL (model), FALSE);
-       if (GDA_DATA_MODEL_GET_CLASS (model)->get_notify)
-               return (GDA_DATA_MODEL_GET_CLASS (model)->get_notify) (model);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->get_notify)
+               return (GDA_DATA_MODEL_GET_IFACE (model)->get_notify) (model);
        else
                return TRUE;
 }
@@ -429,8 +391,8 @@ GdaDataModelAccessFlags
 gda_data_model_get_access_flags (GdaDataModel *model)
 {
        g_return_val_if_fail (GDA_IS_DATA_MODEL (model), 0);
-       if (GDA_DATA_MODEL_GET_CLASS (model)->get_access_flags) {
-               GdaDataModelAccessFlags flags = (GDA_DATA_MODEL_GET_CLASS (model)->get_access_flags) (model);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->get_access_flags) {
+               GdaDataModelAccessFlags flags = (GDA_DATA_MODEL_GET_IFACE (model)->get_access_flags) (model);
                if (flags & GDA_DATA_MODEL_ACCESS_RANDOM)
                        flags |= GDA_DATA_MODEL_ACCESS_CURSOR_FORWARD | GDA_DATA_MODEL_ACCESS_CURSOR_BACKWARD;
                return flags;
@@ -450,8 +412,8 @@ gda_data_model_get_n_rows (GdaDataModel *model)
 {
        g_return_val_if_fail (GDA_IS_DATA_MODEL (model), -1);
 
-       if (GDA_DATA_MODEL_GET_CLASS (model)->get_n_rows)
-               return (GDA_DATA_MODEL_GET_CLASS (model)->get_n_rows) (model);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->get_n_rows)
+               return (GDA_DATA_MODEL_GET_IFACE (model)->get_n_rows) (model);
        else 
                return -1;
 }
@@ -467,8 +429,8 @@ gda_data_model_get_n_columns (GdaDataModel *model)
 {
        g_return_val_if_fail (GDA_IS_DATA_MODEL (model), -1);
        
-       if (GDA_DATA_MODEL_GET_CLASS (model)->get_n_columns)
-               return (GDA_DATA_MODEL_GET_CLASS (model)->get_n_columns) (model);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->get_n_columns)
+               return (GDA_DATA_MODEL_GET_IFACE (model)->get_n_columns) (model);
        else {
                /* method not supported */
                return -1;
@@ -495,8 +457,8 @@ gda_data_model_describe_column (GdaDataModel *model, gint col)
 {
        g_return_val_if_fail (GDA_IS_DATA_MODEL (model), NULL);
 
-       if (GDA_DATA_MODEL_GET_CLASS (model)->describe_column)
-               return (GDA_DATA_MODEL_GET_CLASS (model)->describe_column) (model, col);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->describe_column)
+               return (GDA_DATA_MODEL_GET_IFACE (model)->describe_column) (model, col);
        else {
                /* method not supported */
                return NULL;
@@ -667,8 +629,8 @@ gda_data_model_get_value_at (GdaDataModel *model, gint col, gint row, GError **e
 {
        g_return_val_if_fail (GDA_IS_DATA_MODEL (model), NULL);
 
-       if (GDA_DATA_MODEL_GET_CLASS (model)->get_value_at)
-               return (GDA_DATA_MODEL_GET_CLASS (model)->get_value_at) (model, col, row, error);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->get_value_at)
+               return (GDA_DATA_MODEL_GET_IFACE (model)->get_value_at) (model, col, row, error);
        else {
                /* method not supported */
                g_set_error (error, GDA_DATA_MODEL_ERROR, GDA_DATA_MODEL_FEATURE_NON_SUPPORTED_ERROR,
@@ -707,8 +669,8 @@ gda_data_model_get_typed_value_at (GdaDataModel *model, gint col, gint row, GTyp
        const GValue *cvalue = NULL;
        g_return_val_if_fail (GDA_IS_DATA_MODEL (model), NULL);
 
-       if (GDA_DATA_MODEL_GET_CLASS (model)->get_value_at)
-               cvalue = (GDA_DATA_MODEL_GET_CLASS (model)->get_value_at) (model, col, row, error);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->get_value_at)
+               cvalue = (GDA_DATA_MODEL_GET_IFACE (model)->get_value_at) (model, col, row, error);
 
        if (cvalue) {
                if (nullok && 
@@ -751,8 +713,8 @@ gda_data_model_get_attributes_at (GdaDataModel *model, gint col, gint row)
 {
        g_return_val_if_fail (GDA_IS_DATA_MODEL (model), 0);
 
-       if (GDA_DATA_MODEL_GET_CLASS (model)->get_attributes_at)
-               return (GDA_DATA_MODEL_GET_CLASS (model)->get_attributes_at) (model, col, row);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->get_attributes_at)
+               return (GDA_DATA_MODEL_GET_IFACE (model)->get_attributes_at) (model, col, row);
        else {
                GdaDataModelAccessFlags flags;
                GdaValueAttribute attrs = GDA_VALUE_ATTR_NO_MODIF;
@@ -783,8 +745,8 @@ gda_data_model_set_value_at (GdaDataModel *model, gint col, gint row, const GVal
 {
        g_return_val_if_fail (GDA_IS_DATA_MODEL (model), FALSE);
 
-       if (GDA_DATA_MODEL_GET_CLASS (model)->set_value_at)
-               return (GDA_DATA_MODEL_GET_CLASS (model)->set_value_at) (model, col, row, value, error);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->set_value_at)
+               return (GDA_DATA_MODEL_GET_IFACE (model)->set_value_at) (model, col, row, value, error);
        else {
                /* method not supported */
                g_set_error (error, GDA_DATA_MODEL_ERROR, GDA_DATA_MODEL_FEATURE_NON_SUPPORTED_ERROR,
@@ -817,9 +779,9 @@ gda_data_model_set_values (GdaDataModel *model, gint row, GList *values, GError
        g_return_val_if_fail (GDA_IS_DATA_MODEL (model), FALSE);
        
 
-       if (GDA_DATA_MODEL_GET_CLASS (model)->set_values)
-               return (GDA_DATA_MODEL_GET_CLASS (model)->set_values) (model, row, values, error);
-       else if (GDA_DATA_MODEL_GET_CLASS (model)->set_value_at) {
+       if (GDA_DATA_MODEL_GET_IFACE (model)->set_values)
+               return (GDA_DATA_MODEL_GET_IFACE (model)->set_values) (model, row, values, error);
+       else if (GDA_DATA_MODEL_GET_IFACE (model)->set_value_at) {
                /* save the values */
                gint col, ncols;
                ncols = gda_data_model_get_n_columns (model);
@@ -886,8 +848,8 @@ gda_data_model_create_iter (GdaDataModel *model)
 
        GdaDataModelIter *iter = NULL;
 
-       if (GDA_DATA_MODEL_GET_CLASS (model)->create_iter)
-               iter = (GDA_DATA_MODEL_GET_CLASS (model)->create_iter) (model);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->create_iter)
+               iter = (GDA_DATA_MODEL_GET_IFACE (model)->create_iter) (model);
        else
                /* default method */
                iter = GDA_DATA_MODEL_ITER (g_object_new (GDA_TYPE_DATA_MODEL_ITER,
@@ -916,8 +878,8 @@ gda_data_model_append_values (GdaDataModel *model, const GList *values, GError *
 {
        g_return_val_if_fail (GDA_IS_DATA_MODEL (model), -1);
 
-       if (GDA_DATA_MODEL_GET_CLASS (model)->append_values)
-               return (GDA_DATA_MODEL_GET_CLASS (model)->append_values) (model, values, error);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->append_values)
+               return (GDA_DATA_MODEL_GET_IFACE (model)->append_values) (model, values, error);
        else {
                /* method not supported */
                g_set_error (error, GDA_DATA_MODEL_ERROR, GDA_DATA_MODEL_FEATURE_NON_SUPPORTED_ERROR,
@@ -950,8 +912,8 @@ gda_data_model_append_row (GdaDataModel *model, GError **error)
                return -1;
        }
 
-       if (GDA_DATA_MODEL_GET_CLASS (model)->append_row)
-               return (GDA_DATA_MODEL_GET_CLASS (model)->append_row) (model, error);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->append_row)
+               return (GDA_DATA_MODEL_GET_IFACE (model)->append_row) (model, error);
        else {
                /* method not supported */
                g_set_error (error, GDA_DATA_MODEL_ERROR, GDA_DATA_MODEL_FEATURE_NON_SUPPORTED_ERROR,
@@ -985,8 +947,8 @@ gda_data_model_remove_row (GdaDataModel *model, gint row, GError **error)
                return FALSE;
        }
 
-       if (GDA_DATA_MODEL_GET_CLASS (model)->remove_row)
-               return (GDA_DATA_MODEL_GET_CLASS (model)->remove_row) (model, row, error);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->remove_row)
+               return (GDA_DATA_MODEL_GET_IFACE (model)->remove_row) (model, row, error);
        else {
                /* method not supported */
                g_set_error (error, GDA_DATA_MODEL_ERROR, GDA_DATA_MODEL_FEATURE_NON_SUPPORTED_ERROR,
@@ -1017,8 +979,8 @@ gda_data_model_get_row_from_values (GdaDataModel *model, GSList *values, gint *c
        g_return_val_if_fail (GDA_IS_DATA_MODEL (model), -1);
        g_return_val_if_fail (values, -1);
 
-       if (GDA_DATA_MODEL_GET_CLASS (model)->find_row)
-               return (GDA_DATA_MODEL_GET_CLASS (model)->find_row) (model, values, cols_index);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->find_row)
+               return (GDA_DATA_MODEL_GET_IFACE (model)->find_row) (model, values, cols_index);
 
         n_rows = gda_data_model_get_n_rows (model);
         n_cols = gda_data_model_get_n_columns (model);
@@ -1081,8 +1043,8 @@ gda_data_model_send_hint (GdaDataModel *model, GdaDataModelHint hint, const GVal
 {
        g_return_if_fail (GDA_IS_DATA_MODEL (model));
 
-       if (GDA_DATA_MODEL_GET_CLASS (model)->send_hint)
-               (GDA_DATA_MODEL_GET_CLASS (model)->send_hint) (model, hint, hint_value);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->send_hint)
+               (GDA_DATA_MODEL_GET_IFACE (model)->send_hint) (model, hint, hint_value);
 }
 
 /**
@@ -1103,8 +1065,8 @@ gda_data_model_get_exceptions (GdaDataModel *model)
 {
        g_return_val_if_fail (GDA_IS_DATA_MODEL (model), NULL);
 
-       if (GDA_DATA_MODEL_GET_CLASS (model)->get_exceptions)
-               return (GDA_DATA_MODEL_GET_CLASS (model)->get_exceptions) (model);
+       if (GDA_DATA_MODEL_GET_IFACE (model)->get_exceptions)
+               return (GDA_DATA_MODEL_GET_IFACE (model)->get_exceptions) (model);
        else
                return NULL;
 }
diff --git a/libgda/gda-data-model.h b/libgda/gda-data-model.h
index 89cbd523d..65b901119 100644
--- a/libgda/gda-data-model.h
+++ b/libgda/gda-data-model.h
@@ -6,7 +6,7 @@
  * Copyright (C) 2005 - 2014 Vivien Malerba <malerba gnome-db org>
  * Copyright (C) 2005 Álvaro Peña <alvaropg telefonica net>
  * Copyright (C) 2007 Murray Cumming <murrayc murrayc com>
- * Copyright (C) 2011 Daniel Espinosa <despinosa src gnome org>
+ * Copyright (C) 2011,2019 Daniel Espinosa <esodan gmail com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -38,11 +38,6 @@
 
 G_BEGIN_DECLS
 
-#define GDA_TYPE_DATA_MODEL            (gda_data_model_get_type())
-#define GDA_DATA_MODEL(obj)            (G_TYPE_CHECK_INSTANCE_CAST (obj, GDA_TYPE_DATA_MODEL, GdaDataModel))
-#define GDA_IS_DATA_MODEL(obj)         (G_TYPE_CHECK_INSTANCE_TYPE (obj, GDA_TYPE_DATA_MODEL))
-#define GDA_DATA_MODEL_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GDA_TYPE_DATA_MODEL, 
GdaDataModelIface))
-
 /* error reporting */
 extern GQuark gda_data_model_error_quark (void);
 #define GDA_DATA_MODEL_ERROR gda_data_model_error_quark ()
@@ -95,8 +90,12 @@ typedef enum {
        GDA_DATA_MODEL_OTHER_ERROR
 } GdaDataModelError;
 
+
+#define GDA_TYPE_DATA_MODEL            (gda_data_model_get_type())
+G_DECLARE_INTERFACE (GdaDataModel, gda_data_model, GDA, DATA_MODEL, GObject)
+
 /* struct for the interface */
-struct _GdaDataModelIface {
+struct _GdaDataModelInterface {
        GTypeInterface           g_iface;
 
        /* virtual table */
@@ -183,8 +182,6 @@ struct _GdaDataModelIface {
  * Finally, the #GdaDataModel object implements its own locking mechanism and can be used simultaneously 
from several threads.
  */
 
-GType               gda_data_model_get_type               (void) G_GNUC_CONST;
-
 GdaDataModelAccessFlags gda_data_model_get_access_flags   (GdaDataModel *model);
 
 gint                gda_data_model_get_n_rows             (GdaDataModel *model);
diff --git a/libgda/gda-data-pivot.c b/libgda/gda-data-pivot.c
index df458a7cd..72e1f80a4 100644
--- a/libgda/gda-data-pivot.c
+++ b/libgda/gda-data-pivot.c
@@ -1,6 +1,7 @@
 /*
  * Copyright (C) 2011 Murray Cumming <murrayc murrayc com>
  * Copyright (C) 2011 - 2014 Vivien Malerba <malerba gnome-db org>
+ * Copyright (C) 2019 Daniel Espinosa <esodan gmail com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -113,7 +114,7 @@ static gboolean bind_source_model (GdaDataPivot *pivot, GError **error);
 static void clean_previous_population (GdaDataPivot *pivot);
 
 /* GdaDataModel interface */
-static void                 gda_data_pivot_data_model_init (GdaDataModelIface *iface);
+static void                 gda_data_pivot_data_model_init (GdaDataModelInterface *iface);
 static gint                 gda_data_pivot_get_n_rows      (GdaDataModel *model);
 static gint                 gda_data_pivot_get_n_columns   (GdaDataModel *model);
 static GdaColumn           *gda_data_pivot_describe_column (GdaDataModel *model, gint col);
@@ -188,7 +189,7 @@ gda_data_pivot_class_init (GdaDataPivotClass *klass)
 #define gda_data_pivot_get_instance_private(obj) G_TYPE_INSTANCE_GET_PRIVATE(obj, GDA_TYPE_DATA_PIVOT, 
GdaDataPivotPrivate)
 
 static void
-gda_data_pivot_data_model_init (GdaDataModelIface *iface)
+gda_data_pivot_data_model_init (GdaDataModelInterface *iface)
 {
        iface->get_n_rows = gda_data_pivot_get_n_rows;
        iface->get_n_columns = gda_data_pivot_get_n_columns;
diff --git a/libgda/gda-data-proxy.c b/libgda/gda-data-proxy.c
index 4f66bc020..1457ba078 100644
--- a/libgda/gda-data-proxy.c
+++ b/libgda/gda-data-proxy.c
@@ -8,7 +8,7 @@
  * Copyright (C) 2010 Jonh Wendell <jwendell gnome org>
  * Copyright (C) 2011 - 2012, 2018 Daniel Espinosa <despinosa src gnome org>
  * Copyright (C) 2013 Miguel Angel Cabrera Moya <madmac2501 gmail com>
- * Copyright (C) 2018 Daniel Espinosa <esodan gmail com>
+ * Copyright (C) 2018-2019 Daniel Espinosa <esodan gmail com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -68,7 +68,7 @@ static void gda_data_proxy_get_property (GObject *object,
                                         GValue *value,
                                         GParamSpec *pspec);
 /* GdaDataModel interface */
-static void                 gda_data_proxy_data_model_init (GdaDataModelIface *iface);
+static void                 gda_data_proxy_data_model_init (GdaDataModelInterface *iface);
 
 static gint                 gda_data_proxy_get_n_rows      (GdaDataModel *model);
 static gint                 gda_data_proxy_get_n_columns   (GdaDataModel *model);
@@ -697,7 +697,7 @@ gda_data_proxy_class_init (GdaDataProxyClass *klass)
 }
 
 static void
-gda_data_proxy_data_model_init (GdaDataModelIface *iface)
+gda_data_proxy_data_model_init (GdaDataModelInterface *iface)
 {
        iface->get_n_rows = gda_data_proxy_get_n_rows;
        iface->get_n_columns = gda_data_proxy_get_n_columns;
diff --git a/libgda/gda-data-select.c b/libgda/gda-data-select.c
index 33feda23f..da3c98ee6 100644
--- a/libgda/gda-data-select.c
+++ b/libgda/gda-data-select.c
@@ -5,7 +5,7 @@
  * Copyright (C) 2010 David King <davidk openismus com>
  * Copyright (C) 2010 Jonh Wendell <jwendell gnome org>
  * Copyright (C) 2013 Miguel Angel Cabrera Moya <madmac2501 gmail com>
- * Copyright (C) 2012,2018 Daniel Espinosa <esodan gmail com>
+ * Copyright (C) 2012,2018-2019 Daniel Espinosa <esodan gmail com>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -97,7 +97,7 @@ typedef struct {
 
 
 /* GdaDataModel interface */
-static void                 gda_data_select_data_model_init (GdaDataModelIface *iface);
+static void                 gda_data_select_data_model_init (GdaDataModelInterface *iface);
 static gint                 gda_data_select_get_n_rows      (GdaDataModel *model);
 static gint                 gda_data_select_get_n_columns   (GdaDataModel *model);
 static GdaColumn           *gda_data_select_describe_column (GdaDataModel *model, gint col);
@@ -349,7 +349,7 @@ gda_data_select_class_init (GdaDataSelectClass *klass)
 }
 
 static void
-gda_data_select_data_model_init (GdaDataModelIface *iface)
+gda_data_select_data_model_init (GdaDataModelInterface *iface)
 {
        iface->get_n_rows = gda_data_select_get_n_rows;
        iface->get_n_columns = gda_data_select_get_n_columns;
diff --git a/tests/data-model-errors.c b/tests/data-model-errors.c
index 624aa2a43..ea3e319ff 100644
--- a/tests/data-model-errors.c
+++ b/tests/data-model-errors.c
@@ -2,6 +2,7 @@
  * Copyright (C) 2010 David King <davidk openismus com>
  * Copyright (C) 2010 - 2013 Vivien Malerba <malerba gnome-db org>
  * Copyright (C) 2011 Murray Cumming <murrayc murrayc com>
+ * Copyright (C) 2019 Daniel Espinosa <esodan gmail com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -53,7 +54,7 @@ static void data_model_errors_init       (DataModelErrors *model,
 static void data_model_errors_dispose    (GObject *object);
 
 /* GdaDataModel interface */
-static void                 data_model_errors_data_model_init (GdaDataModelIface *iface);
+static void                 data_model_errors_data_model_init (GdaDataModelInterface *iface);
 static gint                 data_model_errors_get_n_rows      (GdaDataModel *model);
 static gint                 data_model_errors_get_n_columns   (GdaDataModel *model);
 static GdaColumn           *data_model_errors_describe_column (GdaDataModel *model, gint col);
@@ -72,7 +73,7 @@ static GObjectClass *parent_class = NULL;
  * Object init and dispose
  */
 static void
-data_model_errors_data_model_init (GdaDataModelIface *iface)
+data_model_errors_data_model_init (GdaDataModelInterface *iface)
 {
         iface->get_n_rows = data_model_errors_get_n_rows;
         iface->get_n_columns = data_model_errors_get_n_columns;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]