[libgit2-glib] Port GgitSubmoduleUpdateOptions to G_DECLARE_DERIVABLE_TYPE macro



commit 88ef97b4adaeaf9262155485e5c1b87fc6401551
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Wed Jul 22 17:39:02 2015 +0200

    Port GgitSubmoduleUpdateOptions to G_DECLARE_DERIVABLE_TYPE macro

 libgit2-glib/ggit-autocleanup.h              |    1 -
 libgit2-glib/ggit-submodule-update-options.c |  121 +++++++++++++++++---------
 libgit2-glib/ggit-submodule-update-options.h |   21 +----
 libgit2-glib/ggit-types.h                    |    7 --
 4 files changed, 80 insertions(+), 70 deletions(-)
---
diff --git a/libgit2-glib/ggit-autocleanup.h b/libgit2-glib/ggit-autocleanup.h
index 44bc82c..5610a86 100644
--- a/libgit2-glib/ggit-autocleanup.h
+++ b/libgit2-glib/ggit-autocleanup.h
@@ -64,7 +64,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (GgitCredSshKeyFromAgent, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GgitDiffFormatEmailOptions, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GgitRemote, g_object_unref)
 G_DEFINE_AUTOPTR_CLEANUP_FUNC (GgitRepository, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC (GgitSubmoduleUpdateOptions, g_object_unref)
 
 #endif /* GLIB_CHECK_VERSION (2, 44, 0) */
 #endif /* __GI_SCANNER__ */
diff --git a/libgit2-glib/ggit-submodule-update-options.c b/libgit2-glib/ggit-submodule-update-options.c
index f8b756e..4229589 100644
--- a/libgit2-glib/ggit-submodule-update-options.c
+++ b/libgit2-glib/ggit-submodule-update-options.c
@@ -23,17 +23,21 @@
 #include "ggit-checkout-options.h"
 #include "ggit-fetch-options.h"
 
-#define GGIT_SUBMODULE_UPDATE_OPTIONS_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), 
GGIT_TYPE_SUBMODULE_UPDATE_OPTIONS, GgitSubmoduleUpdateOptionsPrivate))
+/**
+ * GgitSubmoduleUpdateOptions:
+ *
+ * Represents options for a submodule update.
+ */
 
-struct _GgitSubmoduleUpdateOptionsPrivate
+typedef struct _GgitSubmoduleUpdateOptionsPrivate
 {
        git_submodule_update_options options;
 
        GgitCheckoutOptions *checkout_options;
        GgitFetchOptions *fetch_options;
-};
+} GgitSubmoduleUpdateOptionsPrivate;
 
