~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Nginx/core/ngx_queue.h

Version: ~ [ nginx-0.8.20 ] ~ [ nginx-0.7.62 ] ~ [ nginx-0.6.39 ] ~

  1 
  2 /*
  3  * Copyright (C) Igor Sysoev
  4  */
  5 
  6 
  7 #include <ngx_config.h>
  8 #include <ngx_core.h>
  9 
 10 
 11 #ifndef _NGX_QUEUE_H_INCLUDED_
 12 #define _NGX_QUEUE_H_INCLUDED_
 13 
 14 
 15 typedef struct ngx_queue_s  ngx_queue_t;
 16 
 17 struct ngx_queue_s {
 18     ngx_queue_t  *prev;
 19     ngx_queue_t  *next;
 20 };
 21 
 22 
 23 #define ngx_queue_init(q)                                                     \
 24     (q)->prev = q;                                                            \
 25     (q)->next = q
 26 
 27 
 28 #define ngx_queue_empty(h)                                                    \
 29     (h == (h)->prev)
 30 
 31 
 32 #define ngx_queue_insert_head(h, x)                                           \
 33     (x)->next = (h)->next;                                                    \
 34     (x)->next->prev = x;                                                      \
 35     (x)->prev = h;                                                            \
 36     (h)->next = x
 37 
 38 
 39 #define ngx_queue_insert_after   ngx_queue_insert_head
 40 
 41 
 42 #define ngx_queue_insert_tail(h, x)                                           \
 43     (x)->prev = (h)->prev;                                                    \
 44     (x)->prev->next = x;                                                      \
 45     (x)->next = h;                                                            \
 46     (h)->prev = x
 47 
 48 
 49 #define ngx_queue_head(h)                                                     \
 50     (h)->next
 51 
 52 
 53 #define ngx_queue_last(h)                                                     \
 54     (h)->prev
 55 
 56 
 57 #define ngx_queue_sentinel(h)                                                 \
 58     (h)
 59 
 60 
 61 #define ngx_queue_next(q)                                                     \
 62     (q)->next
 63 
 64 
 65 #define ngx_queue_prev(q)                                                     \
 66     (q)->prev
 67 
 68 
 69 #if (NGX_DEBUG)
 70 
 71 #define ngx_queue_remove(x)                                                   \
 72     (x)->next->prev = (x)->prev;                                              \
 73     (x)->prev->next = (x)->next;                                              \
 74     (x)->prev = NULL;                                                         \
 75     (x)->next = NULL
 76 
 77 #else
 78 
 79 #define ngx_queue_remove(x)                                                   \
 80     (x)->next->prev = (x)->prev;                                              \
 81     (x)->prev->next = (x)->next
 82 
 83 #endif
 84 
 85 
 86 #define ngx_queue_split(h, q, n)                                              \
 87     (n)->prev = (h)->prev;                                                    \
 88     (n)->prev->next = n;                                                      \
 89     (n)->next = q;                                                            \
 90     (h)->prev = (q)->prev;                                                    \
 91     (h)->prev->next = h;                                                      \
 92     (q)->prev = n;
 93 
 94 
 95 #define ngx_queue_add(h, n)                                                   \
 96     (h)->prev->next = (n)->next;                                              \
 97     (n)->next->prev = (h)->prev;                                              \
 98     (h)->prev = (n)->prev;                                                    \
 99     (h)->prev->next = h;
100 
101 
102 #define ngx_queue_data(q, type, link)                                         \
103     (type *) ((u_char *) q - offsetof(type, link))
104 
105 
106 ngx_queue_t *ngx_queue_middle(ngx_queue_t *queue);
107 void ngx_queue_sort(ngx_queue_t *queue,
108     ngx_int_t (*cmp)(const ngx_queue_t *, const ngx_queue_t *));
109 
110 
111 #endif /* _NGX_QUEUE_H_INCLUDED_ */
112 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.