diff options
author | Garrett Regier <garrettregier@gmail.com> | 2014-12-20 10:05:24 -0800 |
---|---|---|
committer | Garrett Regier <garrettregier@gmail.com> | 2014-12-20 10:05:24 -0800 |
commit | f0e1e2df26a59eba6b5882bd6503777337837a53 (patch) | |
tree | da1a2439ff655f8d655bf84f8800332aa632afb1 /libpeas/peas-extension-set.c | |
parent | 001fa77065738e1ea105424c3b8b5f8e27c0c178 (diff) | |
download | libpeas-f0e1e2df26a59eba6b5882bd6503777337837a53.tar.gz |
Use new GObject private API
Diffstat (limited to 'libpeas/peas-extension-set.c')
-rw-r--r-- | libpeas/peas-extension-set.c | 102 |
1 files changed, 58 insertions, 44 deletions
diff --git a/libpeas/peas-extension-set.c b/libpeas/peas-extension-set.c index 42049d2..d8535be 100644 --- a/libpeas/peas-extension-set.c +++ b/libpeas/peas-extension-set.c @@ -86,8 +86,6 @@ * ]| **/ -G_DEFINE_TYPE (PeasExtensionSet, peas_extension_set, G_TYPE_OBJECT) - struct _PeasExtensionSetPrivate { PeasEngine *engine; GType exten_type; @@ -126,20 +124,28 @@ enum { static guint signals[LAST_SIGNAL]; static GParamSpec *properties[N_PROPERTIES] = { NULL }; +G_DEFINE_TYPE_WITH_PRIVATE (PeasExtensionSet, + peas_extension_set, + G_TYPE_OBJECT) + +#define GET_PRIV(o) \ + (peas_extension_set_get_instance_private (o)) + static void set_construct_properties (PeasExtensionSet *set, PeasParameterArray *array) { - unsigned i; + PeasExtensionSetPrivate *priv = GET_PRIV (set); + guint i; - set->priv->n_parameters = array->n_parameters; + priv->n_parameters = array->n_parameters; - set->priv->parameters = g_new0 (GParameter, array->n_parameters); + priv->parameters = g_new0 (GParameter, array->n_parameters); for (i = 0; i < array->n_parameters; i++) { - set->priv->parameters[i].name = g_intern_string (array->parameters[i].name); - g_value_init (&set->priv->parameters[i].value, G_VALUE_TYPE (&array->parameters[i].value)); - g_value_copy (&array->parameters[i].value, &set->priv->parameters[i].value); + priv->parameters[i].name = g_intern_string (array->parameters[i].name); + g_value_init (&priv->parameters[i].value, G_VALUE_TYPE (&array->parameters[i].value)); + g_value_copy (&array->parameters[i].value, &priv->parameters[i].value); } } @@ -150,14 +156,15 @@ peas_extension_set_set_property (GObject *object, GParamSpec *pspec) { PeasExtensionSet *set = PEAS_EXTENSION_SET (object); + PeasExtensionSetPrivate *priv = GET_PRIV (set); switch (prop_id) { case PROP_ENGINE: - set->priv->engine = g_value_get_object (value); + priv->engine = g_value_get_object (value); break; case PROP_EXTENSION_TYPE: - set->priv->exten_type = g_value_get_gtype (value); + priv->exten_type = g_value_get_gtype (value); break; case PROP_CONSTRUCT_PROPERTIES: set_construct_properties (set, g_value_get_pointer (value)); @@ -174,14 +181,15 @@ peas_extension_set_get_property (GObject *object, GParamSpec *pspec) { PeasExtensionSet *set = PEAS_EXTENSION_SET (object); + PeasExtensionSetPrivate *priv = GET_PRIV (set); switch (prop_id) { case PROP_ENGINE: - g_value_set_object (value, set->priv->engine); + g_value_set_object (value, priv->engine); break; case PROP_EXTENSION_TYPE: - g_value_set_gtype (value, set->priv->exten_type); + g_value_set_gtype (value, priv->exten_type); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -192,6 +200,7 @@ static void add_extension (PeasExtensionSet *set, PeasPluginInfo *info) { + PeasExtensionSetPrivate *priv = GET_PRIV (set); PeasExtension *exten; ExtensionItem *item; @@ -199,20 +208,20 @@ add_extension (PeasExtensionSet *set, if (!peas_plugin_info_is_loaded (info)) return; - if (!peas_engine_provides_extension (set->priv->engine, info, - set->priv->exten_type)) + if (!peas_engine_provides_extension (priv->engine, info, + priv->exten_type)) return; - exten = peas_engine_create_extensionv (set->priv->engine, info, - set->priv->exten_type, - set->priv->n_parameters, - set->priv->parameters); + exten = peas_engine_create_extensionv (priv->engine, info, + priv->exten_type, + priv->n_parameters, + priv->parameters); item = (ExtensionItem *) g_slice_new (ExtensionItem); item->info = info; item->exten = exten; - set->priv->extensions = g_list_prepend (set->priv->extensions, item); + priv->extensions = g_list_prepend (priv->extensions, item); g_signal_emit (set, signals[EXTENSION_ADDED], 0, info, exten); } @@ -231,17 +240,18 @@ static void remove_extension (PeasExtensionSet *set, PeasPluginInfo *info) { + PeasExtensionSetPrivate *priv = GET_PRIV (set); GList *l; ExtensionItem *item; - for (l = set->priv->extensions; l; l = l->next) + for (l = priv->extensions; l; l = l->next) { item = (ExtensionItem *) l->data; if (item->info != info) continue; remove_extension_item (set, item); - set->priv->extensions = g_list_delete_link (set->priv->extensions, l); + priv->extensions = g_list_delete_link (priv->extensions, l); return; } } @@ -249,28 +259,28 @@ remove_extension (PeasExtensionSet *set, static void peas_extension_set_init (PeasExtensionSet *set) { - set->priv = G_TYPE_INSTANCE_GET_PRIVATE (set, PEAS_TYPE_EXTENSION_SET, PeasExtensionSetPrivate); } static void peas_extension_set_constructed (GObject *object) { PeasExtensionSet *set = PEAS_EXTENSION_SET (object); + PeasExtensionSetPrivate *priv = GET_PRIV (set); GList *plugins, *l; - if (set->priv->engine == NULL) - set->priv->engine = peas_engine_get_default (); + if (priv->engine == NULL) + priv->engine = peas_engine_get_default (); - g_object_ref (set->priv->engine); + g_object_ref (priv->engine); - plugins = (GList *) peas_engine_get_plugin_list (set->priv->engine); + plugins = (GList *) peas_engine_get_plugin_list (priv->engine); for (l = plugins; l; l = l->next) add_extension (set, (PeasPluginInfo *) l->data); - g_signal_connect_object (set->priv->engine, "load-plugin", + g_signal_connect_object (priv->engine, "load-plugin", G_CALLBACK (add_extension), set, G_CONNECT_AFTER | G_CONNECT_SWAPPED); - g_signal_connect_object (set->priv->engine, "unload-plugin", + g_signal_connect_object (priv->engine, "unload-plugin", G_CALLBACK (remove_extension), set, G_CONNECT_SWAPPED); @@ -281,27 +291,28 @@ static void peas_extension_set_dispose (GObject *object) { PeasExtensionSet *set = PEAS_EXTENSION_SET (object); + PeasExtensionSetPrivate *priv = GET_PRIV (set); GList *l; - if (set->priv->extensions != NULL) + if (priv->extensions != NULL) { - for (l = set->priv->extensions; l != NULL; l = l->next) + for (l = priv->extensions; l != NULL; l = l->next) remove_extension_item (set, (ExtensionItem *) l->data); - g_list_free (set->priv->extensions); - set->priv->extensions = NULL; + g_list_free (priv->extensions); + priv->extensions = NULL; } - if (set->priv->parameters != NULL) + if (priv->parameters != NULL) { - while (set->priv->n_parameters-- > 0) - g_value_unset (&set->priv->parameters[set->priv->n_parameters].value); + while (priv->n_parameters-- > 0) + g_value_unset (&priv->parameters[priv->n_parameters].value); - g_free (set->priv->parameters); - set->priv->parameters = NULL; + g_free (priv->parameters); + priv->parameters = NULL; } - g_clear_object (&set->priv->engine); + g_clear_object (&priv->engine); } static gboolean @@ -309,11 +320,12 @@ peas_extension_set_call_real (PeasExtensionSet *set, const gchar *method_name, GIArgument *args) { + PeasExtensionSetPrivate *priv = GET_PRIV (set); gboolean ret = TRUE; GList *l; GIArgument dummy; - for (l = set->priv->extensions; l; l = l->next) + for (l = priv->extensions; l; l = l->next) { ExtensionItem *item = (ExtensionItem *) l->data; ret = peas_extension_callv (item->exten, method_name, args, &dummy) && ret; @@ -417,7 +429,6 @@ peas_extension_set_class_init (PeasExtensionSetClass *klass) G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, N_PROPERTIES, properties); - g_type_class_add_private (klass, sizeof (PeasExtensionSetPrivate)); } /** @@ -434,12 +445,13 @@ PeasExtension * peas_extension_set_get_extension (PeasExtensionSet *set, PeasPluginInfo *info) { + PeasExtensionSetPrivate *priv = GET_PRIV (set); GList *l; g_return_val_if_fail (PEAS_IS_EXTENSION_SET (set), NULL); g_return_val_if_fail (info != NULL, NULL); - for (l = set->priv->extensions; l != NULL; l = l->next) + for (l = priv->extensions; l != NULL; l = l->next) { ExtensionItem *item = l->data; @@ -501,6 +513,7 @@ peas_extension_set_call_valist (PeasExtensionSet *set, const gchar *method_name, va_list va_args) { + PeasExtensionSetPrivate *priv = GET_PRIV (set); GICallableInfo *callable_info; GIArgument *args; gint n_args; @@ -508,12 +521,12 @@ peas_extension_set_call_valist (PeasExtensionSet *set, g_return_val_if_fail (PEAS_IS_EXTENSION_SET (set), FALSE); g_return_val_if_fail (method_name != NULL, FALSE); - callable_info = peas_gi_get_method_info (set->priv->exten_type, method_name); + callable_info = peas_gi_get_method_info (priv->exten_type, method_name); if (callable_info == NULL) { g_warning ("Method '%s.%s' was not found", - g_type_name (set->priv->exten_type), method_name); + g_type_name (priv->exten_type), method_name); return FALSE; } @@ -571,12 +584,13 @@ peas_extension_set_foreach (PeasExtensionSet *set, PeasExtensionSetForeachFunc func, gpointer data) { + PeasExtensionSetPrivate *priv = GET_PRIV (set); GList *l; g_return_if_fail (PEAS_IS_EXTENSION_SET (set)); g_return_if_fail (func != NULL); - for (l = set->priv->extensions; l; l = l->next) + for (l = priv->extensions; l; l = l->next) { ExtensionItem *item = (ExtensionItem *) l->data; |