[gimp] libgimp: use G_DECLARE_DERIVABLE_TYPE and G_DECLARE_FINAL_TYPE for…



commit 32310f5e4be4f949f6d2aaef2eddba1d3fdfe283
Author: Jehan <jehan girinstud io>
Date:   Tue Apr 6 12:39:52 2021 +0200

    libgimp: use G_DECLARE_DERIVABLE_TYPE and G_DECLARE_FINAL_TYPE for…
    
    … the public API.
    
    This was initially proposed by Niels De Graef in !101, and though I
    still think this is much less practical for day-to-day development, it
    is actually much nicer for the public part of the API. So let's use
    these only in public libgimp* API only, not in core.
    
    I actually already started to use these for some of the libgimpwidgets
    classes and am now moving libgimp main classes to these macros.
    
    * It doesn't expose the priv member (which is completely useless for
      plug-in developers, only to be used for core development).
    * It forces us to never have any variable members in the public API
      (which we were doing fine so far in newest API, but it's nice to be
      enforced with these macros).
    * When using G_DECLARE_FINAL_TYPE in particular, it adds flexibility as
      we can change the structure size and the members order as these are
      not exposed. And if some day, we make the class derivable with some
      signals to handle, only then will we expose the class with some
      _gimp_reserved* padding (instead of from the start when none is
      needed). Therefore we will allow for further extension far in the
      future.
    
    Moreover most of these libgimp classes were so far not using any private
    values, so we were declaring a `priv` member with a bogus contents just
    "in case we needed it in future" (as we couldn't change the struct
    size). So even the easiness of having a priv member was very relative
    for this public API so far (unlike in core code where we actually have
    much more complex interactions and using priv data all the time).

 libgimp/gimpchannel.c   |  9 +--------
 libgimp/gimpchannel.h   | 20 ++------------------
 libgimp/gimpdrawable.c  |  9 +--------
 libgimp/gimpdrawable.h  | 19 ++-----------------
 libgimp/gimpimage.c     | 19 +++++++++----------
 libgimp/gimpimage.h     | 35 ++---------------------------------
 libgimp/gimpitem.c      | 32 +++++++++++++++++++++-----------
 libgimp/gimpitem.h      | 20 ++------------------
 libgimp/gimplayer.c     |  8 +++-----
 libgimp/gimplayer.h     | 36 ++----------------------------------
 libgimp/gimplayermask.c |  7 +++----
 libgimp/gimplayermask.h | 35 ++---------------------------------
 libgimp/gimpselection.c |  7 +++----
 libgimp/gimpselection.h | 37 ++-----------------------------------
 libgimp/gimpvectors.c   |  8 +++-----
 libgimp/gimpvectors.h   | 36 ++----------------------------------
 16 files changed, 60 insertions(+), 277 deletions(-)
---
diff --git a/libgimp/gimpchannel.c b/libgimp/gimpchannel.c
index d8e9ebc7c4..7b5087891b 100644
--- a/libgimp/gimpchannel.c
+++ b/libgimp/gimpchannel.c
@@ -23,13 +23,7 @@
 #include "gimp.h"
 
 
-struct _GimpChannelPrivate
-{
-  gpointer unused;
-};
-
-
-G_DEFINE_TYPE_WITH_PRIVATE (GimpChannel, gimp_channel, GIMP_TYPE_DRAWABLE)
+G_DEFINE_TYPE (GimpChannel, gimp_channel, GIMP_TYPE_DRAWABLE)
 
 #define parent_class gimp_drawable_parent_class
 
