[balsa] mailbox mh: Declare it final



commit 4984fd6ed76603bc0251ef8b75a203c8fd0946b8
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Mon Mar 26 10:36:25 2018 -0400

    mailbox mh: Declare it final
    
    Use G_DECLARE_FINAL_TYPE for LibBalsaMailboxMh and make it
    private.

 libbalsa/mailbox_mh.c | 56 +++++++++++++++++++--------------------------------
 libbalsa/mailbox_mh.h | 36 +++++++--------------------------
 2 files changed, 28 insertions(+), 64 deletions(-)
---
diff --git a/libbalsa/mailbox_mh.c b/libbalsa/mailbox_mh.c
index 840f11f15..74f70311a 100644
--- a/libbalsa/mailbox_mh.c
+++ b/libbalsa/mailbox_mh.c
@@ -48,8 +48,6 @@ struct message_info {
 
 #define REAL_FLAGS(flags) (flags & LIBBALSA_MESSAGE_FLAGS_REAL)
 
-static LibBalsaMailboxLocalClass *parent_class = NULL;
-
 static void libbalsa_mailbox_mh_class_init(LibBalsaMailboxMhClass *klass);
 static void libbalsa_mailbox_mh_init(LibBalsaMailboxMh * mailbox);
 static void libbalsa_mailbox_mh_finalize(GObject * object);
@@ -86,33 +84,23 @@ static gboolean libbalsa_mailbox_mh_fetch_message_structure(LibBalsaMailbox
                                                             flags);
 static guint libbalsa_mailbox_mh_total_messages(LibBalsaMailbox * mailbox);
 
+struct _LibBalsaMailboxMh {
+    LibBalsaMailboxLocal parent;
 
-GType
-libbalsa_mailbox_mh_get_type(void)
-{
-    static GType mailbox_type = 0;
-
-    if (!mailbox_type) {
-       static const GTypeInfo mailbox_info = {
-           sizeof(LibBalsaMailboxMhClass),
-            NULL,               /* base_init */
-            NULL,               /* base_finalize */
-           (GClassInitFunc) libbalsa_mailbox_mh_class_init,
-            NULL,               /* class_finalize */
-            NULL,               /* class_data */
-           sizeof(LibBalsaMailboxMh),
-            0,                  /* n_preallocs */
-           (GInstanceInitFunc) libbalsa_mailbox_mh_init
-       };
-
-       mailbox_type =
-           g_type_register_static(LIBBALSA_TYPE_MAILBOX_LOCAL,
-                                  "LibBalsaMailboxMh",
-                                   &mailbox_info, 0);
-    }
+    GHashTable* messages_info;
+    GPtrArray* msgno_2_msg_info;
+    gchar* sequences_filename;
+    time_t mtime_sequences;
+    guint last_fileno;
+};
 
-    return mailbox_type;
-}
+struct _LibBalsaMailboxMhClass {
+    LibBalsaMailboxLocalClass klass;
+};
+
+G_DEFINE_TYPE(LibBalsaMailboxMh,
+              libbalsa_mailbox_mh,
+              LIBBALSA_TYPE_MAILBOX_LOCAL)
 
 static void
 libbalsa_mailbox_mh_class_init(LibBalsaMailboxMhClass * klass)
@@ -125,8 +113,6 @@ libbalsa_mailbox_mh_class_init(LibBalsaMailboxMhClass * klass)
     libbalsa_mailbox_class = LIBBALSA_MAILBOX_CLASS(klass);
     libbalsa_mailbox_local_class = LIBBALSA_MAILBOX_LOCAL_CLASS(klass);
 
-    parent_class = g_type_class_peek_parent(klass);
-
     object_class->finalize = libbalsa_mailbox_mh_finalize;
 
     libbalsa_mailbox_class->load_config = libbalsa_mailbox_mh_load_config;
@@ -237,7 +223,7 @@ libbalsa_mailbox_mh_finalize(GObject * object)
 {
     LibBalsaMailboxMh *mh = LIBBALSA_MAILBOX_MH(object);
     g_free(mh->sequences_filename);
-    G_OBJECT_CLASS(parent_class)->finalize(object);
+    G_OBJECT_CLASS(libbalsa_mailbox_mh_parent_class)->finalize(object);
 }
 
 static void
@@ -251,7 +237,7 @@ libbalsa_mailbox_mh_load_config(LibBalsaMailbox * mailbox,
     lbm_mh_set_sequences_filename(mh, path);
     g_free(path);
 
-    LIBBALSA_MAILBOX_CLASS(parent_class)->load_config(mailbox, prefix);
+    LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_mh_parent_class)->load_config(mailbox, prefix);
 }
 
 #define MH_BASENAME(msg_info) \
