[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] qom: add object_property_is_set
From: |
Marcel Apfelbaum |
Subject: |
[Qemu-devel] [PATCH] qom: add object_property_is_set |
Date: |
Tue, 18 Feb 2014 18:46:27 +0200 |
Sometimes is not enough to get property's value,
but it is needed to know if the value was actually set.
This is especially useful when querying bool properties
and having different defaults on different scenarios.
Signed-off-by: Marcel Apfelbaum <address@hidden>
---
include/qom/object.h | 11 +++++++++++
qom/object.c | 12 ++++++++++++
2 files changed, 23 insertions(+)
diff --git a/include/qom/object.h b/include/qom/object.h
index e0ff212..9257bb1 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -319,6 +319,7 @@ typedef struct ObjectProperty
{
gchar *name;
gchar *type;
+ bool is_set;
ObjectPropertyAccessor *get;
ObjectPropertyAccessor *set;
ObjectPropertyRelease *release;
@@ -931,6 +932,16 @@ void object_property_set(Object *obj, struct Visitor *v,
const char *name,
Error **errp);
/**
+ * object_property_is_set:
+ * @obj: the object
+ * @name: the name of the property
+ * @errp: returns an error if this function fails
+ *
+ * Returns: true if object's property is set, false otherwise.
+ */
+bool object_property_is_set(Object *obj, const char *name,
+ Error **errp);
+/**
* object_property_parse:
* @obj: the object
* @string: the string that will be used to parse the property value.
diff --git a/qom/object.c b/qom/object.c
index 62e7e41..229a601 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -817,9 +817,21 @@ void object_property_set(Object *obj, Visitor *v, const
char *name,
error_set(errp, QERR_PERMISSION_DENIED);
} else {
prop->set(obj, v, prop->opaque, name, errp);
+ prop->is_set = true;
}
}
+bool object_property_is_set(Object *obj, const char *name,
+ Error **errp)
+{
+ ObjectProperty *prop = object_property_find(obj, name, errp);
+ if (prop == NULL) {
+ return false;
+ }
+
+ return prop->is_set;
+}
+
void object_property_set_str(Object *obj, const char *value,
const char *name, Error **errp)
{
--
1.8.3.1
- [Qemu-devel] [PATCH] qom: add object_property_is_set,
Marcel Apfelbaum <=