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

Linux Cross Reference
Nginx/core/ngx_list.h

Version: ~ [ nginx-0.6.26 ] ~ [ nginx-0.5.35 ] ~ [ nginx-0.5.20 ] ~ [ nginx-0.5.19 ] ~

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

~ [ 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.