Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/ngx_hash.h')
-rw-r--r--src/core/ngx_hash.h80
1 files changed, 68 insertions, 12 deletions
diff --git a/src/core/ngx_hash.h b/src/core/ngx_hash.h
index e9912579a..7449d0571 100644
--- a/src/core/ngx_hash.h
+++ b/src/core/ngx_hash.h
@@ -13,25 +13,81 @@
typedef struct {
- void **buckets;
- ngx_uint_t hash_size;
-
- ngx_uint_t max_size;
- ngx_uint_t bucket_limit;
- size_t bucket_size;
- char *name;
- ngx_uint_t min_buckets;
+ void *value;
+ u_char len;
+ u_char name[1];
+} ngx_hash_elt_t;
+
+
+typedef struct {
+ ngx_hash_elt_t **buckets;
+ ngx_uint_t size;
} ngx_hash_t;
typedef struct {
- ngx_uint_t hash;
- ngx_str_t key;
- ngx_str_t value;
+ ngx_hash_t hash;
+ void *value;
+} ngx_hash_wildcard_t;
+
+
+typedef struct {
+ ngx_str_t key;
+ ngx_uint_t key_hash;
+ void *value;
+} ngx_hash_key_t;
+
+
+typedef ngx_uint_t (*ngx_hash_key_pt) (u_char *data, size_t len);
+
+
+typedef struct {
+ ngx_hash_t *hash;
+ ngx_hash_key_pt key;
+
+ ngx_uint_t max_size;
+ ngx_uint_t bucket_size;
+
+ char *name;
+ ngx_pool_t *pool;
+ ngx_pool_t *temp_pool;
+} ngx_hash_init_t;
+
+
+typedef struct {
+ void **buckets;
+ ngx_uint_t hash_size;
+
+ ngx_uint_t max_size;
+ ngx_uint_t bucket_limit;
+ size_t bucket_size;
+ char *name;
+ ngx_uint_t min_buckets;
+} ngx_hash0_t;
+
+
+typedef struct {
+ ngx_uint_t hash;
+ ngx_str_t key;
+ ngx_str_t value;
} ngx_table_elt_t;
-ngx_int_t ngx_hash_init(ngx_hash_t *hash, ngx_pool_t *pool, void *names,
+void *ngx_hash_find(ngx_hash_t *hash, ngx_uint_t key, u_char *name, size_t len);
+void *ngx_hash_find_wildcard(ngx_hash_wildcard_t *hwc, u_char *name,
+ size_t len);
+
+ngx_int_t ngx_hash_init(ngx_hash_init_t *hinit, ngx_hash_key_t *names,
+ ngx_uint_t nelts);
+ngx_int_t ngx_hash_wildcard_init(ngx_hash_init_t *hinit, ngx_hash_key_t *names,
+ ngx_uint_t nelts);
+
+#define ngx_hash(key, c) key * 31 + c
+ngx_uint_t ngx_hash_key(u_char *data, size_t len);
+ngx_uint_t ngx_hash_key_lc(u_char *data, size_t len);
+
+
+ngx_int_t ngx_hash0_init(ngx_hash0_t *hash, ngx_pool_t *pool, void *names,
ngx_uint_t nelts);