From: "Zeeshan Ali (Khattak)" <zeeshanak@xxxxxxxxx> 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