QDict: Introduce qdict_iter()
This adds iterator support to QDict, it will be used by the (to be introduced) QError module. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
422c46a81d
commit
21f800d340
19
qdict.c
19
qdict.c
@ -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
|
||||
*/
|
||||
|
3
qdict.h
3
qdict.h
@ -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) \
|
||||
|
Loading…
Reference in New Issue
Block a user