提交 21f800d3 编写于 作者: L Luiz Capitulino 提交者: Anthony Liguori

QDict: Introduce qdict_iter()

This adds iterator support to QDict, it will be used by the
(to be introduced) QError module.
Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
上级 422c46a8
......@@ -241,6 +241,25 @@ const char *qdict_get_try_str(const QDict *qdict, const char *key)
return qstring_get_str(qobject_to_qstring(obj));
}
/**
* qdict_iter(): Iterate over all the dictionary's stored values.
*
* This function allows the user to provide an iterator, which will be
* called for each stored value in the dictionary.
*/
void qdict_iter(const QDict *qdict,
void (*iter)(const char *key, QObject *obj, void *opaque),
void *opaque)
{
int i;
QDictEntry *entry;
for (i = 0; i < QDICT_HASH_SIZE; i++) {
QLIST_FOREACH(entry, &qdict->table[i], next)
iter(entry->key, entry->value, opaque);
}
}
/**
* qentry_destroy(): Free all the memory allocated by a QDictEntry
*/
......
......@@ -27,6 +27,9 @@ void qdict_del(QDict *qdict, const char *key);
int qdict_haskey(const QDict *qdict, const char *key);
QObject *qdict_get(const QDict *qdict, const char *key);
QDict *qobject_to_qdict(const QObject *obj);
void qdict_iter(const QDict *qdict,
void (*iter)(const char *key, QObject *obj, void *opaque),
void *opaque);
/* Helper to qdict_put_obj(), accepts any object */
#define qdict_put(qdict, key, obj) \
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册