qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH v4 2/7] qmp: convert QMP code to use object property


From: Daniel P. Berrange
Subject: [Qemu-devel] [PATCH v4 2/7] qmp: convert QMP code to use object property iterators
Date: Tue, 13 Oct 2015 13:37:41 +0100

Stop directly accessing the Object "properties" field data
structure and instead use the formal object property iterator
APIs. This insulates the code from future data structure
changes in the Object struct.

Signed-off-by: Daniel P. Berrange <address@hidden>
---
 qmp.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/qmp.c b/qmp.c
index d9ecede..5d99439 100644
--- a/qmp.c
+++ b/qmp.c
@@ -208,6 +208,7 @@ ObjectPropertyInfoList *qmp_qom_list(const char *path, 
Error **errp)
     bool ambiguous = false;
     ObjectPropertyInfoList *props = NULL;
     ObjectProperty *prop;
+    ObjectPropertyIterator *iter;
 
     obj = object_resolve_path(path, &ambiguous);
     if (obj == NULL) {
@@ -220,7 +221,8 @@ ObjectPropertyInfoList *qmp_qom_list(const char *path, 
Error **errp)
         return NULL;
     }
 
-    QTAILQ_FOREACH(prop, &obj->properties, node) {
+    iter = object_property_iter_init(obj);
+    while ((prop = object_property_iter_next(iter))) {
         ObjectPropertyInfoList *entry = g_malloc0(sizeof(*entry));
 
         entry->value = g_malloc0(sizeof(ObjectPropertyInfo));
@@ -230,6 +232,7 @@ ObjectPropertyInfoList *qmp_qom_list(const char *path, 
Error **errp)
         entry->value->name = g_strdup(prop->name);
         entry->value->type = g_strdup(prop->type);
     }
+    object_property_iter_free(iter);
 
     return props;
 }
@@ -500,6 +503,7 @@ DevicePropertyInfoList *qmp_device_list_properties(const 
char *typename,
     ObjectClass *klass;
     Object *obj;
     ObjectProperty *prop;
+    ObjectPropertyIterator *iter;
     DevicePropertyInfoList *prop_list = NULL;
 
     klass = object_class_by_name(typename);
@@ -528,7 +532,8 @@ DevicePropertyInfoList *qmp_device_list_properties(const 
char *typename,
 
     obj = object_new(typename);
 
-    QTAILQ_FOREACH(prop, &obj->properties, node) {
+    iter = object_property_iter_init(obj);
+    while ((prop = object_property_iter_next(iter))) {
         DevicePropertyInfo *info;
         DevicePropertyInfoList *entry;
 
@@ -559,6 +564,7 @@ DevicePropertyInfoList *qmp_device_list_properties(const 
char *typename,
         entry->next = prop_list;
         prop_list = entry;
     }
+    object_property_iter_free(iter);
 
     object_unref(obj);
 
-- 
2.4.3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]