diff src/core/ngx_list.h @ 414:388a842cbbe1

nginx-0.0.10-2004-09-03-19:50:30 import
author Igor Sysoev <igor@sysoev.ru>
date Fri, 03 Sep 2004 15:50:30 +0000
parents
children 3c56e834be46
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/src/core/ngx_list.h
@@ -0,0 +1,48 @@
+#ifndef _NGX_LIST_H_INCLUDED_
+#define _NGX_LIST_H_INCLUDED_
+
+
+#include <ngx_config.h>
+#include <ngx_core.h>
+
+
+typedef struct ngx_list_part_s  ngx_list_part_t;
+
+struct ngx_list_part_s {
+    void             *elts;
+    ngx_uint_t        nelts;
+    ngx_list_part_t  *next;
+};
+
+
+typedef struct {
+    ngx_list_part_t  *last;
+    ngx_list_part_t   part;
+    size_t            size;
+    ngx_uint_t        nalloc;
+    ngx_pool_t       *pool;
+} ngx_list_t;
+
+
+#define ngx_init_list(l, p, n, s, rc)                                        \
+    if (!(l.part.elts = ngx_palloc(p, n * s))) {                             \
+        return rc;                                                           \
+    }                                                                        \
+    l.part.nelts = 0; l.part.next = NULL;                                    \
+    l.last = &l.part; l.size = s; l.nalloc = n; l.pool = p;
+
+
+#define ngx_iterate_list(p, i)                                               \
+            for ( ;; i++) {                                                  \
+                if (i >= p->nelts) {                                         \
+                    if (p->next == NULL) {                                   \
+                        break;                                               \
+                    }                                                        \
+                    p = p->next; i = 0;                                      \
+                }
+
+
+void *ngx_push_list(ngx_list_t *list);
+
+
+#endif /* _NGX_LIST_H_INCLUDED_ */