@@ -42,7 +36,6 @@ gimp_channel_class_init (GimpChannelClass *klass)
 static void
 gimp_channel_init (GimpChannel *channel)
 {
-  channel->priv = gimp_channel_get_instance_private (channel);
 }
 
 /**
diff --git a/libgimp/gimpchannel.h b/libgimp/gimpchannel.h
index 3e02fc0111..fb5dd22d47 100644
--- a/libgimp/gimpchannel.h
+++ b/libgimp/gimpchannel.h
@@ -32,24 +32,10 @@ G_BEGIN_DECLS
 #include <libgimp/gimpdrawable.h>
 
 
-#define GIMP_TYPE_CHANNEL            (gimp_channel_get_type ())
-#define GIMP_CHANNEL(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_CHANNEL, GimpChannel))
-#define GIMP_CHANNEL_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_CHANNEL, GimpChannelClass))
-#define GIMP_IS_CHANNEL(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_CHANNEL))
-#define GIMP_IS_CHANNEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_CHANNEL))
-#define GIMP_CHANNEL_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_CHANNEL, GimpChannelClass))
+#define GIMP_TYPE_CHANNEL (gimp_channel_get_type ())
+G_DECLARE_DERIVABLE_TYPE (GimpChannel, gimp_channel, GIMP, CHANNEL, GimpDrawable)
 
 
-typedef struct _GimpChannelClass   GimpChannelClass;
-typedef struct _GimpChannelPrivate GimpChannelPrivate;
-
-struct _GimpChannel
-{
-  GimpDrawable        parent_instance;
-
-  GimpChannelPrivate *priv;
-};
-
 struct _GimpChannelClass
 {
   GimpDrawableClass parent_class;
@@ -66,8 +52,6 @@ struct _GimpChannelClass
 };
 
 
-GType         gimp_channel_get_type  (void) G_GNUC_CONST;
-
 GimpChannel * gimp_channel_get_by_id (gint32         channel_id);
 
 GimpChannel * gimp_channel_new       (GimpImage     *image,
diff --git a/libgimp/gimpdrawable.c b/libgimp/gimpdrawable.c
index 73615304a4..acf8c72334 100644
--- a/libgimp/gimpdrawable.c
+++ b/libgimp/gimpdrawable.c
@@ -26,13 +26,7 @@
 #include "gimptilebackendplugin.h"
 
 
-struct _GimpDrawablePrivate
-{
-  gpointer unused;
-};
-
-
-G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (GimpDrawable, gimp_drawable, GIMP_TYPE_ITEM)
+G_DEFINE_ABSTRACT_TYPE (GimpDrawable, gimp_drawable, GIMP_TYPE_ITEM)
 
 #define parent_class gimp_drawable_parent_class
 
@@ -45,7 +39,6 @@ gimp_drawable_class_init (GimpDrawableClass *klass)
 static void
 gimp_drawable_init (GimpDrawable *drawable)
 {
-  drawable->priv = gimp_drawable_get_instance_private (drawable);
 }
 
 
diff --git a/libgimp/gimpdrawable.h b/libgimp/gimpdrawable.h
index 876912069d..6e0f84b475 100644
--- a/libgimp/gimpdrawable.h
+++ b/libgimp/gimpdrawable.h
@@ -32,23 +32,10 @@ G_BEGIN_DECLS
 
 #include <libgimp/gimpitem.h>
 
-#define GIMP_TYPE_DRAWABLE            (gimp_drawable_get_type ())
-#define GIMP_DRAWABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_DRAWABLE, GimpDrawable))
-#define GIMP_DRAWABLE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_DRAWABLE, 
GimpDrawableClass))
-#define GIMP_IS_DRAWABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_DRAWABLE))
-#define GIMP_IS_DRAWABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_DRAWABLE))
-#define GIMP_DRAWABLE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_DRAWABLE, 
GimpDrawableClass))
 
+#define GIMP_TYPE_DRAWABLE (gimp_drawable_get_type ())
+G_DECLARE_DERIVABLE_TYPE (GimpDrawable, gimp_drawable, GIMP, DRAWABLE, GimpItem)
 
-typedef struct _GimpDrawableClass   GimpDrawableClass;
-typedef struct _GimpDrawablePrivate GimpDrawablePrivate;
-
-struct _GimpDrawable
-{
-  GimpItem             parent_instance;
-
-  GimpDrawablePrivate *priv;
-};
 
 struct _GimpDrawableClass
 {
@@ -67,8 +54,6 @@ struct _GimpDrawableClass
 };
 
 
-GType          gimp_drawable_get_type               (void) G_GNUC_CONST;
-
 GimpDrawable * gimp_drawable_get_by_id              (gint32        drawable_id);
 
 GeglBuffer   * gimp_drawable_get_buffer             (GimpDrawable  *drawable);
diff --git a/libgimp/gimpimage.c b/libgimp/gimpimage.c
index d158ab2bfd..40ac24bdb4 100644
--- a/libgimp/gimpimage.c
+++ b/libgimp/gimpimage.c
@@ -36,10 +36,10 @@ enum
   N_PROPS
 };
 
-
-struct _GimpImagePrivate
+struct _GimpImage
 {
-  gint id;
+  GObject parent_instance;
+  gint    id;
 };
 
 
@@ -53,7 +53,7 @@ static void   gimp_image_get_property  (GObject      *object,
                                         GParamSpec   *pspec);
 
 
-G_DEFINE_TYPE_WITH_PRIVATE (GimpImage, gimp_image, G_TYPE_OBJECT)
+G_DEFINE_TYPE (GimpImage, gimp_image, G_TYPE_OBJECT)
 
 #define parent_class gimp_image_parent_class
 
@@ -82,7 +82,6 @@ gimp_image_class_init (GimpImageClass *klass)
 static void
 gimp_image_init (GimpImage *image)
 {
-  image->priv = gimp_image_get_instance_private (image);
 }
 
 static void
@@ -96,7 +95,7 @@ gimp_image_set_property (GObject      *object,
   switch (property_id)
     {
     case PROP_ID:
-      image->priv->id = g_value_get_int (value);
+      image->id = g_value_get_int (value);
       break;
 
     default:
@@ -116,7 +115,7 @@ gimp_image_get_property (GObject    *object,
   switch (property_id)
     {
     case PROP_ID:
-      g_value_set_int (value, image->priv->id);
+      g_value_set_int (value, image->id);
       break;
 
     default:
@@ -139,7 +138,7 @@ gimp_image_get_property (GObject    *object,
 gint32
 gimp_image_get_id (GimpImage *image)
 {
-  return image ? image->priv->id : -1;
+  return image ? image->id : -1;
 }
 
 /**
@@ -486,12 +485,12 @@ gimp_image_get_thumbnail_data (GimpImage *image,
 
 /**
  * gimp_image_get_thumbnail:
- * @image:  the image ID
+ * @image:  the #GimpImage
  * @width:  the requested thumbnail width  (<= 1024 pixels)
  * @height: the requested thumbnail height (<= 1024 pixels)
  * @alpha:  how to handle an alpha channel
  *
- * Retrieves a thumbnail pixbuf for the image identified by @image->priv->id.
+ * Retrieves a thumbnail pixbuf for @image.
  * The thumbnail will be not larger than the requested size.
  *
  * Returns: (transfer full): a new #GdkPixbuf
diff --git a/libgimp/gimpimage.h b/libgimp/gimpimage.h
index 0186f2aca5..82352eb865 100644
--- a/libgimp/gimpimage.h
+++ b/libgimp/gimpimage.h
@@ -30,41 +30,10 @@ G_BEGIN_DECLS
 
 /* For information look into the C source or the html documentation */
 