-G_DEFINE_TYPE (GgitSubmoduleUpdateOptions, ggit_submodule_update_options, G_TYPE_OBJECT)
+G_DEFINE_TYPE_WITH_PRIVATE (GgitSubmoduleUpdateOptions, ggit_submodule_update_options, G_TYPE_OBJECT)
 
 enum
 {
@@ -46,12 +50,13 @@ enum
 static void
 ggit_submodule_update_options_finalize (GObject *object)
 {
-       GgitSubmoduleUpdateOptions *options;
+       GgitSubmoduleUpdateOptions *options = GGIT_SUBMODULE_UPDATE_OPTIONS (object);
+       GgitSubmoduleUpdateOptionsPrivate *priv;
 
-       options = GGIT_SUBMODULE_UPDATE_OPTIONS (object);
+       priv = ggit_submodule_update_options_get_instance_private (options);
 
-       g_clear_object (&options->priv->checkout_options);
-       g_clear_pointer (&options->priv->fetch_options, ggit_fetch_options_free);
+       g_clear_object (&priv->checkout_options);
+       g_clear_pointer (&priv->fetch_options, ggit_fetch_options_free);
 
        G_OBJECT_CLASS (ggit_submodule_update_options_parent_class)->finalize (object);
 }
@@ -62,20 +67,20 @@ ggit_submodule_update_options_set_property (GObject      *object,
                                             const GValue *value,
                                             GParamSpec   *pspec)
 {
-       GgitSubmoduleUpdateOptions *self = GGIT_SUBMODULE_UPDATE_OPTIONS (object);
+       GgitSubmoduleUpdateOptions *options = GGIT_SUBMODULE_UPDATE_OPTIONS (object);
 
        switch (prop_id)
        {
        case PROP_CHECKOUT_OPTIONS:
-               ggit_submodule_update_options_set_checkout_options (self,
+               ggit_submodule_update_options_set_checkout_options (options,
                                                                    g_value_get_object (value));
                break;
        case PROP_FETCH_OPTIONS:
-               ggit_submodule_update_options_set_fetch_options (self,
+               ggit_submodule_update_options_set_fetch_options (options,
                                                                 g_value_get_boxed (value));
                break;
        case PROP_CLONE_CHECKOUT_STRATEGY:
-               ggit_submodule_update_options_set_clone_checkout_strategy (self,
+               ggit_submodule_update_options_set_clone_checkout_strategy (options,
                                                                           g_value_get_flags (value));
                break;
        default:
@@ -90,19 +95,22 @@ ggit_submodule_update_options_get_property (GObject    *object,
                                             GValue     *value,
                                             GParamSpec *pspec)
 {
-       GgitSubmoduleUpdateOptions *self = GGIT_SUBMODULE_UPDATE_OPTIONS (object);
+       GgitSubmoduleUpdateOptions *options = GGIT_SUBMODULE_UPDATE_OPTIONS (object);
+       GgitSubmoduleUpdateOptionsPrivate *priv;
+
+       priv = ggit_submodule_update_options_get_instance_private (options);
 
        switch (prop_id)
        {
        case PROP_CHECKOUT_OPTIONS:
-               g_value_set_object (value, self->priv->checkout_options);
+               g_value_set_object (value, priv->checkout_options);
                break;
        case PROP_FETCH_OPTIONS:
-               g_value_set_boxed (value, self->priv->fetch_options);
+               g_value_set_boxed (value, priv->fetch_options);
                break;
        case PROP_CLONE_CHECKOUT_STRATEGY:
                g_value_set_flags (value,
-                                  ggit_submodule_update_options_get_clone_checkout_strategy (self));
+                                  ggit_submodule_update_options_get_clone_checkout_strategy (options));
                break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -116,12 +124,9 @@ ggit_submodule_update_options_class_init (GgitSubmoduleUpdateOptionsClass *klass
        GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
        object_class->finalize = ggit_submodule_update_options_finalize;
-
        object_class->get_property = ggit_submodule_update_options_get_property;
        object_class->set_property = ggit_submodule_update_options_set_property;
 
-       g_type_class_add_private (object_class, sizeof (GgitSubmoduleUpdateOptionsPrivate));
-
        g_object_class_install_property (object_class,
                                         PROP_CHECKOUT_OPTIONS,
                                         g_param_spec_object ("checkout-options",
@@ -152,11 +157,13 @@ ggit_submodule_update_options_class_init (GgitSubmoduleUpdateOptionsClass *klass
 }
 
 static void
-ggit_submodule_update_options_init (GgitSubmoduleUpdateOptions *self)
+ggit_submodule_update_options_init (GgitSubmoduleUpdateOptions *options)
 {
-       self->priv = GGIT_SUBMODULE_UPDATE_OPTIONS_GET_PRIVATE (self);
+       GgitSubmoduleUpdateOptionsPrivate *priv;
+
+       priv = ggit_submodule_update_options_get_instance_private (options);
 
-       git_submodule_update_init_options (&self->priv->options, GIT_SUBMODULE_UPDATE_OPTIONS_VERSION);
+       git_submodule_update_init_options (&priv->options, GIT_SUBMODULE_UPDATE_OPTIONS_VERSION);
 }
 
 /**
@@ -178,15 +185,19 @@ _ggit_submodule_update_options_get_submodule_update_options (GgitSubmoduleUpdate
 {
        if (options != NULL)
        {
+               GgitSubmoduleUpdateOptionsPrivate *priv;
+
+               priv = ggit_submodule_update_options_get_instance_private (options);
+
                /* Make sure to synchronize the wrapped checkout options
                 * with the internal checkout options */
-               if (options->priv->checkout_options)
+               if (priv->checkout_options)
                {
-                       options->priv->options.checkout_opts =
-                               *_ggit_checkout_options_get_checkout_options 
(options->priv->checkout_options);
+                       priv->options.checkout_opts =
+                               *_ggit_checkout_options_get_checkout_options (priv->checkout_options);
                }
 
-               return &options->priv->options;
+               return &priv->options;
        }
        else
        {
@@ -206,9 +217,13 @@ _ggit_submodule_update_options_get_submodule_update_options (GgitSubmoduleUpdate
 GgitCheckoutOptions *
 ggit_submodule_update_options_get_checkout_options (GgitSubmoduleUpdateOptions *options)
 {
+       GgitSubmoduleUpdateOptionsPrivate *priv;
+
        g_return_val_if_fail (GGIT_IS_SUBMODULE_UPDATE_OPTIONS (options), NULL);
 
-       return options->priv->checkout_options;
+       priv = ggit_submodule_update_options_get_instance_private (options);
+
+       return priv->checkout_options;
 }
 
 /**
@@ -223,21 +238,25 @@ void
 ggit_submodule_update_options_set_checkout_options (GgitSubmoduleUpdateOptions *options,
                                                     GgitCheckoutOptions        *checkout_options)
 {
+       GgitSubmoduleUpdateOptionsPrivate *priv;
+
        g_return_if_fail (GGIT_IS_SUBMODULE_UPDATE_OPTIONS (options));
        g_return_if_fail (checkout_options == NULL || GGIT_IS_CHECKOUT_OPTIONS (checkout_options));
 
-       if (options->priv->checkout_options)
+       priv = ggit_submodule_update_options_get_instance_private (options);
+
+       if (priv->checkout_options)
        {
-               g_object_unref (options->priv->checkout_options);
-               options->priv->checkout_options = NULL;
+               g_object_unref (priv->checkout_options);
+               priv->checkout_options = NULL;
 
-               git_checkout_init_options (&options->priv->options.checkout_opts, 
GIT_CHECKOUT_OPTIONS_VERSION);
+               git_checkout_init_options (&priv->options.checkout_opts, GIT_CHECKOUT_OPTIONS_VERSION);
        }
 
        if (checkout_options)
        {
-               options->priv->checkout_options = g_object_ref (checkout_options);
-               options->priv->options.checkout_opts = *_ggit_checkout_options_get_checkout_options 
(options->priv->checkout_options);
+               priv->checkout_options = g_object_ref (checkout_options);
+               priv->options.checkout_opts = *_ggit_checkout_options_get_checkout_options 
(priv->checkout_options);
        }
 
        g_object_notify (G_OBJECT (options), "checkout-options");
@@ -255,9 +274,13 @@ ggit_submodule_update_options_set_checkout_options (GgitSubmoduleUpdateOptions *
 GgitFetchOptions *
 ggit_submodule_update_options_get_fetch_options (GgitSubmoduleUpdateOptions *options)
 {
+       GgitSubmoduleUpdateOptionsPrivate *priv;
+
        g_return_val_if_fail (GGIT_IS_SUBMODULE_UPDATE_OPTIONS (options), NULL);
 
-       return options->priv->fetch_options;
+       priv = ggit_submodule_update_options_get_instance_private (options);
+
+       return priv->fetch_options;
 
 }
 
@@ -272,20 +295,24 @@ void
 ggit_submodule_update_options_set_fetch_options (GgitSubmoduleUpdateOptions *options,
                                                  GgitFetchOptions           *fetch_options)
 {
+       GgitSubmoduleUpdateOptionsPrivate *priv;
+
        g_return_if_fail (GGIT_IS_SUBMODULE_UPDATE_OPTIONS (options));
 
-       if (options->priv->fetch_options)
+       priv = ggit_submodule_update_options_get_instance_private (options);
+
+       if (priv->fetch_options)
        {
-               ggit_fetch_options_free (options->priv->fetch_options);
-               options->priv->fetch_options = NULL;
+               ggit_fetch_options_free (priv->fetch_options);
+               priv->fetch_options = NULL;
 
-               git_fetch_init_options (&options->priv->options.fetch_opts, GIT_FETCH_OPTIONS_VERSION);
+               git_fetch_init_options (&priv->options.fetch_opts, GIT_FETCH_OPTIONS_VERSION);
        }
 
        if (fetch_options)
        {
-               options->priv->fetch_options = ggit_fetch_options_copy (fetch_options);
-               options->priv->options.fetch_opts = *_ggit_fetch_options_get_fetch_options 
(options->priv->fetch_options);
+               priv->fetch_options = ggit_fetch_options_copy (fetch_options);
+               priv->options.fetch_opts = *_ggit_fetch_options_get_fetch_options (priv->fetch_options);
        }
 
        g_object_notify (G_OBJECT (options), "fetch-options");
@@ -302,9 +329,13 @@ ggit_submodule_update_options_set_fetch_options (GgitSubmoduleUpdateOptions *opt
 GgitCheckoutStrategy
 ggit_submodule_update_options_get_clone_checkout_strategy (GgitSubmoduleUpdateOptions *options)
 {
+       GgitSubmoduleUpdateOptionsPrivate *priv;
+
        g_return_val_if_fail (GGIT_IS_SUBMODULE_UPDATE_OPTIONS (options), GGIT_CHECKOUT_NONE);
 
-       return options->priv->options.clone_checkout_strategy;
+       priv = ggit_submodule_update_options_get_instance_private (options);
+
+       return priv->options.clone_checkout_strategy;
 }
 
 /**
@@ -319,11 +350,15 @@ void
 ggit_submodule_update_options_set_clone_checkout_strategy (GgitSubmoduleUpdateOptions *options,
                                                            GgitCheckoutStrategy        checkout_strategy)
 {
+       GgitSubmoduleUpdateOptionsPrivate *priv;
+
        g_return_if_fail (GGIT_IS_SUBMODULE_UPDATE_OPTIONS (options));
 
-       if (options->priv->options.clone_checkout_strategy != checkout_strategy)
+       priv = ggit_submodule_update_options_get_instance_private (options);
+
+       if (priv->options.clone_checkout_strategy != checkout_strategy)
        {
-               options->priv->options.clone_checkout_strategy = checkout_strategy;
+               priv->options.clone_checkout_strategy = checkout_strategy;
 
                g_object_notify (G_OBJECT (options), "clone-checkout-strategy");
        }
diff --git a/libgit2-glib/ggit-submodule-update-options.h b/libgit2-glib/ggit-submodule-update-options.h
index 9530abf..5816d97 100644
--- a/libgit2-glib/ggit-submodule-update-options.h
+++ b/libgit2-glib/ggit-submodule-update-options.h
@@ -29,31 +29,14 @@
 
 G_BEGIN_DECLS
 
-#define GGIT_TYPE_SUBMODULE_UPDATE_OPTIONS             (ggit_submodule_update_options_get_type ())
-#define GGIT_SUBMODULE_UPDATE_OPTIONS(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
GGIT_TYPE_SUBMODULE_UPDATE_OPTIONS, GgitSubmoduleUpdateOptions))
-#define GGIT_SUBMODULE_UPDATE_OPTIONS_CONST(obj)       (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
GGIT_TYPE_SUBMODULE_UPDATE_OPTIONS, GgitSubmoduleUpdateOptions const))
-#define GGIT_SUBMODULE_UPDATE_OPTIONS_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), 
GGIT_TYPE_SUBMODULE_UPDATE_OPTIONS, GgitSubmoduleUpdateOptionsClass))
-#define GGIT_IS_SUBMODULE_UPDATE_OPTIONS(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
GGIT_TYPE_SUBMODULE_UPDATE_OPTIONS))
-#define GGIT_IS_SUBMODULE_UPDATE_OPTIONS_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), 
GGIT_TYPE_SUBMODULE_UPDATE_OPTIONS))
-#define GGIT_SUBMODULE_UPDATE_OPTIONS_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), 
GGIT_TYPE_SUBMODULE_UPDATE_OPTIONS, GgitSubmoduleUpdateOptionsClass))
-
-typedef struct _GgitSubmoduleUpdateOptionsClass                GgitSubmoduleUpdateOptionsClass;
-typedef struct _GgitSubmoduleUpdateOptionsPrivate      GgitSubmoduleUpdateOptionsPrivate;
-
-struct _GgitSubmoduleUpdateOptions
-{
-       GObject parent;
-
-       GgitSubmoduleUpdateOptionsPrivate *priv;
-};
+#define GGIT_TYPE_SUBMODULE_UPDATE_OPTIONS (ggit_submodule_update_options_get_type ())
+G_DECLARE_DERIVABLE_TYPE (GgitSubmoduleUpdateOptions, ggit_submodule_update_options, GGIT, 
SUBMODULE_UPDATE_OPTIONS, GObject)
 
 struct _GgitSubmoduleUpdateOptionsClass
 {
        GObjectClass parent_class;
 };
 
-GType                  ggit_submodule_update_options_get_type              (void) G_GNUC_CONST;
-
 const git_submodule_update_options *
                       _ggit_submodule_update_options_get_submodule_update_options 
(GgitSubmoduleUpdateOptions  *options);
 
diff --git a/libgit2-glib/ggit-types.h b/libgit2-glib/ggit-types.h
index 01a2ae5..53fe25b 100644
--- a/libgit2-glib/ggit-types.h
+++ b/libgit2-glib/ggit-types.h
@@ -258,13 +258,6 @@ typedef struct _GgitStatusOptions GgitStatusOptions;
 typedef struct _GgitSubmodule GgitSubmodule;
 
 /**
- * GgitSubmoduleUpdateOptions:
- *
- * Represents options for a submodule update.
- */
-typedef struct _GgitSubmoduleUpdateOptions GgitSubmoduleUpdateOptions;
-
-/**
  * GgitTransferProgress:
  *
  * Represents transfering progress.


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