[gimp] libgimpconfig: more nested if() in gimp_config_param_spec_duplicate()



commit 6fad2576931b8570403c5a25f401f9a47b062a44
Author: Michael Natterer <mitch gimp org>
Date:   Sat Sep 14 18:07:06 2019 +0200

    libgimpconfig: more nested if() in gimp_config_param_spec_duplicate()
    
    to reduce the number of checks per copy.

 libgimpconfig/gimpconfig-params.c | 151 +++++++++++++++++++-------------------
 1 file changed, 77 insertions(+), 74 deletions(-)
---
diff --git a/libgimpconfig/gimpconfig-params.c b/libgimpconfig/gimpconfig-params.c
index fcaabbddce..b18486929e 100644
--- a/libgimpconfig/gimpconfig-params.c
+++ b/libgimpconfig/gimpconfig-params.c
@@ -82,26 +82,26 @@ gimp_config_param_spec_duplicate (GParamSpec *pspec)
 
   if (G_IS_PARAM_SPEC_STRING (pspec))
     {
-      GParamSpecString *sspec = G_PARAM_SPEC_STRING (pspec);
+      GParamSpecString *spec = G_PARAM_SPEC_STRING (pspec);
 
       if (GEGL_IS_PARAM_SPEC_FILE_PATH (pspec))
         {
           copy = gimp_param_spec_config_path (name, nick, blurb,
                                               GIMP_CONFIG_PATH_FILE,
-                                              sspec->default_value,
+                                              spec->default_value,
                                               flags);
         }
       else if (GIMP_IS_PARAM_SPEC_CONFIG_PATH (pspec))
         {
           copy = gimp_param_spec_config_path (name, nick, blurb,
                                               gimp_param_spec_config_path_type (pspec),
-                                              sspec->default_value,
+                                              spec->default_value,
                                               flags);
         }
       else
         {
           copy = g_param_spec_string (name, nick, blurb,
-                                      sspec->default_value,
+                                      spec->default_value,
                                       flags);
         }
     }
@@ -122,34 +122,36 @@ gimp_config_param_spec_duplicate (GParamSpec *pspec)
                                 spec->default_value,
                                 flags);
     }
-  else if (GEGL_IS_PARAM_SPEC_DOUBLE (pspec))
-    {
-      GeglParamSpecDouble *gspec = GEGL_PARAM_SPEC_DOUBLE (pspec);
-      GParamSpecDouble    *spec  = G_PARAM_SPEC_DOUBLE (pspec);
-
-      copy = gegl_param_spec_double (name, nick, blurb,
-                                     spec->minimum,
-                                     spec->maximum,
-                                     spec->default_value,
-                                     gspec->ui_minimum,
-                                     gspec->ui_maximum,
-                                     gspec->ui_gamma,
-                                     flags);
-      gegl_param_spec_double_set_steps (GEGL_PARAM_SPEC_DOUBLE (copy),
-                                        gspec->ui_step_small,
-                                        gspec->ui_step_big);
-      gegl_param_spec_double_set_digits (GEGL_PARAM_SPEC_DOUBLE (copy),
-                                         gspec->ui_digits);
-    }
   else if (G_IS_PARAM_SPEC_DOUBLE (pspec))
     {
       GParamSpecDouble *spec = G_PARAM_SPEC_DOUBLE (pspec);
 
-      copy = g_param_spec_double (name, nick, blurb,
-                                  spec->minimum,
-                                  spec->maximum,
-                                  spec->default_value,
-                                  flags);
+      if (GEGL_IS_PARAM_SPEC_DOUBLE (pspec))
+        {
+          GeglParamSpecDouble *gspec = GEGL_PARAM_SPEC_DOUBLE (pspec);
+
+          copy = gegl_param_spec_double (name, nick, blurb,
+                                         spec->minimum,
+                                         spec->maximum,
+                                         spec->default_value,
+                                         gspec->ui_minimum,
+                                         gspec->ui_maximum,
+                                         gspec->ui_gamma,
+                                         flags);
+          gegl_param_spec_double_set_steps (GEGL_PARAM_SPEC_DOUBLE (copy),
+                                            gspec->ui_step_small,
+                                            gspec->ui_step_big);
+          gegl_param_spec_double_set_digits (GEGL_PARAM_SPEC_DOUBLE (copy),
+                                             gspec->ui_digits);
+        }
+      else
+        {
+          copy = g_param_spec_double (name, nick, blurb,
+                                      spec->minimum,
+                                      spec->maximum,
+                                      spec->default_value,
+                                      flags);
+        }
     }
   else if (G_IS_PARAM_SPEC_FLOAT (pspec))
     {
@@ -161,66 +163,67 @@ gimp_config_param_spec_duplicate (GParamSpec *pspec)
                                  spec->default_value,
                                  flags);
     }