-#define GIMP_TYPE_IMAGE            (gimp_image_get_type ())
-#define GIMP_IMAGE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_IMAGE, GimpImage))
-#define GIMP_IMAGE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_IMAGE, GimpImageClass))
-#define GIMP_IS_IMAGE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_IMAGE))
-#define GIMP_IS_IMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_IMAGE))
-#define GIMP_IMAGE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_IMAGE, GimpImageClass))
 
+#define GIMP_TYPE_IMAGE (gimp_image_get_type ())
+G_DECLARE_FINAL_TYPE (GimpImage, gimp_image, GIMP, IMAGE, GObject)
 
-typedef struct _GimpImageClass   GimpImageClass;
-typedef struct _GimpImagePrivate GimpImagePrivate;
-
-struct _GimpImage
-{
-  GObject           parent_instance;
-
-  GimpImagePrivate *priv;
-};
-
-struct _GimpImageClass
-{
-  GObjectClass parent_class;
-
-  /* Padding for future expansion */
-  void (*_gimp_reserved1) (void);
-  void (*_gimp_reserved2) (void);
-  void (*_gimp_reserved3) (void);
-  void (*_gimp_reserved4) (void);
-  void (*_gimp_reserved5) (void);
-  void (*_gimp_reserved6) (void);
-  void (*_gimp_reserved7) (void);
-  void (*_gimp_reserved8) (void);
-};
-
-
-GType          gimp_image_get_type           (void) G_GNUC_CONST;
 
 gint32         gimp_image_get_id             (GimpImage    *image);
 GimpImage    * gimp_image_get_by_id          (gint32        image_id);
