X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=qobject%2Fqlist.c;h=86b60cb88ccbeff25d95b29d1c73c92ba9970985;hb=f82c5b17ea85d8f432069a4afd6cbdb65d9d8a66;hp=1ced0de58e21467327aeb94223e4ee67bd114d1e;hpb=a372823a14461c454feaa86373bd672fd518847a;p=mirror_qemu.git diff --git a/qobject/qlist.c b/qobject/qlist.c index 1ced0de58e..86b60cb88c 100644 --- a/qobject/qlist.c +++ b/qobject/qlist.c @@ -10,18 +10,12 @@ * See the COPYING.LIB file in the top-level directory. */ +#include "qemu/osdep.h" #include "qapi/qmp/qlist.h" #include "qapi/qmp/qobject.h" #include "qemu/queue.h" #include "qemu-common.h" -static void qlist_destroy_obj(QObject *obj); - -static const QType qlist_type = { - .code = QTYPE_QLIST, - .destroy = qlist_destroy_obj, -}; - /** * qlist_new(): Create a new QList * @@ -32,8 +26,8 @@ QList *qlist_new(void) QList *qlist; qlist = g_malloc(sizeof(*qlist)); + qobject_init(QOBJECT(qlist), QTYPE_QLIST); QTAILQ_INIT(&qlist->head); - QOBJECT_INIT(qlist, &qlist_type); return qlist; } @@ -106,7 +100,6 @@ QObject *qlist_pop(QList *qlist) QObject *qlist_peek(QList *qlist) { QListEntry *entry; - QObject *ret; if (qlist == NULL || QTAILQ_EMPTY(&qlist->head)) { return NULL; @@ -114,9 +107,7 @@ QObject *qlist_peek(QList *qlist) entry = QTAILQ_FIRST(&qlist->head); - ret = entry->value; - - return ret; + return entry->value; } int qlist_empty(const QList *qlist) @@ -142,17 +133,16 @@ size_t qlist_size(const QList *qlist) */ QList *qobject_to_qlist(const QObject *obj) { - if (qobject_type(obj) != QTYPE_QLIST) { + if (!obj || qobject_type(obj) != QTYPE_QLIST) { return NULL; } - return container_of(obj, QList, base); } /** * qlist_destroy_obj(): Free all the memory allocated by a QList */ -static void qlist_destroy_obj(QObject *obj) +void qlist_destroy_obj(QObject *obj) { QList *qlist; QListEntry *entry, *next_entry;