[retro-gtk/wip/aplazas/options: 1/3] option: Rename current value from 'current' into 'value'



commit 8db7ec7c7dcacd1bde9c0b4a1d7d9d0ffe0f8dac
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Fri Nov 24 10:49:36 2017 +0100

    option: Rename current value from 'current' into 'value'
    
    Also store it as an index into the values array rather than a copy of
    the string.

 retro-gtk/retro-option.c  |   30 ++++++++++++++++--------------
 retro-gtk/retro-option.h  |    8 ++++----
 retro-gtk/retro-options.c |    4 ++--
 3 files changed, 22 insertions(+), 20 deletions(-)
---
diff --git a/retro-gtk/retro-option.c b/retro-gtk/retro-option.c
index 525dd60..1430f0c 100644
--- a/retro-gtk/retro-option.c
+++ b/retro-gtk/retro-option.c
@@ -8,7 +8,7 @@ struct _RetroOption
   gchar *key;
   gchar *description;
   gchar **values;
-  gchar *current;
+  gsize value;
 };
 
 G_DEFINE_TYPE (RetroOption, retro_option, G_TYPE_OBJECT)
@@ -33,7 +33,6 @@ retro_option_finalize (GObject *object)
   g_free (self->key);
   g_free (self->description);
   g_strfreev (self->values);
-  g_free (self->current);
 
   G_OBJECT_CLASS (retro_option_parent_class)->finalize (object);
 }
@@ -78,26 +77,31 @@ retro_option_get_values (RetroOption *self)
 }
 
 const gchar *
-retro_option_get_current (RetroOption *self)
+retro_option_get_value (RetroOption *self)
 {
   g_return_val_if_fail (RETRO_IS_OPTION (self), NULL);
 
-  return self->current;
+  return self->values[self->value];
 }
 
 void
-retro_option_set_current (RetroOption  *self,
-                          const gchar  *current,
-                          GError      **error)
+retro_option_set_value (RetroOption  *self,
+                        const gchar  *value,
+                        GError      **error)
 {
+  gsize i;
+
   g_return_if_fail (RETRO_IS_OPTION (self));
-  g_return_if_fail (current != NULL);
+  g_return_if_fail (value != NULL);
 
-  g_message ("%s, %s", self->current, current);
-  if (g_strcmp0 (self->current, current) == 0)
+  if (g_strcmp0 (self->values[self->value], value) == 0)
     return;
 
-  if (G_UNLIKELY (g_strv_contains ((const gchar *const *) self->values, current))) {
+  for (i = 0; self->values[i] != NULL; i++)
+    if (g_strcmp0 (self->values[0], value) == 0)
+      break;
+
+  if (G_UNLIKELY (self->values[i] == NULL)) {
     g_set_error_literal (error,
                          RETRO_OPTION_ERROR,
                          RETRO_OPTION_ERROR_INVALID_VALUE,
@@ -106,8 +110,7 @@ retro_option_set_current (RetroOption  *self,
     return;
   }
 
-  g_free (self->current);
-  self->current = g_strdup (current);
+  self->value = i;
 }
 
 RetroOption *
@@ -150,7 +153,6 @@ retro_option_new (const RetroVariable  *variable,
   self->description = g_strndup (variable->value,
                                  description_separator - variable->value);
   self->values = values;
-  self->current = g_strdup (values[0]);
 
   return self;
 }
diff --git a/retro-gtk/retro-option.h b/retro-gtk/retro-option.h
index 38f650d..e1f1224 100644
--- a/retro-gtk/retro-option.h
+++ b/retro-gtk/retro-option.h
@@ -21,10 +21,10 @@ RetroOption *retro_option_new (const RetroVariable  *variable,
 const gchar *retro_option_get_key (RetroOption *self);
 const gchar *retro_option_get_description (RetroOption *self);
 const gchar **retro_option_get_values (RetroOption *self);
-const gchar *retro_option_get_current (RetroOption *self);
-void retro_option_set_current (RetroOption  *self,
-                               const gchar  *current,
-                               GError      **error);
+const gchar *retro_option_get_value (RetroOption *self);
+void retro_option_set_value (RetroOption  *self,
+                             const gchar  *value,
+                             GError      **error);
 
 G_END_DECLS
 
diff --git a/retro-gtk/retro-options.c b/retro-gtk/retro-options.c
index f6a12c0..c8f29bf 100644
--- a/retro-gtk/retro-options.c
+++ b/retro-gtk/retro-options.c
@@ -82,7 +82,7 @@ retro_options_get_option_value (RetroOptions *self,
 
   option = RETRO_OPTION (g_hash_table_lookup (self->options, key));
 
-  return retro_option_get_current (option);
+  return retro_option_get_value (option);
 }
 
 void
@@ -99,7 +99,7 @@ retro_options_set_option_value (RetroOptions *self,
 
   option = RETRO_OPTION (g_hash_table_lookup (self->options, key));
 
-  retro_option_set_current (option, value, &tmp_error);
+  retro_option_set_value (option, value, &tmp_error);
   if (G_UNLIKELY (tmp_error != NULL)) {
     g_clear_error (&tmp_error);
 


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