diff --git a/libgimp/gimpitem.c b/libgimp/gimpitem.c
index 6a476b2d58..284488bed5 100644
--- a/libgimp/gimpitem.c
+++ b/libgimp/gimpitem.c
@@ -37,10 +37,10 @@ enum
 };
 
 
-struct _GimpItemPrivate
+typedef struct _GimpItemPrivate
 {
   gint id;
-};
+} GimpItemPrivate;
 
 
 static void   gimp_item_set_property  (GObject      *object,
@@ -82,21 +82,21 @@ gimp_item_class_init (GimpItemClass *klass)
 static void
 gimp_item_init (GimpItem *item)
 {
-  item->priv = gimp_item_get_instance_private (item);
 }
 
 static void
 gimp_item_set_property (GObject      *object,
-                         guint         property_id,
-                         const GValue *value,
-                         GParamSpec   *pspec)
+                        guint         property_id,
+                        const GValue *value,
+                        GParamSpec   *pspec)
 {
-  GimpItem *item = GIMP_ITEM (object);
+  GimpItem        *item = GIMP_ITEM (object);
+  GimpItemPrivate *priv = gimp_item_get_instance_private (item);
 
   switch (property_id)
     {
     case PROP_ID:
-      item->priv->id = g_value_get_int (value);
+      priv->id = g_value_get_int (value);
       break;
 
     default:
@@ -111,12 +111,13 @@ gimp_item_get_property (GObject    *object,
                          GValue     *value,
                          GParamSpec *pspec)
 {
-  GimpItem *item = GIMP_ITEM (object);
+  GimpItem        *item = GIMP_ITEM (object);
+  GimpItemPrivate *priv = gimp_item_get_instance_private (item);
 
   switch (property_id)
     {
     case PROP_ID:
-      g_value_set_int (value, item->priv->id);
+      g_value_set_int (value, priv->id);
       break;
 
     default:
@@ -140,7 +141,16 @@ gimp_item_get_property (GObject    *object,
 gint32
 gimp_item_get_id (GimpItem *item)
 {
-  return item ? item->priv->id : -1;
+  if (item)
+    {
+      GimpItemPrivate *priv = gimp_item_get_instance_private (item);
+
+      return priv->id;
+    }
+  else
+    {
+      return -1;
+    }
 }
 
 /**
diff --git a/libgimp/gimpitem.h b/libgimp/gimpitem.h
index ae484ed491..9bc1508b59 100644
--- a/libgimp/gimpitem.h
+++ b/libgimp/gimpitem.h
@@ -31,24 +31,10 @@ G_BEGIN_DECLS
 /* For information look into the C source or the html documentation */
 
 
-#define GIMP_TYPE_ITEM            (gimp_item_get_type ())
-#define GIMP_ITEM(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_ITEM, GimpItem))
-#define GIMP_ITEM_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_ITEM, GimpItemClass))
-#define GIMP_IS_ITEM(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_ITEM))
-#define GIMP_IS_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_ITEM))
-#define GIMP_ITEM_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_ITEM, GimpItemClass))
+#define GIMP_TYPE_ITEM (gimp_item_get_type ())
+G_DECLARE_DERIVABLE_TYPE (GimpItem, gimp_item, GIMP, ITEM, GObject)
 
 
-typedef struct _GimpItemClass   GimpItemClass;
-typedef struct _GimpItemPrivate GimpItemPrivate;
-
-struct _GimpItem
-{
-  GObject           parent_instance;
-
-  GimpItemPrivate *priv;
-};
-
 struct _GimpItemClass
 {
   GObjectClass parent_class;
@@ -65,8 +51,6 @@ struct _GimpItemClass
 };
 
 
-GType       gimp_item_get_type      (void) G_GNUC_CONST;
-
 gint32      gimp_item_get_id        (GimpItem *item);
 GimpItem  * gimp_item_get_by_id     (gint32    item_id);
 
diff --git a/libgimp/gimplayer.c b/libgimp/gimplayer.c
index 7737b5b589..c8d3c83bfa 100644
--- a/libgimp/gimplayer.c
+++ b/libgimp/gimplayer.c
@@ -25,13 +25,12 @@
 #include "gimp.h"
 
 
-struct _GimpLayerPrivate
+struct _GimpLayer
 {
-  gpointer unused;
+  GimpDrawable parent_instance;
 };
 
-
-G_DEFINE_TYPE_WITH_PRIVATE (GimpLayer, gimp_layer, GIMP_TYPE_DRAWABLE)
+G_DEFINE_TYPE (GimpLayer, gimp_layer, GIMP_TYPE_DRAWABLE)
 
 #define parent_class gimp_layer_parent_class
 
@@ -44,7 +43,6 @@ gimp_layer_class_init (GimpLayerClass *klass)
 static void
 gimp_layer_init (GimpLayer *layer)
 {
-  layer->priv = gimp_layer_get_instance_private (layer);
 }
 
 
diff --git a/libgimp/gimplayer.h b/libgimp/gimplayer.h
index b3453e0ea9..ab05827aff 100644
--- a/libgimp/gimplayer.h
+++ b/libgimp/gimplayer.h
@@ -30,42 +30,10 @@ G_BEGIN_DECLS
 /* For information look into the C source or the html documentation */
 
 
-#define GIMP_TYPE_LAYER            (gimp_layer_get_type ())
-#define GIMP_LAYER(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_LAYER, GimpLayer))
-#define GIMP_LAYER_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_LAYER, GimpLayerClass))
-#define GIMP_IS_LAYER(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_LAYER))
-#define GIMP_IS_LAYER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_LAYER))
-#define GIMP_LAYER_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_LAYER, GimpLayerClass))
+#define GIMP_TYPE_LAYER (gimp_layer_get_type ())
+G_DECLARE_FINAL_TYPE (GimpLayer, gimp_layer, GIMP, LAYER, GimpDrawable)
 
 
-typedef struct _GimpLayerClass   GimpLayerClass;
-typedef struct _GimpLayerPrivate GimpLayerPrivate;
-
-struct _GimpLayer
-{
-  GimpDrawable      parent_instance;
-
-  GimpLayerPrivate *priv;
-};
-
-struct _GimpLayerClass
-{
-  GimpDrawableClass parent_class;
-
-  /* Padding for future expansion */
-  void (*_gimp_reserved1) (void);
-  void (*_gimp_reserved2) (void);
-  void (*_gimp_reserved3) (void);
-  void (*_gimp_reserved4) (void);
-  void (*_gimp_reserved5) (void);
-  void (*_gimp_reserved6) (void);
-  void (*_gimp_reserved7) (void);
-  void (*_gimp_reserved8) (void);
-};
-
-
-GType       gimp_layer_get_type           (void) G_GNUC_CONST;
-
 GimpLayer * gimp_layer_get_by_id          (gint32           layer_id);
 
 GimpLayer * gimp_layer_new                (GimpImage       *image,
diff --git a/libgimp/gimplayermask.c b/libgimp/gimplayermask.c
index f1ca5c3353..e2654265f8 100644
--- a/libgimp/gimplayermask.c
+++ b/libgimp/gimplayermask.c
@@ -24,13 +24,13 @@
 #include "gimp.h"
 
 
-struct _GimpLayerMaskPrivate
+struct _GimpLayerMask
 {
-  gpointer unused;
+  GimpChannel parent_instance;
 };
 
 
-G_DEFINE_TYPE_WITH_PRIVATE (GimpLayerMask, gimp_layer_mask, GIMP_TYPE_CHANNEL)
+G_DEFINE_TYPE (GimpLayerMask, gimp_layer_mask, GIMP_TYPE_CHANNEL)
 
 #define parent_class gimp_layer_mask_parent_class
 
@@ -43,7 +43,6 @@ gimp_layer_mask_class_init (GimpLayerMaskClass *klass)
 static void
 gimp_layer_mask_init (GimpLayerMask *layer_mask)
 {
-  layer_mask->priv = gimp_layer_mask_get_instance_private (layer_mask);
 }
 
 /**
diff --git a/libgimp/gimplayermask.h b/libgimp/gimplayermask.h
index b7560ee148..8a0a88ab2e 100644
--- a/libgimp/gimplayermask.h
+++ b/libgimp/gimplayermask.h
@@ -31,41 +31,10 @@ G_BEGIN_DECLS
 /* For information look into the C source or the html documentation */
 
 
-#define GIMP_TYPE_LAYER_MASK            (gimp_layer_mask_get_type ())
-#define GIMP_LAYER_MASK(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_LAYER_MASK, 
GimpLayerMask))
-#define GIMP_LAYER_MASK_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_LAYER_MASK, 
GimpLayerMaskClass))
-#define GIMP_IS_LAYER_MASK(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_LAYER_MASK))
-#define GIMP_IS_LAYER_MASK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_LAYER_MASK))
-#define GIMP_LAYER_MASK_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_LAYER_MASK, 
GimpLayerMaskClass))
+#define GIMP_TYPE_LAYER_MASK (gimp_layer_mask_get_type ())
+G_DECLARE_FINAL_TYPE (GimpLayerMask, gimp_layer_mask, GIMP, LAYER_MASK, GimpChannel)
 
 
-typedef struct _GimpLayerMaskClass   GimpLayerMaskClass;
-typedef struct _GimpLayerMaskPrivate GimpLayerMaskPrivate;
-
-struct _GimpLayerMask
-{
-  GimpChannel           parent_instance;
-
-  GimpLayerMaskPrivate *priv;
-};
-
-struct _GimpLayerMaskClass
-{
-  GimpChannelClass parent_class;
-
-  /* Padding for future expansion */
-  void (*_gimp_reserved1) (void);
-  void (*_gimp_reserved2) (void);
-  void (*_gimp_reserved3) (void);
-  void (*_gimp_reserved4) (void);
-  void (*_gimp_reserved5) (void);
-  void (*_gimp_reserved6) (void);
-  void (*_gimp_reserved7) (void);
-  void (*_gimp_reserved8) (void);
-};
-
-GType           gimp_layer_mask_get_type  (void) G_GNUC_CONST;
-
 GimpLayerMask * gimp_layer_mask_get_by_id (gint32 layer_mask_id);
 
 
