summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuiz Capitulino <lcapitulino@redhat.com>2010-01-21 19:15:38 -0200
committerAnthony Liguori <aliguori@us.ibm.com>2010-01-26 15:42:01 -0600
commit59eb1c85cd5f416e8f8743db27d0c98c15b64d18 (patch)
treec4218e1ce964f9ae24e069275155433c02c733a3
parent0a7fc983ceb21ee45a9ad4dbc9163394f8aa0fb6 (diff)
downloadqemu-59eb1c85cd5f416e8f8743db27d0c98c15b64d18.tar.gz
QList: Introduce QLIST_FOREACH_ENTRY()
Iterate over QList entries, it's needed to call qlist_entry_obj() to retrieve the stored QObject. I'm not sure if it's ok to have this, because it's not as easy as qlist_iter() and the QListEntry data type is now exposed to the users, which means we have one more struct to be maintained when we have libqmp. Adding anyway, as it's more compact and people are asking for it. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r--qlist.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/qlist.h b/qlist.h
index afdc4465bf..a3261e1781 100644
--- a/qlist.h
+++ b/qlist.h
@@ -29,6 +29,16 @@ typedef struct QList {
#define qlist_append(qlist, obj) \
qlist_append_obj(qlist, QOBJECT(obj))
+#define QLIST_FOREACH_ENTRY(qlist, var) \
+ for ((var) = ((qlist)->head.tqh_first); \
+ (var); \
+ (var) = ((var)->next.tqe_next))
+
+static inline QObject *qlist_entry_obj(const QListEntry *entry)
+{
+ return entry->value;
+}
+
QList *qlist_new(void);
QList *qlist_copy(QList *src);
void qlist_append_obj(QList *qlist, QObject *obj);