Mercurial > hg > nginx-vendor-current
diff src/core/ngx_array.h @ 0:f0b350454894 NGINX_0_1_0
nginx 0.1.0
*) The first public version.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 04 Oct 2004 00:00:00 +0400 |
parents | |
children | 74b1868dd3cd |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/src/core/ngx_array.h @@ -0,0 +1,54 @@ + +/* + * Copyright (C) Igor Sysoev + */ + + +#ifndef _NGX_ARRAY_H_INCLUDED_ +#define _NGX_ARRAY_H_INCLUDED_ + + +#include <ngx_config.h> +#include <ngx_core.h> + + +struct ngx_array_s { + void *elts; + ngx_uint_t nelts; + size_t size; + ngx_uint_t nalloc; + ngx_pool_t *pool; +}; + + +ngx_array_t *ngx_create_array(ngx_pool_t *p, ngx_uint_t n, size_t size); +void ngx_destroy_array(ngx_array_t *a); +void *ngx_push_array(ngx_array_t *a); + + +ngx_inline static ngx_int_t ngx_array_init(ngx_array_t *array, ngx_pool_t *pool, + ngx_uint_t n, size_t size) +{ + if (!(array->elts = ngx_palloc(pool, n * size))) { + return NGX_ERROR; + } + + array->nelts = 0; + array->size = size; + array->nalloc = n; + array->pool = pool; + + return NGX_OK; +} + + + +#define ngx_init_array(a, p, n, s, rc) \ + ngx_test_null(a.elts, ngx_palloc(p, n * s), rc); \ + a.nelts = 0; a.size = s; a.nalloc = n; a.pool = p; + +#define ngx_array_create ngx_create_array +#define ngx_array_push ngx_push_array + + +#endif /* _NGX_ARRAY_H_INCLUDED_ */