diff --git a/libgimp/gimpselection.c b/libgimp/gimpselection.c
index d7ec6223bf..4c9e2f5336 100644
--- a/libgimp/gimpselection.c
+++ b/libgimp/gimpselection.c
@@ -23,13 +23,13 @@
 #include "gimp.h"
 
 
-struct _GimpSelectionPrivate
+struct _GimpSelection
 {
-  gpointer unused;
+  GimpChannel parent_instance;
 };
 
 
-G_DEFINE_TYPE_WITH_PRIVATE (GimpSelection, gimp_selection, GIMP_TYPE_CHANNEL)
+G_DEFINE_TYPE (GimpSelection, gimp_selection, GIMP_TYPE_CHANNEL)
 
 #define parent_class gimp_selection_parent_class
 
@@ -42,7 +42,6 @@ gimp_selection_class_init (GimpSelectionClass *klass)
 static void
 gimp_selection_init (GimpSelection *selection)
 {
-  selection->priv = gimp_selection_get_instance_private (selection);
 }
 
 /**
diff --git a/libgimp/gimpselection.h b/libgimp/gimpselection.h
index 352885fb15..79b639e3e5 100644
--- a/libgimp/gimpselection.h
+++ b/libgimp/gimpselection.h
@@ -30,42 +30,10 @@ G_BEGIN_DECLS
 /* For information look into the C source or the html documentation */
 
 
