1*0Sigor@sysoev.ru 2*0Sigor@sysoev.ru /* 3*0Sigor@sysoev.ru * Copyright (C) Igor Sysoev 4*0Sigor@sysoev.ru * Copyright (C) NGINX, Inc. 5*0Sigor@sysoev.ru */ 6*0Sigor@sysoev.ru 7*0Sigor@sysoev.ru #ifndef _NXT_DJB_HASH_H_INCLUDED_ 8*0Sigor@sysoev.ru #define _NXT_DJB_HASH_H_INCLUDED_ 9*0Sigor@sysoev.ru 10*0Sigor@sysoev.ru 11*0Sigor@sysoev.ru /* A fast and simple hash function by Daniel J. Bernstein. */ 12*0Sigor@sysoev.ru 13*0Sigor@sysoev.ru 14*0Sigor@sysoev.ru NXT_EXPORT uint32_t nxt_djb_hash(const void *data, size_t len); 15*0Sigor@sysoev.ru NXT_EXPORT uint32_t nxt_djb_hash_lowcase(const void *data, size_t len); 16*0Sigor@sysoev.ru 17*0Sigor@sysoev.ru 18*0Sigor@sysoev.ru #define NXT_DJB_HASH_INIT 5381 19*0Sigor@sysoev.ru 20*0Sigor@sysoev.ru 21*0Sigor@sysoev.ru #define \ 22*0Sigor@sysoev.ru nxt_djb_hash_add(hash, val) \ 23*0Sigor@sysoev.ru ((uint32_t) ((((hash) << 5) + (hash)) ^ (uint32_t) (val))) 24*0Sigor@sysoev.ru 25*0Sigor@sysoev.ru 26*0Sigor@sysoev.ru #endif /* _NXT_DJB_HASH_H_INCLUDED_ */ 27