[libpeas] Simplify valist to parameter list helper



commit 05c8e66b8dd2162812886e7cbfab07dfd68831d3
Author: Garrett Regier <garrettregier gmail com>
Date:   Thu Mar 29 02:34:53 2012 -0700

    Simplify valist to parameter list helper
    
    We only use it for interface types so there is no need to
    support object types and the type_struct is only ever used
    for the helper.

 libpeas/peas-engine.c        |    8 +-----
 libpeas/peas-extension-set.c |    8 +-----
 libpeas/peas-helpers.c       |   51 ++++++++---------------------------------
 libpeas/peas-helpers.h       |    7 +-----
 4 files changed, 13 insertions(+), 61 deletions(-)
---
diff --git a/libpeas/peas-engine.c b/libpeas/peas-engine.c
index 619d870..a321b78 100644
--- a/libpeas/peas-engine.c
+++ b/libpeas/peas-engine.c
@@ -1080,7 +1080,6 @@ peas_engine_create_extension_valist (PeasEngine     *engine,
                                      const gchar    *first_property,
                                      va_list         var_args)
 {
-  gpointer type_struct;
   guint n_parameters;
   GParameter *parameters;
   PeasExtension *exten;
@@ -1090,13 +1089,10 @@ peas_engine_create_extension_valist (PeasEngine     *engine,
   g_return_val_if_fail (peas_plugin_info_is_loaded (info), NULL);
   g_return_val_if_fail (G_TYPE_IS_INTERFACE (extension_type), FALSE);
 
-  type_struct = _g_type_struct_ref (extension_type);
-
-  if (!_valist_to_parameter_list (extension_type, type_struct, first_property,
+  if (!_valist_to_parameter_list (extension_type, first_property,
                                   var_args, &parameters, &n_parameters))
     {
       /* Already warned */
-      _g_type_struct_unref (extension_type, type_struct);
       return NULL;
     }
 
@@ -1107,8 +1103,6 @@ peas_engine_create_extension_valist (PeasEngine     *engine,
     g_value_unset (&parameters[n_parameters].value);
   g_free (parameters);
 
-  _g_type_struct_unref (extension_type, type_struct);
-
   return exten;
 }
 
diff --git a/libpeas/peas-extension-set.c b/libpeas/peas-extension-set.c
index 234c555..a91889f 100644
--- a/libpeas/peas-extension-set.c
+++ b/libpeas/peas-extension-set.c
@@ -658,7 +658,6 @@ peas_extension_set_new_valist (PeasEngine  *engine,
                                const gchar *first_property,
                                va_list      var_args)
 {
-  gpointer type_struct;
   GParameter *parameters;
   guint n_parameters;
   PeasExtensionSet *set;
@@ -666,13 +665,10 @@ peas_extension_set_new_valist (PeasEngine  *engine,
   g_return_val_if_fail (engine == NULL || PEAS_IS_ENGINE (engine), NULL);
   g_return_val_if_fail (G_TYPE_IS_INTERFACE (exten_type), NULL);
 
-  type_struct = _g_type_struct_ref (exten_type);
-
-  if (!_valist_to_parameter_list (exten_type, type_struct, first_property,
+  if (!_valist_to_parameter_list (exten_type, first_property,
                                   var_args, &parameters, &n_parameters))
     {
       /* Already warned */
-      _g_type_struct_unref (exten_type, type_struct);
       return NULL;
     }
 
@@ -682,8 +678,6 @@ peas_extension_set_new_valist (PeasEngine  *engine,
     g_value_unset (&parameters[n_parameters].value);
   g_free (parameters);
 
-  _g_type_struct_unref (exten_type, type_struct);
-
   return set;
 }
 
diff --git a/libpeas/peas-helpers.c b/libpeas/peas-helpers.c
index be97c68..36cf576 100644
--- a/libpeas/peas-helpers.c
+++ b/libpeas/peas-helpers.c
@@ -29,54 +29,20 @@
 
 #include "peas-helpers.h"
 
-gpointer
-_g_type_struct_ref (GType the_type)
-{
-  if (G_TYPE_IS_INTERFACE (the_type))
-    return g_type_default_interface_ref (the_type);
-  else if (G_TYPE_IS_OBJECT (the_type))
-    return g_type_class_ref (the_type);
-  else
-    g_return_val_if_reached (NULL);
-}
-
-void
-_g_type_struct_unref (GType    the_type,
-                      gpointer type_struct)
-{
-  if (G_TYPE_IS_INTERFACE (the_type))
-    g_type_default_interface_unref (type_struct);
-  else if (G_TYPE_IS_OBJECT (the_type))
-    g_type_class_unref (type_struct);
-  else
-    g_return_if_reached ();
-}
-
-static GParamSpec *
-_g_type_struct_find_property (GType        the_type,
-                              gpointer     type_struct,
-                              const gchar *property_name)
-{
-  if (G_TYPE_IS_INTERFACE (the_type))
-    return g_object_interface_find_property (type_struct, property_name);
-  else if (G_TYPE_IS_OBJECT (the_type))
-    return g_object_class_find_property (type_struct, property_name);
-  else
-    g_return_val_if_reached (NULL);
-}
-
 gboolean
-_valist_to_parameter_list (GType         the_type,
-                           gpointer      type_struct,
+_valist_to_parameter_list (GType         iface_type,
                            const gchar  *first_property_name,
                            va_list       args,
                            GParameter  **params,
                            guint        *n_params)
 {
+  gpointer type_struct;
   const gchar *name;
   guint n_allocated_params;
 
-  g_return_val_if_fail (type_struct != NULL, FALSE);
+  g_return_val_if_fail (G_TYPE_IS_INTERFACE (iface_type), FALSE);
+
+  type_struct = g_type_default_interface_ref (iface_type);
 
   *n_params = 0;
   n_allocated_params = 16;
@@ -86,12 +52,12 @@ _valist_to_parameter_list (GType         the_type,
   while (name)
     {
       gchar *error_msg = NULL;
-      GParamSpec *pspec = _g_type_struct_find_property (the_type, type_struct, name);
+      GParamSpec *pspec = g_object_interface_find_property (type_struct, name);
 
       if (!pspec)
         {
           g_warning ("%s: type '%s' has no property named '%s'",
-                     G_STRFUNC, g_type_name (the_type), name);
+                     G_STRFUNC, g_type_name (iface_type), name);
           goto error;
         }
 
@@ -119,6 +85,8 @@ _valist_to_parameter_list (GType         the_type,
       name = va_arg (args, gchar*);
     }
 
+  g_type_default_interface_unref (type_struct);
+
   return TRUE;
 
 error:
@@ -127,6 +95,7 @@ error:
     g_value_unset (&(*params)[*n_params].value);
 
   g_free (*params);
+  g_type_default_interface_unref (type_struct);
 
   return FALSE;
 }
diff --git a/libpeas/peas-helpers.h b/libpeas/peas-helpers.h
index e6e86ed..c1db7c7 100644
--- a/libpeas/peas-helpers.h
+++ b/libpeas/peas-helpers.h
@@ -24,12 +24,7 @@
 
 #include <glib-object.h>
 
-gpointer  _g_type_struct_ref        (GType         the_type);
-void      _g_type_struct_unref      (GType         the_type,
-                                     gpointer      type_struct);
-
-gboolean  _valist_to_parameter_list (GType         the_type,
-                                     gpointer      type_struct,
+gboolean  _valist_to_parameter_list (GType         iface_type,
                                      const gchar  *first_property_name,
                                      va_list       var_args,
                                      GParameter  **params,



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