[gimp] libgimp: add gimp_procedure_find_argument(), aux_argument(), return_value()



commit c7c0397fbec2a94e459293a2edeadff2b2703ad0
Author: Michael Natterer <mitch gimp org>
Date:   Sat Oct 12 12:49:32 2019 +0200

    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,


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