Annotation of qemu/qlist.h, revision 1.1.1.3

1.1       root        1: /*
1.1.1.2   root        2:  * QList Module
1.1       root        3:  *
                      4:  * Copyright (C) 2009 Red Hat Inc.
                      5:  *
                      6:  * Authors:
                      7:  *  Luiz Capitulino <lcapitulino@redhat.com>
                      8:  *
1.1.1.2   root        9:  * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
                     10:  * See the COPYING.LIB file in the top-level directory.
1.1       root       11:  */
1.1.1.2   root       12: 
1.1       root       13: #ifndef QLIST_H
                     14: #define QLIST_H
                     15: 
                     16: #include "qobject.h"
                     17: #include "qemu-queue.h"
                     18: #include "qemu-common.h"
1.1.1.3 ! root       19: #include "qemu-queue.h"
1.1       root       20: 
                     21: typedef struct QListEntry {
                     22:     QObject *value;
                     23:     QTAILQ_ENTRY(QListEntry) next;
                     24: } QListEntry;
                     25: 
                     26: typedef struct QList {
                     27:     QObject_HEAD;
                     28:     QTAILQ_HEAD(,QListEntry) head;
                     29: } QList;
                     30: 
                     31: #define qlist_append(qlist, obj) \
                     32:         qlist_append_obj(qlist, QOBJECT(obj))
                     33: 
1.1.1.2   root       34: #define QLIST_FOREACH_ENTRY(qlist, var)             \
                     35:         for ((var) = ((qlist)->head.tqh_first);     \
                     36:             (var);                                  \
                     37:             (var) = ((var)->next.tqe_next))
                     38: 
                     39: static inline QObject *qlist_entry_obj(const QListEntry *entry)
                     40: {
                     41:     return entry->value;
                     42: }
                     43: 
1.1       root       44: QList *qlist_new(void);
                     45: QList *qlist_copy(QList *src);
                     46: void qlist_append_obj(QList *qlist, QObject *obj);
                     47: void qlist_iter(const QList *qlist,
                     48:                 void (*iter)(QObject *obj, void *opaque), void *opaque);
                     49: QObject *qlist_pop(QList *qlist);
                     50: QObject *qlist_peek(QList *qlist);
                     51: int qlist_empty(const QList *qlist);
                     52: QList *qobject_to_qlist(const QObject *obj);
                     53: 
1.1.1.3 ! root       54: static inline const QListEntry *qlist_first(const QList *qlist)
        !            55: {
        !            56:     return QTAILQ_FIRST(&qlist->head);
        !            57: }
        !            58: 
        !            59: static inline const QListEntry *qlist_next(const QListEntry *entry)
        !            60: {
        !            61:     return QTAILQ_NEXT(entry, next);
        !            62: }
        !            63: 
1.1       root       64: #endif /* QLIST_H */

unix.superglobalmegacorp.com