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