-#define GIMP_TYPE_SELECTION            (gimp_selection_get_type ())
-#define GIMP_SELECTION(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_SELECTION, 
GimpSelection))
-#define GIMP_SELECTION_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_SELECTION, 
GimpSelectionClass))
-#define GIMP_IS_SELECTION(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_SELECTION))
-#define GIMP_IS_SELECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_SELECTION))
-#define GIMP_SELECTION_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_SELECTION, 
GimpSelectionClass))
+#define GIMP_TYPE_SELECTION (gimp_selection_get_type ())
+G_DECLARE_FINAL_TYPE (GimpSelection, gimp_selection, GIMP, SELECTION, GimpChannel)
 
 
-typedef struct _GimpSelectionClass   GimpSelectionClass;
-typedef struct _GimpSelectionPrivate GimpSelectionPrivate;
-
-struct _GimpSelection
-{
-  GimpChannel           parent_instance;
-
-  GimpSelectionPrivate *priv;
-};
-
-struct _GimpSelectionClass
-{
-  GimpChannelClass parent_class;
-
-  /* Padding for future expansion */
-  void (*_gimp_reserved1) (void);
-  void (*_gimp_reserved2) (void);
-  void (*_gimp_reserved3) (void);
-  void (*_gimp_reserved4) (void);
-  void (*_gimp_reserved5) (void);
-  void (*_gimp_reserved6) (void);
-  void (*_gimp_reserved7) (void);
-  void (*_gimp_reserved8) (void);
-};
-
-
-GType           gimp_selection_get_type (void) G_GNUC_CONST;
-
 GimpSelection * gimp_selection_get_by_id (gint32        selection_id);
 
 GimpLayer     * gimp_selection_float     (GimpImage    *image,
@@ -78,4 +46,3 @@ GimpLayer     * gimp_selection_float     (GimpImage    *image,
 G_END_DECLS
 
 #endif /* __GIMP_SELECTION_H__ */
-
diff --git a/libgimp/gimpvectors.c b/libgimp/gimpvectors.c
index e11b4d6902..a84f8c079e 100644
--- a/libgimp/gimpvectors.c
+++ b/libgimp/gimpvectors.c
@@ -24,13 +24,12 @@
 #include "gimp.h"
 
 
-struct _GimpVectorsPrivate
+struct _GimpVectors
 {
-  gpointer unused;
+  GimpItem parent_instance;
 };
 
-
-G_DEFINE_TYPE_WITH_PRIVATE (GimpVectors, gimp_vectors, GIMP_TYPE_ITEM)
+G_DEFINE_TYPE (GimpVectors, gimp_vectors, GIMP_TYPE_ITEM)
 
 #define parent_class gimp_vectors_parent_class
 
@@ -43,7 +42,6 @@ gimp_vectors_class_init (GimpVectorsClass *klass)
 static void
 gimp_vectors_init (GimpVectors *vectors)
 {
-  vectors->priv = gimp_vectors_get_instance_private (vectors);
 }
 
 /**
diff --git a/libgimp/gimpvectors.h b/libgimp/gimpvectors.h
index 90889a3a71..8b09c4c255 100644
--- a/libgimp/gimpvectors.h
+++ b/libgimp/gimpvectors.h
@@ -31,42 +31,10 @@ G_BEGIN_DECLS
 /* For information look into the C source or the html documentation */
 
 
-#define GIMP_TYPE_VECTORS            (gimp_vectors_get_type ())
-#define GIMP_VECTORS(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_VECTORS, GimpVectors))
-#define GIMP_VECTORS_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_VECTORS, GimpVectorsClass))
-#define GIMP_IS_VECTORS(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_VECTORS))
-#define GIMP_IS_VECTORS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_VECTORS))
-#define GIMP_VECTORS_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_VECTORS, GimpVectorsClass))
+#define GIMP_TYPE_VECTORS (gimp_vectors_get_type ())
+G_DECLARE_FINAL_TYPE (GimpVectors, gimp_vectors, GIMP, VECTORS, GimpItem)
 
 
-typedef struct _GimpVectorsClass   GimpVectorsClass;
-typedef struct _GimpVectorsPrivate GimpVectorsPrivate;
-
-struct _GimpVectors
-{
-  GimpItem            parent_instance;
-
-  GimpVectorsPrivate *priv;
-};
-
-struct _GimpVectorsClass
-{
-  GimpItemClass parent_class;
-
-  /* Padding for future expansion */
-  void (*_gimp_reserved1) (void);
-  void (*_gimp_reserved2) (void);
-  void (*_gimp_reserved3) (void);
-  void (*_gimp_reserved4) (void);
-  void (*_gimp_reserved5) (void);
-  void (*_gimp_reserved6) (void);
-  void (*_gimp_reserved7) (void);
-  void (*_gimp_reserved8) (void);
-};
-
-
-GType         gimp_vectors_get_type  (void) G_GNUC_CONST;
-
 GimpVectors * gimp_vectors_get_by_id (gint32 vectors_id);
 
 


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