Annotation of embedaddon/nginx/src/core/ngx_list.h, revision 1.1

1.1     ! misho       1: 
        !             2: /*
        !             3:  * Copyright (C) Igor Sysoev
        !             4:  * Copyright (C) Nginx, Inc.
        !             5:  */
        !             6: 
        !             7: 
        !             8: #ifndef _NGX_LIST_H_INCLUDED_
        !             9: #define _NGX_LIST_H_INCLUDED_
        !            10: 
        !            11: 
        !            12: #include <ngx_config.h>
        !            13: #include <ngx_core.h>
        !            14: 
        !            15: 
        !            16: typedef struct ngx_list_part_s  ngx_list_part_t;
        !            17: 
        !            18: struct ngx_list_part_s {
        !            19:     void             *elts;
        !            20:     ngx_uint_t        nelts;
        !            21:     ngx_list_part_t  *next;
        !            22: };
        !            23: 
        !            24: 
        !            25: typedef struct {
        !            26:     ngx_list_part_t  *last;
        !            27:     ngx_list_part_t   part;
        !            28:     size_t            size;
        !            29:     ngx_uint_t        nalloc;
        !            30:     ngx_pool_t       *pool;
        !            31: } ngx_list_t;
        !            32: 
        !            33: 
        !            34: ngx_list_t *ngx_list_create(ngx_pool_t *pool, ngx_uint_t n, size_t size);
        !            35: 
        !            36: static ngx_inline ngx_int_t
        !            37: ngx_list_init(ngx_list_t *list, ngx_pool_t *pool, ngx_uint_t n, size_t size)
        !            38: {
        !            39:     list->part.elts = ngx_palloc(pool, n * size);
        !            40:     if (list->part.elts == NULL) {
        !            41:         return NGX_ERROR;
        !            42:     }
        !            43: 
        !            44:     list->part.nelts = 0;
        !            45:     list->part.next = NULL;
        !            46:     list->last = &list->part;
        !            47:     list->size = size;
        !            48:     list->nalloc = n;
        !            49:     list->pool = pool;
        !            50: 
        !            51:     return NGX_OK;
        !            52: }
        !            53: 
        !            54: 
        !            55: /*
        !            56:  *
        !            57:  *  the iteration through the list:
        !            58:  *
        !            59:  *  part = &list.part;
        !            60:  *  data = part->elts;
        !            61:  *
        !            62:  *  for (i = 0 ;; i++) {
        !            63:  *
        !            64:  *      if (i >= part->nelts) {
        !            65:  *          if (part->next == NULL) {
        !            66:  *              break;
        !            67:  *          }
        !            68:  *
        !            69:  *          part = part->next;
        !            70:  *          data = part->elts;
        !            71:  *          i = 0;
        !            72:  *      }
        !            73:  *
        !            74:  *      ...  data[i] ...
        !            75:  *
        !            76:  *  }
        !            77:  */
        !            78: 
        !            79: 
        !            80: void *ngx_list_push(ngx_list_t *list);
        !            81: 
        !            82: 
        !            83: #endif /* _NGX_LIST_H_INCLUDED_ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>