[balsa] toolbar-model: Declare it final



commit 7369460db5c6a5cf700e74ffda7f703f5f4a3af4
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Tue May 1 18:17:54 2018 -0400

    toolbar-model: Declare it final
    
    The object structure is already private.

 src/toolbar-factory.c | 57 ++++++++++++++++-----------------------------------
 src/toolbar-factory.h | 25 ++++++----------------
 2 files changed, 24 insertions(+), 58 deletions(-)
---
diff --git a/src/toolbar-factory.c b/src/toolbar-factory.c
index f26b29f94..799d2ccdb 100644
--- a/src/toolbar-factory.c
+++ b/src/toolbar-factory.c
@@ -42,7 +42,7 @@ static const gchar *const balsa_toolbar_names[] =
  * The BalsaToolbarModel class.
  */
 
-struct BalsaToolbarModel_ {
+struct _BalsaToolbarModel {
     GObject object;
 
     GHashTable      *legal;
@@ -58,23 +58,30 @@ enum {
     LAST_SIGNAL
 };
 
-static GObjectClass* parent_class;
 static guint model_signals[LAST_SIGNAL] = { 0 };
 
+G_DEFINE_TYPE(BalsaToolbarModel, balsa_toolbar_model, G_TYPE_OBJECT)
+
+static void
+balsa_toolbar_model_dispose(GObject * object)
+{
+    BalsaToolbarModel *model = BALSA_TOOLBAR_MODEL(object);
+
+    g_clear_object(&model->settings);
+
+    G_OBJECT_CLASS(balsa_toolbar_model_parent_class)->dispose(object);
+}
+
+
 static void
 balsa_toolbar_model_finalize(GObject * object)
 {
     BalsaToolbarModel *model = BALSA_TOOLBAR_MODEL(object);
 
-    if (model->legal) {
+    if (model->legal != NULL)
         g_hash_table_destroy(model->legal);
-        model->legal = NULL;
-    }
-    if (model->settings) {
-        g_object_unref(model->settings);
-        model->settings = NULL;
-    }
-    G_OBJECT_CLASS(parent_class)->finalize(object);
+
+    G_OBJECT_CLASS(balsa_toolbar_model_parent_class)->finalize(object);
 }
 
 static void
@@ -82,8 +89,6 @@ balsa_toolbar_model_class_init(BalsaToolbarModelClass* klass)
 {
     GObjectClass *object_class = (GObjectClass *) klass;
 
-    parent_class = g_type_class_peek_parent(klass);
-
     model_signals[CHANGED] =
         g_signal_new("changed", G_TYPE_FROM_CLASS(object_class),
                      G_SIGNAL_RUN_FIRST,
@@ -93,6 +98,7 @@ balsa_toolbar_model_class_init(BalsaToolbarModelClass* klass)
 
     object_class = G_OBJECT_CLASS(klass);
     object_class->finalize = balsa_toolbar_model_finalize;
+    object_class->dispose = balsa_toolbar_model_dispose;
 }
 
 static void
@@ -102,33 +108,6 @@ balsa_toolbar_model_init(BalsaToolbarModel * model)
         g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
 }
 
-GType
-balsa_toolbar_model_get_type()
-{
-    static GType balsa_toolbar_model_type = 0;
-
-    if (!balsa_toolbar_model_type) {
-        static const GTypeInfo balsa_toolbar_model_info = {
-            sizeof(BalsaToolbarModelClass),
-            NULL,               /* base_init */
-            NULL,               /* base_finalize */
-            (GClassInitFunc) balsa_toolbar_model_class_init,
-            NULL,               /* class_finalize */
-            NULL,               /* class_data */
-            sizeof(BalsaToolbarModel),
-            0,                  /* n_preallocs */
-            (GInstanceInitFunc) balsa_toolbar_model_init,
-        };
-
-        balsa_toolbar_model_type =
-            g_type_register_static(G_TYPE_OBJECT,
-                                   "BalsaToolbarModel",
-                                   &balsa_toolbar_model_info, 0);
-    }
-
-    return balsa_toolbar_model_type;
-}
-
 /* End of class boilerplate */
 
 /* The descriptions must be SHORT */
diff --git a/src/toolbar-factory.h b/src/toolbar-factory.h
index 7a664fbc3..1b003ae3a 100644
--- a/src/toolbar-factory.h
+++ b/src/toolbar-factory.h
@@ -23,27 +23,14 @@
 #include <glib-object.h>
 #include "toolbar-prefs.h"
 
-GType balsa_toolbar_model_get_type(void);
+#define BALSA_TYPE_TOOLBAR_MODEL balsa_toolbar_model_get_type()
 
-#define BALSA_TYPE_TOOLBAR_MODEL \
-    (balsa_toolbar_model_get_type ())
-#define BALSA_TOOLBAR_MODEL(obj) \
-    (G_TYPE_CHECK_INSTANCE_CAST (obj, BALSA_TYPE_TOOLBAR_MODEL, \
-                                 BalsaToolbarModel))
-#define BALSA_TOOLBAR_MODEL_CLASS(klass) \
-    (G_TYPE_CHECK_CLASS_CAST (klass, BALSA_TYPE_TOOLBAR_MODEL, \
-                              BalsaToolbarModelClass))
-#define BALSA_IS_TOOLBAR_MODEL(obj) \
-    (G_TYPE_CHECK_INSTANCE_TYPE (obj, BALSA_TYPE_TOOLBAR_MODEL))
-#define BALSA_IS_TOOLBAR_MODEL_CLASS(klass) \
-    (G_TYPE_CHECK_CLASS_TYPE (klass, BALSA_TYPE_TOOLBAR_MODEL))
+G_DECLARE_FINAL_TYPE(BalsaToolbarModel,
+                     balsa_toolbar_model,
+                     BALSA,
+                     TOOLBAR_MODEL,
+                     GObject);
 
-typedef struct BalsaToolbarModel_ BalsaToolbarModel;
-typedef struct BalsaToolbarModelClass_ BalsaToolbarModelClass;
-
-struct BalsaToolbarModelClass_ {
-    GObjectClass parent_class;
-};
 typedef void (*BalsaToolbarFunc) (GtkWidget *, gpointer);
 #define BALSA_TOOLBAR_FUNC(f) ((BalsaToolbarFunc) (f))
 


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