Mercurial > hg > nginx
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_ */