-  else if (GEGL_IS_PARAM_SPEC_INT (pspec))
-    {
-      GeglParamSpecInt *gspec = GEGL_PARAM_SPEC_INT (pspec);
-      GParamSpecInt    *spec  = G_PARAM_SPEC_INT (pspec);
-
-      copy = gegl_param_spec_int (name, nick, blurb,
-                                  spec->minimum,
-                                  spec->maximum,
-                                  spec->default_value,
-                                  gspec->ui_minimum,
-                                  gspec->ui_maximum,
-                                  gspec->ui_gamma,
-                                  flags);
-      gegl_param_spec_int_set_steps (GEGL_PARAM_SPEC_INT (copy),
-                                     gspec->ui_step_small,
-                                     gspec->ui_step_big);
-    }
-  else if (GEGL_IS_PARAM_SPEC_SEED (pspec))
-    {
-      GParamSpecUInt    *spec  = G_PARAM_SPEC_UINT (pspec);
-      GeglParamSpecSeed *gspec = GEGL_PARAM_SPEC_SEED (pspec);
-
-      copy = gegl_param_spec_seed (name, nick, blurb,
-                                   flags);
-
-      G_PARAM_SPEC_UINT (copy)->minimum = spec->minimum;
-      G_PARAM_SPEC_UINT (copy)->maximum = spec->maximum;
-
-      GEGL_PARAM_SPEC_SEED (copy)->ui_minimum = gspec->ui_minimum;
-      GEGL_PARAM_SPEC_SEED (copy)->ui_maximum = gspec->ui_maximum;
-    }
   else if (G_IS_PARAM_SPEC_INT (pspec))
     {
       GParamSpecInt *spec = G_PARAM_SPEC_INT (pspec);
 
-      copy = g_param_spec_int (name, nick, blurb,
-                               spec->minimum,
-                               spec->maximum,
-                               spec->default_value,
-                               flags);
+      if (GEGL_IS_PARAM_SPEC_INT (pspec))
+        {
+          GeglParamSpecInt *gspec = GEGL_PARAM_SPEC_INT (pspec);
+
+          copy = gegl_param_spec_int (name, nick, blurb,
+                                      spec->minimum,
+                                      spec->maximum,
+                                      spec->default_value,
+                                      gspec->ui_minimum,
+                                      gspec->ui_maximum,
+                                      gspec->ui_gamma,
+                                      flags);
+          gegl_param_spec_int_set_steps (GEGL_PARAM_SPEC_INT (copy),
+                                         gspec->ui_step_small,
+                                         gspec->ui_step_big);
+        }
+      else
+        {
+          copy = g_param_spec_int (name, nick, blurb,
+                                   spec->minimum,
+                                   spec->maximum,
+                                   spec->default_value,
+                                   flags);
+        }
     }
   else if (G_IS_PARAM_SPEC_UINT (pspec))
     {
       GParamSpecUInt *spec = G_PARAM_SPEC_UINT (pspec);
 
-      copy = g_param_spec_uint (name, nick, blurb,
-                                spec->minimum,
-                                spec->maximum,
-                                spec->default_value,
-                                flags);
+      if (GEGL_IS_PARAM_SPEC_SEED (pspec))
+        {
+          GeglParamSpecSeed *gspec = GEGL_PARAM_SPEC_SEED (pspec);
+
+          copy = gegl_param_spec_seed (name, nick, blurb,
+                                       flags);
+
+          G_PARAM_SPEC_UINT (copy)->minimum       = spec->minimum;
+          G_PARAM_SPEC_UINT (copy)->maximum       = spec->maximum;
+          G_PARAM_SPEC_UINT (copy)->default_value = spec->default_value;
+
+          GEGL_PARAM_SPEC_SEED (copy)->ui_minimum = gspec->ui_minimum;
+          GEGL_PARAM_SPEC_SEED (copy)->ui_maximum = gspec->ui_maximum;
+        }
+      else
+        {
+          copy = g_param_spec_uint (name, nick, blurb,
+                                    spec->minimum,
+                                    spec->maximum,
+                                    spec->default_value,
+                                    flags);
+        }
     }
   else if (GIMP_IS_PARAM_SPEC_RGB (pspec))
     {
-      GValue  value = G_VALUE_INIT;
       GimpRGB color;
 
-      g_value_init (&value, GIMP_TYPE_RGB);
-      g_param_value_set_default (pspec, &value);
-      gimp_value_get_rgb (&value, &color);
-      g_value_unset (&value);
+      gimp_param_spec_rgb_get_default (pspec, &color);
 
       copy = gimp_param_spec_rgb (name, nick, blurb,
                                   gimp_param_spec_rgb_has_alpha (pspec),


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