File:  [Qemu by Fabrice Bellard] / qemu / qlist.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 18:24:08 2018 UTC (3 years, 1 month ago) by root
Branches: qemu, MAIN
CVS tags: qemu0150, qemu0141, qemu0140, qemu0130, HEAD
qemu 0.13.0

    1: /*
    2:  * QList Module
    3:  *
    4:  * Copyright (C) 2009 Red Hat Inc.
    5:  *
    6:  * Authors:
    7:  *  Luiz Capitulino <lcapitulino@redhat.com>
    8:  *
    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.
   11:  */
   12: 
   13: #ifndef QLIST_H
   14: #define QLIST_H
   15: 
   16: #include "qobject.h"
   17: #include "qemu-queue.h"
   18: #include "qemu-common.h"
   19: 
   20: typedef struct QListEntry {
   21:     QObject *value;
   22:     QTAILQ_ENTRY(QListEntry) next;
   23: } QListEntry;
   24: 
   25: typedef struct QList {
   26:     QObject_HEAD;
   27:     QTAILQ_HEAD(,QListEntry) head;
   28: } QList;
   29: 
   30: #define qlist_append(qlist, obj) \
   31:         qlist_append_obj(qlist, QOBJECT(obj))
   32: 
   33: #define QLIST_FOREACH_ENTRY(qlist, var)             \
   34:         for ((var) = ((qlist)->head.tqh_first);     \
   35:             (var);                                  \
   36:             (var) = ((var)->next.tqe_next))
   37: 
   38: static inline QObject *qlist_entry_obj(const QListEntry *entry)
   39: {
   40:     return entry->value;
   41: }
   42: 
   43: QList *qlist_new(void);
   44: QList *qlist_copy(QList *src);
   45: void qlist_append_obj(QList *qlist, QObject *obj);
   46: void qlist_iter(const QList *qlist,
   47:                 void (*iter)(QObject *obj, void *opaque), void *opaque);
   48: QObject *qlist_pop(QList *qlist);
   49: QObject *qlist_peek(QList *qlist);
   50: int qlist_empty(const QList *qlist);
   51: QList *qobject_to_qlist(const QObject *obj);
   52: 
   53: #endif /* QLIST_H */

unix.superglobalmegacorp.com