[libpeas] Simplify valist to parameter list helper
- From: Garrett Regier <gregier src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libpeas] Simplify valist to parameter list helper
- Date: Mon, 16 Apr 2012 15:24:27 +0000 (UTC)
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, ¶meters, &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 (¶meters[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, ¶meters, &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 (¶meters[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]