Add qdict_clone_shallow()
Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
de9c0cec6c
commit
b382bc9a15
@ -64,4 +64,6 @@ int64_t qdict_get_try_int(const QDict *qdict, const char *key,
|
||||
int qdict_get_try_bool(const QDict *qdict, const char *key, int def_value);
|
||||
const char *qdict_get_try_str(const QDict *qdict, const char *key);
|
||||
|
||||
QDict *qdict_clone_shallow(const QDict *src);
|
||||
|
||||
#endif /* QDICT_H */
|
||||
|
@ -400,6 +400,28 @@ const QDictEntry *qdict_next(const QDict *qdict, const QDictEntry *entry)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* qdict_clone_shallow(): Clones a given QDict. Its entries are not copied, but
|
||||
* another reference is added.
|
||||
*/
|
||||
QDict *qdict_clone_shallow(const QDict *src)
|
||||
{
|
||||
QDict *dest;
|
||||
QDictEntry *entry;
|
||||
int i;
|
||||
|
||||
dest = qdict_new();
|
||||
|
||||
for (i = 0; i < QDICT_BUCKET_MAX; i++) {
|
||||
QLIST_FOREACH(entry, &src->table[i], next) {
|
||||
qobject_incref(entry->value);
|
||||
qdict_put_obj(dest, entry->key, entry->value);
|
||||
}
|
||||
}
|
||||
|
||||
return dest;
|
||||
}
|
||||
|
||||
/**
|
||||
* qentry_destroy(): Free all the memory allocated by a QDictEntry
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user