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

[virt-tools-list] [libosinfo] More type-specific entity value getters/setters



From: "Zeeshan Ali (Khattak)" <zeeshanak gnome org>

Add:

* osinfo_entity_get_param_value_boolean_with_default
* osinfo_entity_get_param_value_int64
* osinfo_entity_set_param_int64

These methods already existed as private functions in media and
resources subclasses. This patch puts them where they belong, exposes
them in public API and renames them appropriately.
---
 osinfo/libosinfo.syms     |  7 +++++++
 osinfo/osinfo_entity.c    | 40 ++++++++++++++++++++++++++++++++++++-
 osinfo/osinfo_entity.h    |  5 +++++
 osinfo/osinfo_media.c     | 20 ++++---------------
 osinfo/osinfo_resources.c | 51 +++++++++++++++++++----------------------------
 5 files changed, 75 insertions(+), 48 deletions(-)

diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms
index 6060b1d..5f7bf21 100644
--- a/osinfo/libosinfo.syms
+++ b/osinfo/libosinfo.syms
@@ -301,6 +301,13 @@ LIBOSINFO_0.2.0 {
 	osinfo_os_find_install_script;
 } LIBOSINFO_0.1.0;
 
+LIBOSINFO_0.2.1 {
+    global:
+	osinfo_entity_get_param_value_boolean_with_default;
+	osinfo_entity_get_param_value_int64;
+	osinfo_entity_set_param_int64;
+} LIBOSINFO_0.2.0;
+
 /* Symbols in next release...
 
   LIBOSINFO_0.0.2 {
diff --git a/osinfo/osinfo_entity.c b/osinfo/osinfo_entity.c
index eafb4bd..21fa79d 100644
--- a/osinfo/osinfo_entity.c
+++ b/osinfo/osinfo_entity.c
@@ -201,6 +201,15 @@ void osinfo_entity_set_param_boolean(OsinfoEntity *entity, const gchar *key, gbo
     osinfo_entity_set_param(entity, key, value ? "true" : "false");
 }
 
+void osinfo_entity_set_param_int64(OsinfoEntity *entity, const gchar *key, gint64 value)
+{
+    gchar *str;
+
+    str = g_strdup_printf("%"G_GUINT64_FORMAT, value);
+    osinfo_entity_set_param(entity, key, str);
+    g_free(str);
+}
+
 /**
  * osinfo_entity_add_param:
  * @entity: OsinfoEntity containing the parameters
@@ -311,14 +320,43 @@ const gchar *osinfo_entity_get_param_value(OsinfoEntity *entity, const gchar *ke
     return NULL;
 }
 
+static gboolean str_to_bool(const char *str)
+{
+    return (g_strcmp0("true", str) == 0 || g_strcmp0("yes", str) == 0);
+}
 
 gboolean osinfo_entity_get_param_value_boolean(OsinfoEntity *entity, const gchar *key)
 {
     const gchar *value = osinfo_entity_get_param_value(entity, key);
 
-    return value && g_str_equal(value, "true");
+    return value && str_to_bool(value);
 }
 
+gboolean osinfo_entity_get_param_value_boolean_with_default(OsinfoEntity *entity,
+                                                            const char *key,
+                                                            gboolean default_value)
+{
+    const gchar *value;
+
+    value = osinfo_entity_get_param_value(entity, key);
+    if (value == NULL)
+        return default_value;
+    else
+        return str_to_bool(value);
+}
+
+gint64 osinfo_entity_get_param_value_int64(OsinfoEntity *entity,
+                                           const gchar *key)
+{
+    const gchar *str;
+
+    str = osinfo_entity_get_param_value(entity, key);
+
+    if (str == NULL)
+        return -1;
+
+    return (gint64) g_ascii_strtod(str, NULL);
+}
 
 /**
  * osinfo_entity_get_param_value_list:
diff --git a/osinfo/osinfo_entity.h b/osinfo/osinfo_entity.h
index 9a99704..e7704d6 100644
--- a/osinfo/osinfo_entity.h
+++ b/osinfo/osinfo_entity.h
@@ -71,9 +71,14 @@ const gchar *osinfo_entity_get_id(OsinfoEntity *entity);
 GList *osinfo_entity_get_param_keys(OsinfoEntity *entity);
 const gchar *osinfo_entity_get_param_value(OsinfoEntity *entity, const gchar *key);
 gboolean osinfo_entity_get_param_value_boolean(OsinfoEntity *entity, const gchar *key);
+gboolean osinfo_entity_get_param_value_boolean_with_default(OsinfoEntity *entity,
+                                                            const char *key,
+                                                            gboolean default_value);
+gint64 osinfo_entity_get_param_value_int64(OsinfoEntity *entity, const gchar *key);
 GList *osinfo_entity_get_param_value_list(OsinfoEntity *entity, const gchar *key);
 void osinfo_entity_set_param(OsinfoEntity *entity, const gchar *key, const gchar *value);
 void osinfo_entity_set_param_boolean(OsinfoEntity *entity, const gchar *key, gboolean value);
+void osinfo_entity_set_param_int64(OsinfoEntity *entity, const gchar *key, gint64 value);
 void osinfo_entity_add_param(OsinfoEntity *entity, const gchar *key, const gchar *value);
 void osinfo_entity_clear_param(OsinfoEntity *entity, const gchar *key);
 
diff --git a/osinfo/osinfo_media.c b/osinfo/osinfo_media.c
index 9cc3538..e03bfe0 100644
--- a/osinfo/osinfo_media.c
+++ b/osinfo/osinfo_media.c
@@ -988,20 +988,6 @@ const gchar *osinfo_media_get_initrd_path(OsinfoMedia *media)
                                          OSINFO_MEDIA_PROP_INITRD);
 }
 
-static gboolean get_param_as_bool (OsinfoMedia *media,
-                                   const char *key,
-                                   gboolean default_value)
-{
-    const gchar *value;
-
-    value = osinfo_entity_get_param_value(OSINFO_ENTITY(media), key);
-    if (value == NULL)
-        return default_value;
-
-    return (g_strcmp0 ("true", value) == 0 ||
-            g_strcmp0 ("yes", value) == 0);
-}
-
 /**
  * osinfo_media_get_installer:
  * @media: a #OsinfoMedia instance
@@ -1012,7 +998,8 @@ static gboolean get_param_as_bool (OsinfoMedia *media,
  */
 gboolean osinfo_media_get_installer(OsinfoMedia *media)
 {
-    return get_param_as_bool (media, OSINFO_MEDIA_PROP_INSTALLER, TRUE);
+    return osinfo_entity_get_param_value_boolean_with_default
+            (OSINFO_ENTITY(media), OSINFO_MEDIA_PROP_INSTALLER, TRUE);
 }
 
 /**
@@ -1025,7 +1012,8 @@ gboolean osinfo_media_get_installer(OsinfoMedia *media)
  */
 gboolean osinfo_media_get_live(OsinfoMedia *media)
 {
-    return get_param_as_bool (media, OSINFO_MEDIA_PROP_LIVE, FALSE);
+    return osinfo_entity_get_param_value_boolean_with_default
+            (OSINFO_ENTITY(media), OSINFO_MEDIA_PROP_LIVE, FALSE);
 }
 
 /*
diff --git a/osinfo/osinfo_resources.c b/osinfo/osinfo_resources.c
index 9f1e4e4..29f62bd 100644
--- a/osinfo/osinfo_resources.c
+++ b/osinfo/osinfo_resources.c
@@ -61,29 +61,6 @@ struct _OsinfoResourcesPrivate
     gboolean unused;
 };
 
-static gint64 get_param_as_int64(OsinfoResources *resources,
-                                 const gchar *key)
-{
-    const gchar *str;
-
-    str = osinfo_entity_get_param_value(OSINFO_ENTITY(resources), key);
-
-    if (str == NULL)
-        return -1;
-
-    return (gint64) g_ascii_strtod(str, NULL);
-}
-
-static void set_param_from_int64(OsinfoResources *resources,
-                                 const gchar *key,
-                                 gint64 value)
-{
-    gchar *str;
-
-    str = g_strdup_printf("%"G_GUINT64_FORMAT, value);
-    osinfo_entity_set_param(OSINFO_ENTITY(resources), key, str);
-}
-
 static void
 osinfo_resources_finalize (GObject *object)
 {
@@ -324,7 +301,8 @@ const gchar *osinfo_resources_get_architecture(OsinfoResources *resources)
  */
 gint osinfo_resources_get_n_cpus(OsinfoResources *resources)
 {
-    return (gint) get_param_as_int64(resources, OSINFO_RESOURCES_PROP_N_CPUS);
+    return (gint) osinfo_entity_get_param_value_int64
+            (OSINFO_ENTITY(resources), OSINFO_RESOURCES_PROP_N_CPUS);
 }
 
 /**
@@ -338,7 +316,8 @@ gint osinfo_resources_get_n_cpus(OsinfoResources *resources)
  */
 gint64 osinfo_resources_get_cpu(OsinfoResources *resources)
 {
-    return get_param_as_int64(resources, OSINFO_RESOURCES_PROP_CPU);
+    return osinfo_entity_get_param_value_int64
+            (OSINFO_ENTITY(resources), OSINFO_RESOURCES_PROP_CPU);
 }
 
 /**
@@ -352,7 +331,8 @@ gint64 osinfo_resources_get_cpu(OsinfoResources *resources)
  */
 gint64 osinfo_resources_get_ram(OsinfoResources *resources)
 {
-    return get_param_as_int64(resources, OSINFO_RESOURCES_PROP_RAM);
+    return osinfo_entity_get_param_value_int64
+            (OSINFO_ENTITY(resources), OSINFO_RESOURCES_PROP_RAM);
 }
 
 /**
@@ -366,7 +346,8 @@ gint64 osinfo_resources_get_ram(OsinfoResources *resources)
  */
 gint64 osinfo_resources_get_storage(OsinfoResources *resources)
 {
-    return get_param_as_int64(resources, OSINFO_RESOURCES_PROP_STORAGE);
+    return osinfo_entity_get_param_value_int64
+            (OSINFO_ENTITY(resources), OSINFO_RESOURCES_PROP_STORAGE);
 }
 
 /**
@@ -378,7 +359,9 @@ gint64 osinfo_resources_get_storage(OsinfoResources *resources)
  */
 void osinfo_resources_set_n_cpus(OsinfoResources *resources, gint n_cpus)
 {
-    set_param_from_int64 (resources, OSINFO_RESOURCES_PROP_N_CPUS, n_cpus);
+    osinfo_entity_set_param_int64(OSINFO_ENTITY(resources),
+                                  OSINFO_RESOURCES_PROP_N_CPUS,
+                                  n_cpus);
 }
 
 /**
@@ -390,7 +373,9 @@ void osinfo_resources_set_n_cpus(OsinfoResources *resources, gint n_cpus)
  */
 void osinfo_resources_set_cpu(OsinfoResources *resources, gint64 cpu)
 {
-    set_param_from_int64 (resources, OSINFO_RESOURCES_PROP_CPU, cpu);
+    osinfo_entity_set_param_int64(OSINFO_ENTITY(resources),
+                                  OSINFO_RESOURCES_PROP_CPU,
+                                  cpu);
 }
 
 /**
@@ -402,7 +387,9 @@ void osinfo_resources_set_cpu(OsinfoResources *resources, gint64 cpu)
  */
 void osinfo_resources_set_ram(OsinfoResources *resources, gint64 ram)
 {
-    set_param_from_int64 (resources, OSINFO_RESOURCES_PROP_RAM, ram);
+    osinfo_entity_set_param_int64(OSINFO_ENTITY(resources),
+                                  OSINFO_RESOURCES_PROP_RAM,
+                                  ram);
 }
 
 /**
@@ -414,7 +401,9 @@ void osinfo_resources_set_ram(OsinfoResources *resources, gint64 ram)
  */
 void osinfo_resources_set_storage(OsinfoResources *resources, gint64 storage)
 {
-    set_param_from_int64 (resources, OSINFO_RESOURCES_PROP_STORAGE, storage);
+    osinfo_entity_set_param_int64(OSINFO_ENTITY(resources),
+                                  OSINFO_RESOURCES_PROP_STORAGE,
+                                  storage);
 }
 
 /*
-- 
1.7.12


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