index: explicitly follow GObject conventions
authorDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Sun, 7 Oct 2018 01:37:57 +0000 (21:37 -0400)
committerDavid Bremner <david@tethera.net>
Sun, 21 Oct 2018 13:21:26 +0000 (10:21 -0300)
Use explicit labels for GTypeInfo member initializers, rather than
relying on comments and ordering.  This is both easier to read, and
harder to screw up.  This also makes it clear that we're mis-casting
GObject class initializers for gcc.

Without this patch, g++ 8.2.0-7 produces this warning:

CXX  -g -O2 lib/index.o
lib/index.cc: In function ‘GMimeFilter* notmuch_filter_discard_non_term_new(GMimeContentType*)’:
lib/index.cc:252:23: warning: cast between incompatible function types from ‘void (*)(NotmuchFilterDiscardNonTermClass*)’ {aka ‘void (*)(_NotmuchFilterDiscardNonTermClass*)’} to ‘GClassInitFunc’ {aka ‘void (*)(void*, void*)’} [-Wcast-function-type]
      (GClassInitFunc) notmuch_filter_discard_non_term_class_init,
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The definition of GClassInitFunc in
/usr/include/glib-2.0/gobject/gtype.h suggests that this function will
always be called with the class_data member of the GTypeInfo.  We set
that value to NULL in both GObject definitions in notmuch. So we mark
it as explicitly unused.

There is no functional change here, just code cleanup.

gmime-filter-reply.c
lib/index.cc

index f673c0a27385803a684540b6ce0078ad453f6f92..480d93817bb627e6afb2c1ef5cc8fe7093355945 100644 (file)
@@ -19,6 +19,7 @@
 #include <stdbool.h>
 
 #include "gmime-filter-reply.h"
+#include "notmuch-client.h"
 
 /**
  * SECTION: gmime-filter-reply
@@ -29,7 +30,7 @@
  **/
 
 
-static void g_mime_filter_reply_class_init (GMimeFilterReplyClass *klass);
+static void g_mime_filter_reply_class_init (GMimeFilterReplyClass *klass, void *class_data);
 static void g_mime_filter_reply_init (GMimeFilterReply *filter, GMimeFilterReplyClass *klass);
 static void g_mime_filter_reply_finalize (GObject *object);
 
@@ -50,16 +51,16 @@ g_mime_filter_reply_get_type (void)
 
        if (!type) {
                static const GTypeInfo info = {
-                       sizeof (GMimeFilterReplyClass),
-                       NULL, /* base_class_init */
-                       NULL, /* base_class_finalize */
-                       (GClassInitFunc) g_mime_filter_reply_class_init,
-                       NULL, /* class_finalize */
-                       NULL, /* class_data */
-                       sizeof (GMimeFilterReply),
-                       0,    /* n_preallocs */
-                       (GInstanceInitFunc) g_mime_filter_reply_init,
-                       NULL    /* value_table */
+                       .class_size = sizeof (GMimeFilterReplyClass),
+                       .base_init = NULL,
+                       .base_finalize = NULL,
+                       .class_init = (GClassInitFunc) g_mime_filter_reply_class_init,
+                       .class_finalize = NULL,
+                       .class_data = NULL,
+                       .instance_size = sizeof (GMimeFilterReply),
+                       .n_preallocs = 0,
+                       .instance_init = (GInstanceInitFunc) g_mime_filter_reply_init,
+                       .value_table = NULL,
                };
 
                type = g_type_register_static (GMIME_TYPE_FILTER, "GMimeFilterReply", &info, (GTypeFlags) 0);
@@ -70,7 +71,7 @@ g_mime_filter_reply_get_type (void)
 
 
 static void
-g_mime_filter_reply_class_init (GMimeFilterReplyClass *klass)
+g_mime_filter_reply_class_init (GMimeFilterReplyClass *klass, unused (void *class_data))
 {
        GObjectClass *object_class = G_OBJECT_CLASS (klass);
        GMimeFilterClass *filter_class = GMIME_FILTER_CLASS (klass);
index 3f694387c36c2cc21c1509881f7596e3b7980b14..efd9da4ca015681d624be82354a06d1f5f0c7855 100644 (file)
@@ -142,7 +142,8 @@ static void filter_reset (GMimeFilter *filter);
 static GMimeFilterClass *parent_class = NULL;
 
 static void
-notmuch_filter_discard_non_term_class_init (NotmuchFilterDiscardNonTermClass *klass)
+notmuch_filter_discard_non_term_class_init (NotmuchFilterDiscardNonTermClass *klass,
+                                           unused (void *class_data))
 {
     GObjectClass *object_class = G_OBJECT_CLASS (klass);
     GMimeFilterClass *filter_class = GMIME_FILTER_CLASS (klass);
@@ -246,16 +247,16 @@ notmuch_filter_discard_non_term_new (GMimeContentType *content_type)
 
     if (!type) {
        static const GTypeInfo info = {
-           sizeof (NotmuchFilterDiscardNonTermClass),
-           NULL, /* base_class_init */
-           NULL, /* base_class_finalize */
-           (GClassInitFunc) notmuch_filter_discard_non_term_class_init,
-           NULL, /* class_finalize */
-           NULL, /* class_data */
-           sizeof (NotmuchFilterDiscardNonTerm),
-           0,    /* n_preallocs */
-           NULL, /* instance_init */
-           NULL  /* value_table */
+           .class_size = sizeof (NotmuchFilterDiscardNonTermClass),
+           .base_init = NULL,
+           .base_finalize = NULL,
+           .class_init = (GClassInitFunc) notmuch_filter_discard_non_term_class_init,
+           .class_finalize = NULL,
+           .class_data = NULL,
+           .instance_size = sizeof (NotmuchFilterDiscardNonTerm),
+           .n_preallocs = 0,
+           .instance_init = NULL,
+           .value_table = NULL,
        };
 
        type = g_type_register_static (GMIME_TYPE_FILTER, "NotmuchFilterDiscardNonTerm", &info, (GTypeFlags) 0);