/src/CMake/Utilities/cmlibuv/src/queue.h
Line | Count | Source |
1 | | /* Copyright (c) 2013, Ben Noordhuis <info@bnoordhuis.nl> |
2 | | * |
3 | | * Permission to use, copy, modify, and/or distribute this software for any |
4 | | * purpose with or without fee is hereby granted, provided that the above |
5 | | * copyright notice and this permission notice appear in all copies. |
6 | | * |
7 | | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
8 | | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
9 | | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
10 | | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
11 | | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
12 | | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
13 | | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
14 | | */ |
15 | | |
16 | | #ifndef QUEUE_H_ |
17 | | #define QUEUE_H_ |
18 | | |
19 | | #include <stddef.h> |
20 | | |
21 | | #define uv__queue_data(pointer, type, field) \ |
22 | 0 | ((type*) ((char*) (pointer) - offsetof(type, field))) |
23 | | |
24 | | #define uv__queue_foreach(q, h) \ |
25 | 0 | for ((q) = (h)->next; (q) != (h); (q) = (q)->next) |
26 | | |
27 | 0 | static inline void uv__queue_init(struct uv__queue* q) { |
28 | 0 | q->next = q; |
29 | 0 | q->prev = q; |
30 | 0 | } Unexecuted instantiation: timer.c:uv__queue_init Unexecuted instantiation: uv-common.c:uv__queue_init Unexecuted instantiation: async.c:uv__queue_init Unexecuted instantiation: core.c:uv__queue_init Unexecuted instantiation: fs.c:uv__queue_init Unexecuted instantiation: loop-watcher.c:uv__queue_init Unexecuted instantiation: loop.c:uv__queue_init Unexecuted instantiation: pipe.c:uv__queue_init Unexecuted instantiation: poll.c:uv__queue_init Unexecuted instantiation: process.c:uv__queue_init Unexecuted instantiation: signal.c:uv__queue_init Unexecuted instantiation: stream.c:uv__queue_init Unexecuted instantiation: tcp.c:uv__queue_init Unexecuted instantiation: thread.c:uv__queue_init Unexecuted instantiation: tty.c:uv__queue_init Unexecuted instantiation: udp.c:uv__queue_init Unexecuted instantiation: linux.c:uv__queue_init Unexecuted instantiation: proctitle.c:uv__queue_init Unexecuted instantiation: fs-poll.c:uv__queue_init Unexecuted instantiation: inet.c:uv__queue_init Unexecuted instantiation: threadpool.c:uv__queue_init |
31 | | |
32 | 0 | static inline int uv__queue_empty(const struct uv__queue* q) { |
33 | 0 | return q == q->next; |
34 | 0 | } Unexecuted instantiation: timer.c:uv__queue_empty Unexecuted instantiation: uv-common.c:uv__queue_empty Unexecuted instantiation: async.c:uv__queue_empty Unexecuted instantiation: core.c:uv__queue_empty Unexecuted instantiation: fs.c:uv__queue_empty Unexecuted instantiation: loop-watcher.c:uv__queue_empty Unexecuted instantiation: loop.c:uv__queue_empty Unexecuted instantiation: pipe.c:uv__queue_empty Unexecuted instantiation: poll.c:uv__queue_empty Unexecuted instantiation: process.c:uv__queue_empty Unexecuted instantiation: signal.c:uv__queue_empty Unexecuted instantiation: stream.c:uv__queue_empty Unexecuted instantiation: tcp.c:uv__queue_empty Unexecuted instantiation: thread.c:uv__queue_empty Unexecuted instantiation: tty.c:uv__queue_empty Unexecuted instantiation: udp.c:uv__queue_empty Unexecuted instantiation: linux.c:uv__queue_empty Unexecuted instantiation: proctitle.c:uv__queue_empty Unexecuted instantiation: fs-poll.c:uv__queue_empty Unexecuted instantiation: inet.c:uv__queue_empty Unexecuted instantiation: threadpool.c:uv__queue_empty |
35 | | |
36 | 0 | static inline struct uv__queue* uv__queue_head(const struct uv__queue* q) { |
37 | 0 | return q->next; |
38 | 0 | } Unexecuted instantiation: timer.c:uv__queue_head Unexecuted instantiation: uv-common.c:uv__queue_head Unexecuted instantiation: async.c:uv__queue_head Unexecuted instantiation: core.c:uv__queue_head Unexecuted instantiation: fs.c:uv__queue_head Unexecuted instantiation: loop-watcher.c:uv__queue_head Unexecuted instantiation: loop.c:uv__queue_head Unexecuted instantiation: pipe.c:uv__queue_head Unexecuted instantiation: poll.c:uv__queue_head Unexecuted instantiation: process.c:uv__queue_head Unexecuted instantiation: signal.c:uv__queue_head Unexecuted instantiation: stream.c:uv__queue_head Unexecuted instantiation: tcp.c:uv__queue_head Unexecuted instantiation: thread.c:uv__queue_head Unexecuted instantiation: tty.c:uv__queue_head Unexecuted instantiation: udp.c:uv__queue_head Unexecuted instantiation: linux.c:uv__queue_head Unexecuted instantiation: proctitle.c:uv__queue_head Unexecuted instantiation: fs-poll.c:uv__queue_head Unexecuted instantiation: inet.c:uv__queue_head Unexecuted instantiation: threadpool.c:uv__queue_head |
39 | | |
40 | 0 | static inline struct uv__queue* uv__queue_next(const struct uv__queue* q) { |
41 | 0 | return q->next; |
42 | 0 | } Unexecuted instantiation: timer.c:uv__queue_next Unexecuted instantiation: uv-common.c:uv__queue_next Unexecuted instantiation: async.c:uv__queue_next Unexecuted instantiation: core.c:uv__queue_next Unexecuted instantiation: fs.c:uv__queue_next Unexecuted instantiation: loop-watcher.c:uv__queue_next Unexecuted instantiation: loop.c:uv__queue_next Unexecuted instantiation: pipe.c:uv__queue_next Unexecuted instantiation: poll.c:uv__queue_next Unexecuted instantiation: process.c:uv__queue_next Unexecuted instantiation: signal.c:uv__queue_next Unexecuted instantiation: stream.c:uv__queue_next Unexecuted instantiation: tcp.c:uv__queue_next Unexecuted instantiation: thread.c:uv__queue_next Unexecuted instantiation: tty.c:uv__queue_next Unexecuted instantiation: udp.c:uv__queue_next Unexecuted instantiation: linux.c:uv__queue_next Unexecuted instantiation: proctitle.c:uv__queue_next Unexecuted instantiation: fs-poll.c:uv__queue_next Unexecuted instantiation: inet.c:uv__queue_next Unexecuted instantiation: threadpool.c:uv__queue_next |
43 | | |
44 | 0 | static inline void uv__queue_add(struct uv__queue* h, struct uv__queue* n) { |
45 | 0 | h->prev->next = n->next; |
46 | 0 | n->next->prev = h->prev; |
47 | 0 | h->prev = n->prev; |
48 | 0 | h->prev->next = h; |
49 | 0 | } Unexecuted instantiation: timer.c:uv__queue_add Unexecuted instantiation: uv-common.c:uv__queue_add Unexecuted instantiation: async.c:uv__queue_add Unexecuted instantiation: core.c:uv__queue_add Unexecuted instantiation: fs.c:uv__queue_add Unexecuted instantiation: loop-watcher.c:uv__queue_add Unexecuted instantiation: loop.c:uv__queue_add Unexecuted instantiation: pipe.c:uv__queue_add Unexecuted instantiation: poll.c:uv__queue_add Unexecuted instantiation: process.c:uv__queue_add Unexecuted instantiation: signal.c:uv__queue_add Unexecuted instantiation: stream.c:uv__queue_add Unexecuted instantiation: tcp.c:uv__queue_add Unexecuted instantiation: thread.c:uv__queue_add Unexecuted instantiation: tty.c:uv__queue_add Unexecuted instantiation: udp.c:uv__queue_add Unexecuted instantiation: linux.c:uv__queue_add Unexecuted instantiation: proctitle.c:uv__queue_add Unexecuted instantiation: fs-poll.c:uv__queue_add Unexecuted instantiation: inet.c:uv__queue_add Unexecuted instantiation: threadpool.c:uv__queue_add |
50 | | |
51 | | static inline void uv__queue_split(struct uv__queue* h, |
52 | | struct uv__queue* q, |
53 | 0 | struct uv__queue* n) { |
54 | 0 | n->prev = h->prev; |
55 | 0 | n->prev->next = n; |
56 | 0 | n->next = q; |
57 | 0 | h->prev = q->prev; |
58 | 0 | h->prev->next = h; |
59 | 0 | q->prev = n; |
60 | 0 | } Unexecuted instantiation: timer.c:uv__queue_split Unexecuted instantiation: uv-common.c:uv__queue_split Unexecuted instantiation: async.c:uv__queue_split Unexecuted instantiation: core.c:uv__queue_split Unexecuted instantiation: fs.c:uv__queue_split Unexecuted instantiation: loop-watcher.c:uv__queue_split Unexecuted instantiation: loop.c:uv__queue_split Unexecuted instantiation: pipe.c:uv__queue_split Unexecuted instantiation: poll.c:uv__queue_split Unexecuted instantiation: process.c:uv__queue_split Unexecuted instantiation: signal.c:uv__queue_split Unexecuted instantiation: stream.c:uv__queue_split Unexecuted instantiation: tcp.c:uv__queue_split Unexecuted instantiation: thread.c:uv__queue_split Unexecuted instantiation: tty.c:uv__queue_split Unexecuted instantiation: udp.c:uv__queue_split Unexecuted instantiation: linux.c:uv__queue_split Unexecuted instantiation: proctitle.c:uv__queue_split Unexecuted instantiation: fs-poll.c:uv__queue_split Unexecuted instantiation: inet.c:uv__queue_split Unexecuted instantiation: threadpool.c:uv__queue_split |
61 | | |
62 | 0 | static inline void uv__queue_move(struct uv__queue* h, struct uv__queue* n) { |
63 | 0 | if (uv__queue_empty(h)) |
64 | 0 | uv__queue_init(n); |
65 | 0 | else |
66 | 0 | uv__queue_split(h, h->next, n); |
67 | 0 | } Unexecuted instantiation: timer.c:uv__queue_move Unexecuted instantiation: uv-common.c:uv__queue_move Unexecuted instantiation: async.c:uv__queue_move Unexecuted instantiation: core.c:uv__queue_move Unexecuted instantiation: fs.c:uv__queue_move Unexecuted instantiation: loop-watcher.c:uv__queue_move Unexecuted instantiation: loop.c:uv__queue_move Unexecuted instantiation: pipe.c:uv__queue_move Unexecuted instantiation: poll.c:uv__queue_move Unexecuted instantiation: process.c:uv__queue_move Unexecuted instantiation: signal.c:uv__queue_move Unexecuted instantiation: stream.c:uv__queue_move Unexecuted instantiation: tcp.c:uv__queue_move Unexecuted instantiation: thread.c:uv__queue_move Unexecuted instantiation: tty.c:uv__queue_move Unexecuted instantiation: udp.c:uv__queue_move Unexecuted instantiation: linux.c:uv__queue_move Unexecuted instantiation: proctitle.c:uv__queue_move Unexecuted instantiation: fs-poll.c:uv__queue_move Unexecuted instantiation: inet.c:uv__queue_move Unexecuted instantiation: threadpool.c:uv__queue_move |
68 | | |
69 | | static inline void uv__queue_insert_head(struct uv__queue* h, |
70 | 0 | struct uv__queue* q) { |
71 | 0 | q->next = h->next; |
72 | 0 | q->prev = h; |
73 | 0 | q->next->prev = q; |
74 | 0 | h->next = q; |
75 | 0 | } Unexecuted instantiation: timer.c:uv__queue_insert_head Unexecuted instantiation: uv-common.c:uv__queue_insert_head Unexecuted instantiation: async.c:uv__queue_insert_head Unexecuted instantiation: core.c:uv__queue_insert_head Unexecuted instantiation: fs.c:uv__queue_insert_head Unexecuted instantiation: loop-watcher.c:uv__queue_insert_head Unexecuted instantiation: loop.c:uv__queue_insert_head Unexecuted instantiation: pipe.c:uv__queue_insert_head Unexecuted instantiation: poll.c:uv__queue_insert_head Unexecuted instantiation: process.c:uv__queue_insert_head Unexecuted instantiation: signal.c:uv__queue_insert_head Unexecuted instantiation: stream.c:uv__queue_insert_head Unexecuted instantiation: tcp.c:uv__queue_insert_head Unexecuted instantiation: thread.c:uv__queue_insert_head Unexecuted instantiation: tty.c:uv__queue_insert_head Unexecuted instantiation: udp.c:uv__queue_insert_head Unexecuted instantiation: linux.c:uv__queue_insert_head Unexecuted instantiation: proctitle.c:uv__queue_insert_head Unexecuted instantiation: fs-poll.c:uv__queue_insert_head Unexecuted instantiation: inet.c:uv__queue_insert_head Unexecuted instantiation: threadpool.c:uv__queue_insert_head |
76 | | |
77 | | static inline void uv__queue_insert_tail(struct uv__queue* h, |
78 | 0 | struct uv__queue* q) { |
79 | 0 | q->next = h; |
80 | 0 | q->prev = h->prev; |
81 | 0 | q->prev->next = q; |
82 | 0 | h->prev = q; |
83 | 0 | } Unexecuted instantiation: timer.c:uv__queue_insert_tail Unexecuted instantiation: uv-common.c:uv__queue_insert_tail Unexecuted instantiation: async.c:uv__queue_insert_tail Unexecuted instantiation: core.c:uv__queue_insert_tail Unexecuted instantiation: fs.c:uv__queue_insert_tail Unexecuted instantiation: loop-watcher.c:uv__queue_insert_tail Unexecuted instantiation: loop.c:uv__queue_insert_tail Unexecuted instantiation: pipe.c:uv__queue_insert_tail Unexecuted instantiation: poll.c:uv__queue_insert_tail Unexecuted instantiation: process.c:uv__queue_insert_tail Unexecuted instantiation: signal.c:uv__queue_insert_tail Unexecuted instantiation: stream.c:uv__queue_insert_tail Unexecuted instantiation: tcp.c:uv__queue_insert_tail Unexecuted instantiation: thread.c:uv__queue_insert_tail Unexecuted instantiation: tty.c:uv__queue_insert_tail Unexecuted instantiation: udp.c:uv__queue_insert_tail Unexecuted instantiation: linux.c:uv__queue_insert_tail Unexecuted instantiation: proctitle.c:uv__queue_insert_tail Unexecuted instantiation: fs-poll.c:uv__queue_insert_tail Unexecuted instantiation: inet.c:uv__queue_insert_tail Unexecuted instantiation: threadpool.c:uv__queue_insert_tail |
84 | | |
85 | 0 | static inline void uv__queue_remove(struct uv__queue* q) { |
86 | 0 | q->prev->next = q->next; |
87 | 0 | q->next->prev = q->prev; |
88 | 0 | } Unexecuted instantiation: timer.c:uv__queue_remove Unexecuted instantiation: uv-common.c:uv__queue_remove Unexecuted instantiation: async.c:uv__queue_remove Unexecuted instantiation: core.c:uv__queue_remove Unexecuted instantiation: fs.c:uv__queue_remove Unexecuted instantiation: loop-watcher.c:uv__queue_remove Unexecuted instantiation: loop.c:uv__queue_remove Unexecuted instantiation: pipe.c:uv__queue_remove Unexecuted instantiation: poll.c:uv__queue_remove Unexecuted instantiation: process.c:uv__queue_remove Unexecuted instantiation: signal.c:uv__queue_remove Unexecuted instantiation: stream.c:uv__queue_remove Unexecuted instantiation: tcp.c:uv__queue_remove Unexecuted instantiation: thread.c:uv__queue_remove Unexecuted instantiation: tty.c:uv__queue_remove Unexecuted instantiation: udp.c:uv__queue_remove Unexecuted instantiation: linux.c:uv__queue_remove Unexecuted instantiation: proctitle.c:uv__queue_remove Unexecuted instantiation: fs-poll.c:uv__queue_remove Unexecuted instantiation: inet.c:uv__queue_remove Unexecuted instantiation: threadpool.c:uv__queue_remove |
89 | | |
90 | | #endif /* QUEUE_H_ */ |