@@ -295,7 +281,7 @@ lbm_mh_remove_files(LibBalsaMailboxLocal *mailbox)
                             _("Could not remove %s:\n%s"),
                             path, strerror(errno));
     }
-    LIBBALSA_MAILBOX_LOCAL_CLASS(parent_class)->remove_files(mailbox);
+    LIBBALSA_MAILBOX_LOCAL_CLASS(libbalsa_mailbox_mh_parent_class)->remove_files(mailbox);
 }
 
 
@@ -714,8 +700,8 @@ libbalsa_mailbox_mh_close_mailbox(LibBalsaMailbox * mailbox,
     g_hash_table_destroy(mh->messages_info);
     mh->messages_info = NULL;
 
-    if (LIBBALSA_MAILBOX_CLASS(parent_class)->close_mailbox)
-        LIBBALSA_MAILBOX_CLASS(parent_class)->close_mailbox(mailbox,
+    if (LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_mh_parent_class)->close_mailbox)
+        LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_mh_parent_class)->close_mailbox(mailbox,
                                                             expunge);
 
     /* Now it's safe to free the message info. */
@@ -1024,7 +1010,7 @@ libbalsa_mailbox_mh_fetch_message_structure(LibBalsaMailbox * mailbox,
        }
     }
 
-    return LIBBALSA_MAILBOX_CLASS(parent_class)->
+    return LIBBALSA_MAILBOX_CLASS(libbalsa_mailbox_mh_parent_class)->
         fetch_message_structure(mailbox, message, flags);
 }
 
diff --git a/libbalsa/mailbox_mh.h b/libbalsa/mailbox_mh.h
index 7d3497764..1d9bdf604 100644
--- a/libbalsa/mailbox_mh.h
+++ b/libbalsa/mailbox_mh.h
@@ -21,38 +21,16 @@
 #ifndef __LIBBALSA_MAILBOX_MH_H__
 #define __LIBBALSA_MAILBOX_MH_H__
 
-#define LIBBALSA_TYPE_MAILBOX_MH \
-    (libbalsa_mailbox_mh_get_type())
-#define LIBBALSA_MAILBOX_MH(obj) \
-    (G_TYPE_CHECK_INSTANCE_CAST ((obj), LIBBALSA_TYPE_MAILBOX_MH, \
-                                 LibBalsaMailboxMh))
-#define LIBBALSA_MAILBOX_MH_CLASS(klass) \
-    (G_TYPE_CHECK_CLASS_CAST ((klass), LIBBALSA_TYPE_MAILBOX_MH, \
-                              LibBalsaMailboxMhClass))
-#define LIBBALSA_IS_MAILBOX_MH(obj) \
-    (G_TYPE_CHECK_INSTANCE_TYPE ((obj), LIBBALSA_TYPE_MAILBOX_MH))
-#define LIBBALSA_IS_MAILBOX_MH_CLASS(klass) \
-    (G_TYPE_CHECK_CLASS_TYPE ((klass), LIBBALSA_TYPE_MAILBOX_MH))
+#define LIBBALSA_TYPE_MAILBOX_MH libbalsa_mailbox_mh_get_type()
 
-typedef struct _LibBalsaMailboxMh LibBalsaMailboxMh;
-typedef struct _LibBalsaMailboxMhClass LibBalsaMailboxMhClass;
+G_DECLARE_FINAL_TYPE(LibBalsaMailboxMh,
+                     libbalsa_mailbox_mh,
+                     LIBBALSA,
+                     MAILBOX_MH,
+                     LibBalsaMailboxLocal)
 
-struct _LibBalsaMailboxMh {
-    LibBalsaMailboxLocal parent;
-
-    GHashTable* messages_info;
-    GPtrArray* msgno_2_msg_info;
-    gchar* sequences_filename;
-    time_t mtime_sequences;
-    guint last_fileno;
-};
-
-struct _LibBalsaMailboxMhClass {
-    LibBalsaMailboxLocalClass klass;
-};
-
-GType libbalsa_mailbox_mh_get_type(void);
 LibBalsaMailbox *libbalsa_mailbox_mh_new(const gchar * path,
                                          gboolean      create);
+
 #endif
 


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