From c7c0397fbec2a94e459293a2edeadff2b2703ad0 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Sat, 12 Oct 2019 12:49:32 +0200 Subject: [PATCH] libgimp: add gimp_procedure_find_argument(), aux_argument(), return_value() --- libgimp/gimp.def | 3 + libgimp/gimpprocedure.c | 171 +++++++++++++++++++++++++++++----------- libgimp/gimpprocedure.h | 7 ++ 3 files changed, 134 insertions(+), 47 deletions(-) diff --git a/libgimp/gimp.def b/libgimp/gimp.def index e2b504d98d..0d11b4d25d 100644 --- a/libgimp/gimp.def +++ b/libgimp/gimp.def @@ -701,6 +701,9 @@ EXPORTS gimp_procedure_config_set_values gimp_procedure_create_config gimp_procedure_extension_ready + gimp_procedure_find_argument + gimp_procedure_find_aux_argument + gimp_procedure_find_return_value gimp_procedure_get_arguments gimp_procedure_get_authors gimp_procedure_get_aux_arguments diff --git a/libgimp/gimpprocedure.c b/libgimp/gimpprocedure.c index e84d6272a8..be810a5785 100644 --- a/libgimp/gimpprocedure.c +++ b/libgimp/gimpprocedure.c @@ -1147,29 +1147,26 @@ void gimp_procedure_add_argument (GimpProcedure *procedure, GParamSpec *pspec) { - gint i; - g_return_if_fail (GIMP_IS_PROCEDURE (procedure)); g_return_if_fail (G_IS_PARAM_SPEC (pspec)); g_return_if_fail (gimp_is_canonical_identifier (pspec->name)); - for (i = 0; i < procedure->priv->n_args; i++) - if (! strcmp (pspec->name, procedure->priv->args[i]->name)) - { - g_warning ("Argument with name '%s' already exists on procedure '%s'", - pspec->name, - gimp_procedure_get_name (procedure)); - return; - } + if (gimp_procedure_find_argument (procedure, pspec->name)) + { + g_warning ("Argument with name '%s' already exists on procedure '%s'", + pspec->name, + gimp_procedure_get_name (procedure)); + return; + } - for (i = 0; i < procedure->priv->n_aux_args; i++) - if (! strcmp (pspec->name, procedure->priv->aux_args[i]->name)) - { - g_warning ("Argument with name '%s' already exists on procedure '%s'", - pspec->name, - gimp_procedure_get_name (procedure)); - return; - } + if (gimp_procedure_find_aux_argument (procedure, pspec->name)) + { + g_warning ("Auxiliary argument with name '%s' already exists " + "on procedure '%s'", + pspec->name, + gimp_procedure_get_name (procedure)); + return; + } procedure->priv->args = g_renew (GParamSpec *, procedure->priv->args, procedure->priv->n_args + 1); @@ -1232,29 +1229,26 @@ void gimp_procedure_add_aux_argument (GimpProcedure *procedure, GParamSpec *pspec) { - gint i; - g_return_if_fail (GIMP_IS_PROCEDURE (procedure)); g_return_if_fail (G_IS_PARAM_SPEC (pspec)); g_return_if_fail (gimp_is_canonical_identifier (pspec->name)); - for (i = 0; i < procedure->priv->n_args; i++) - if (! strcmp (pspec->name, procedure->priv->args[i]->name)) - { - g_warning ("Argument with name '%s' already exists on procedure '%s'", - pspec->name, - gimp_procedure_get_name (procedure)); - return; - } + if (gimp_procedure_find_argument (procedure, pspec->name)) + { + g_warning ("Argument with name '%s' already exists on procedure '%s'", + pspec->name, + gimp_procedure_get_name (procedure)); + return; + } - for (i = 0; i < procedure->priv->n_aux_args; i++) - if (! strcmp (pspec->name, procedure->priv->aux_args[i]->name)) - { - g_warning ("Argument with name '%s' already exists on procedure '%s'", - pspec->name, - gimp_procedure_get_name (procedure)); - return; - } + if (gimp_procedure_find_aux_argument (procedure, pspec->name)) + { + g_warning ("Auxiliary argument with name '%s' already exists " + "on procedure '%s'", + pspec->name, + gimp_procedure_get_name (procedure)); + return; + } procedure->priv->aux_args = g_renew (GParamSpec *, procedure->priv->aux_args, procedure->priv->n_aux_args + 1); @@ -1272,7 +1266,7 @@ gimp_procedure_add_aux_argument (GimpProcedure *procedure, * @config: a #GObject. * @prop_name: property name in @config. * - * Add a new auxiliaty argument to @procedure according to the + * Add a new auxiliary argument to @procedure according to the * specifications of the property @prop_name registered on @config. * * See gimp_procedure_add_aux_argument() for details. @@ -1315,20 +1309,17 @@ void gimp_procedure_add_return_value (GimpProcedure *procedure, GParamSpec *pspec) { - gint i; - g_return_if_fail (GIMP_IS_PROCEDURE (procedure)); g_return_if_fail (G_IS_PARAM_SPEC (pspec)); g_return_if_fail (gimp_is_canonical_identifier (pspec->name)); - for (i = 0; i < procedure->priv->n_values; i++) - if (! strcmp (pspec->name, procedure->priv->values[i]->name)) - { - g_warning ("Return value with name '%s' already exists on procedure '%s'", - pspec->name, - gimp_procedure_get_name (procedure)); - return; - } + if (gimp_procedure_find_return_value (procedure, pspec->name)) + { + g_warning ("Return value with name '%s' already exists on procedure '%s'", + pspec->name, + gimp_procedure_get_name (procedure)); + return; + } procedure->priv->values = g_renew (GParamSpec *, procedure->priv->values, procedure->priv->n_values + 1); @@ -1371,6 +1362,92 @@ gimp_procedure_add_return_value_from_property (GimpProcedure *procedure, gimp_procedure_add_return_value (procedure, pspec); } +/** + * gimp_procedure_find_argument: + * @procedure: A #GimpProcedure + * @name: An argument name + * + * Searches the @procedure's arguments for a #GParamSpec called @name. + * + * Returns: (transfer none): The @procedure's argument with @name if it + * exists, or %NULL otherwise. + * + * Since: 3.0 + **/ +GParamSpec * +gimp_procedure_find_argument (GimpProcedure *procedure, + const gchar *name) +{ + gint i; + + g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL); + g_return_val_if_fail (name != NULL, NULL); + + for (i = 0; i < procedure->priv->n_args; i++) + if (! strcmp (name, procedure->priv->args[i]->name)) + return procedure->priv->args[i]; + + return NULL; +} + +/** + * gimp_procedure_find_aux_argument: + * @procedure: A #GimpProcedure + * @name: An auxiliary argument name + * + * Searches the @procedure's auxiliary arguments for a #GParamSpec + * called @name. + * + * Returns: (transfer none): The @procedure's auxiliary argument with + * @name if it exists, or %NULL otherwise. + * + * Since: 3.0 + **/ +GParamSpec * +gimp_procedure_find_aux_argument (GimpProcedure *procedure, + const gchar *name) +{ + gint i; + + g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL); + g_return_val_if_fail (name != NULL, NULL); + + for (i = 0; i < procedure->priv->n_aux_args; i++) + if (! strcmp (name, procedure->priv->aux_args[i]->name)) + return procedure->priv->aux_args[i]; + + return NULL; +} + +/** + * gimp_procedure_find_return_value: + * @procedure: A #GimpProcedure + * @name: A return value name + * + * Searches the @procedure's return values for a #GParamSpec called + * @name. + * + * Returns: (transfer none): The @procedure's return values with @name + * if it exists, or %NULL otherwise. + * + * Since: 3.0 + **/ +GParamSpec * +gimp_procedure_find_return_value (GimpProcedure *procedure, + const gchar *name) +{ + gint i; + + g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL); + g_return_val_if_fail (name != NULL, NULL); + + for (i = 0; i < procedure->priv->n_values; i++) + if (! strcmp (name, procedure->priv->values[i]->name)) + return procedure->priv->values[i]; + + return NULL; +} + /** * gimp_procedure_get_arguments: * @procedure: A #GimpProcedure. diff --git a/libgimp/gimpprocedure.h b/libgimp/gimpprocedure.h index 70ca03da65..10baf420b2 100644 --- a/libgimp/gimpprocedure.h +++ b/libgimp/gimpprocedure.h @@ -180,6 +180,13 @@ void gimp_procedure_add_return_value_from_property GObject *config, const gchar *prop_name); +GParamSpec * gimp_procedure_find_argument (GimpProcedure *procedure, + const gchar *name); +GParamSpec * gimp_procedure_find_aux_argument (GimpProcedure *procedure, + const gchar *name); +GParamSpec * gimp_procedure_find_return_value (GimpProcedure *procedure, + const gchar *name); + GParamSpec ** gimp_procedure_get_arguments (GimpProcedure *procedure, gint *n_arguments); GParamSpec ** gimp_procedure_get_aux_arguments (GimpProcedure *procedure,