[libgda] GdaPostgresHandlerBin: ported to G_DECLARE/G_DEFINE
- From: Daniel Espinosa Ortiz <despinosa src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda] GdaPostgresHandlerBin: ported to G_DECLARE/G_DEFINE
- Date: Fri, 5 Apr 2019 23:00:11 +0000 (UTC)
commit 02f18da526b193c968e36d4261f5b13bed99ec14
Author: Daniel Espinosa <esodan gmail com>
Date: Fri Apr 5 11:35:27 2019 -0600
GdaPostgresHandlerBin: ported to G_DECLARE/G_DEFINE
providers/postgres/gda-postgres-handler-bin.c | 80 +++++++--------------------
providers/postgres/gda-postgres-handler-bin.h | 21 +------
2 files changed, 23 insertions(+), 78 deletions(-)
---
diff --git a/providers/postgres/gda-postgres-handler-bin.c b/providers/postgres/gda-postgres-handler-bin.c
index b8fd8091c..fe0014fff 100644
--- a/providers/postgres/gda-postgres-handler-bin.c
+++ b/providers/postgres/gda-postgres-handler-bin.c
@@ -4,6 +4,7 @@
* Copyright (C) 2007 - 2014 Vivien Malerba <malerba gnome-db org>
* Copyright (C) 2009 Bas Driessen <bas driessen xobas com>
* 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
@@ -45,48 +46,13 @@ static gboolean gda_postgres_handler_bin_accepts_g_type (GdaDataHand
static const gchar *gda_postgres_handler_bin_get_descr (GdaDataHandler *dh);
-struct _GdaPostgresHandlerBinPriv {
- GdaConnection *cnc;
-};
+typedef struct {
+ GWeakRef cnc;
+} GdaPostgresHandlerBinPrivate;
-/* get a pointer to the parents to be able to call their destructor */
-static GObjectClass *parent_class = NULL;
-
-GType
-gda_postgres_handler_bin_get_type (void)
-{
- static GType type = 0;
-
- if (G_UNLIKELY (type == 0)) {
- static GMutex registering;
- static const GTypeInfo info = {
- sizeof (GdaPostgresHandlerBinClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) gda_postgres_handler_bin_class_init,
- NULL,
- NULL,
- sizeof (GdaPostgresHandlerBin),
- 0,
- (GInstanceInitFunc) gda_postgres_handler_bin_init,
- NULL
- };
-
- static const GInterfaceInfo data_entry_info = {
- (GInterfaceInitFunc) gda_postgres_handler_bin_data_handler_init,
- NULL,
- NULL
- };
-
- g_mutex_lock (®istering);
- if (type == 0) {
- type = g_type_register_static (G_TYPE_OBJECT, "GdaPostgresHandlerBin", &info, 0);
- g_type_add_interface_static (type, GDA_TYPE_DATA_HANDLER, &data_entry_info);
- }
- g_mutex_unlock (®istering);
- }
- return type;
-}
+G_DEFINE_TYPE_WITH_CODE (GdaPostgresHandlerBin, gda_postgres_handler_bin, G_TYPE_OBJECT,
+ G_ADD_PRIVATE (GdaPostgresHandlerBin)
+ G_IMPLEMENT_INTERFACE (GDA_TYPE_DATA_HANDLER,
gda_postgres_handler_bin_data_handler_init))
static void
gda_postgres_handler_bin_data_handler_init (GdaDataHandlerInterface *iface)
@@ -106,8 +72,6 @@ gda_postgres_handler_bin_class_init (GdaPostgresHandlerBinClass * class)
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
- parent_class = g_type_class_peek_parent (class);
-
object_class->dispose = gda_postgres_handler_bin_dispose;
}
@@ -115,7 +79,8 @@ static void
gda_postgres_handler_bin_init (GdaPostgresHandlerBin * hdl)
{
/* Private structure */
- hdl->priv = g_new0 (GdaPostgresHandlerBinPriv, 1);
+ GdaPostgresHandlerBinPrivate *priv = gda_postgres_handler_bin_get_instance_private (hdl);
+ g_weak_ref_init (&priv->cnc, NULL);
g_object_set_data (G_OBJECT (hdl), "name", _("PostgresqlBin"));
g_object_set_data (G_OBJECT (hdl), "descr", _("PostgreSQL binary representation"));
}
@@ -129,17 +94,12 @@ gda_postgres_handler_bin_dispose (GObject * object)
g_return_if_fail (GDA_IS_POSTGRES_HANDLER_BIN (object));
hdl = GDA_POSTGRES_HANDLER_BIN (object);
+ GdaPostgresHandlerBinPrivate *priv = gda_postgres_handler_bin_get_instance_private (hdl);
- if (hdl->priv) {
- if (hdl->priv->cnc)
- g_object_remove_weak_pointer (G_OBJECT (hdl->priv->cnc), (gpointer)
&(hdl->priv->cnc));
-
- g_free (hdl->priv);
- hdl->priv = NULL;
- }
+ g_weak_ref_clear (&priv->cnc);
/* for the parent class */
- parent_class->dispose (object);
+ G_OBJECT_CLASS (gda_postgres_handler_bin_parent_class)->dispose (object);
}
/**
@@ -157,11 +117,9 @@ gda_postgres_handler_bin_new (GdaConnection *cnc)
obj = g_object_new (GDA_TYPE_POSTGRES_HANDLER_BIN, NULL);
hdl = (GdaPostgresHandlerBin*) obj;
+ GdaPostgresHandlerBinPrivate *priv = gda_postgres_handler_bin_get_instance_private (hdl);
- if (cnc) {
- hdl->priv->cnc = cnc;
- g_object_add_weak_pointer (G_OBJECT (cnc), (gpointer) &(hdl->priv->cnc));
- }
+ g_weak_ref_set (&priv->cnc, cnc);
return (GdaDataHandler *) obj;
}
@@ -175,14 +133,18 @@ gda_postgres_handler_bin_get_sql_from_value (GdaDataHandler *iface, const GValue
gchar *retval;
GdaPostgresHandlerBin *hdl;
PostgresConnectionData *cdata = NULL;
+ GdaConnection *cnc = NULL;
g_return_val_if_fail (GDA_IS_POSTGRES_HANDLER_BIN (iface), NULL);
hdl = (GdaPostgresHandlerBin*) (iface);
+ GdaPostgresHandlerBinPrivate *priv = gda_postgres_handler_bin_get_instance_private (hdl);
- if (hdl->priv->cnc) {
- g_return_val_if_fail (GDA_IS_CONNECTION (hdl->priv->cnc), NULL);
- cdata = (PostgresConnectionData*) gda_connection_internal_get_provider_data_error
(hdl->priv->cnc, NULL);
+ cnc = g_weak_ref_get (&priv->cnc);
+ if (cnc) {
+ g_return_val_if_fail (GDA_IS_CONNECTION (cnc), NULL);
+ cdata = (PostgresConnectionData*) gda_connection_internal_get_provider_data_error (cnc, NULL);
+ g_object_unref (cnc);
}
GdaBinary *data = (GdaBinary *) gda_value_get_binary ((GValue *) value);
diff --git a/providers/postgres/gda-postgres-handler-bin.h b/providers/postgres/gda-postgres-handler-bin.h
index 1b2e95861..94f34de17 100644
--- a/providers/postgres/gda-postgres-handler-bin.h
+++ b/providers/postgres/gda-postgres-handler-bin.h
@@ -2,6 +2,7 @@
* Copyright (C) 2007 Armin Burgmeier <armin openismus com>
* Copyright (C) 2007 Murray Cumming <murrayc murrayc com>
* Copyright (C) 2007 - 2012 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
@@ -27,24 +28,7 @@
G_BEGIN_DECLS
#define GDA_TYPE_POSTGRES_HANDLER_BIN (gda_postgres_handler_bin_get_type())
-#define GDA_POSTGRES_HANDLER_BIN(obj) G_TYPE_CHECK_INSTANCE_CAST (obj,
GDA_TYPE_POSTGRES_HANDLER_BIN, GdaPostgresHandlerBin)
-#define GDA_POSTGRES_HANDLER_BIN_CLASS(klass) G_TYPE_CHECK_CLASS_CAST (klass,
GDA_TYPE_POSTGRES_HANDLER_BIN, GdaPostgresHandlerBinClass)
-#define GDA_IS_POSTGRES_HANDLER_BIN(obj) G_TYPE_CHECK_INSTANCE_TYPE (obj,
GDA_TYPE_POSTGRES_HANDLER_BIN)
-
-
-typedef struct _GdaPostgresHandlerBin GdaPostgresHandlerBin;
-typedef struct _GdaPostgresHandlerBinClass GdaPostgresHandlerBinClass;
-typedef struct _GdaPostgresHandlerBinPriv GdaPostgresHandlerBinPriv;
-
-
-/* struct for the object's data */
-struct _GdaPostgresHandlerBin
-{
- GObject object;
-
- GdaPostgresHandlerBinPriv *priv;
-};
-
+G_DECLARE_DERIVABLE_TYPE (GdaPostgresHandlerBin, gda_postgres_handler_bin, GDA, POSTGRES_HANDLER_BIN,
GObject)
/* struct for the object's class */
struct _GdaPostgresHandlerBinClass
{
@@ -52,7 +36,6 @@ struct _GdaPostgresHandlerBinClass
};
-GType gda_postgres_handler_bin_get_type (void) G_GNUC_CONST;
GdaDataHandler *gda_postgres_handler_bin_new (GdaConnection *cnc);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]