[libgovirt] utils: Get enum default value from GParamSpec



commit 71daeb6204e107510a55d95fe279be11497d0fe9
Author: Eduardo Lima (Etrunko) <etrunko redhat com>
Date:   Tue Oct 3 17:51:41 2017 -0300

    utils: Get enum default value from GParamSpec
    
    Instead of assuming 0 as the default value, use the one specified during
    property creation time with g_param_spec_enum().
    
    Signed-off-by: Eduardo Lima (Etrunko) <etrunko redhat com>

 govirt/ovirt-utils.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)
---
diff --git a/govirt/ovirt-utils.c b/govirt/ovirt-utils.c
index a0146fd..dfaf09d 100644
--- a/govirt/ovirt-utils.c
+++ b/govirt/ovirt-utils.c
@@ -169,13 +169,14 @@ _set_property_value_from_basic_type(GValue *value,
 
 static gboolean
 _set_property_value_from_type(GValue *value,
-                              GType type,
+                              GParamSpec *prop,
                               const char *path,
                               const char *attr,
                               RestXmlNode *node)
 {
     gboolean ret = TRUE;
     const char *value_str;
+    GType type = prop->value_type;
 
     if (g_type_is_a(type, OVIRT_TYPE_RESOURCE)) {
         OvirtResource *resource_value = ovirt_resource_new_from_xml(type, node, NULL);
@@ -202,7 +203,8 @@ _set_property_value_from_type(GValue *value,
         return FALSE;
 
     if (G_TYPE_IS_ENUM(type)) {
-        int enum_value = ovirt_utils_genum_get_value(type, value_str, 0);
+        GParamSpecEnum *enum_prop = G_PARAM_SPEC_ENUM(prop);
+        int enum_value = ovirt_utils_genum_get_value(type, value_str, enum_prop->default_value);
         g_value_set_enum(value, enum_value);
         goto end;
     }
@@ -229,7 +231,7 @@ ovirt_rest_xml_node_parse(RestXmlNode *node,
         g_return_val_if_fail(prop != NULL, FALSE);
 
         g_value_init(&value, prop->value_type);
-        if (_set_property_value_from_type(&value, prop->value_type, elements->xml_path, elements->xml_attr, 
node))
+        if (_set_property_value_from_type(&value, prop, elements->xml_path, elements->xml_attr, node))
             g_object_set_property(object, elements->prop_name, &value);
         g_value_unset(&value);
     }


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