xref: /unit/src/nxt_djb_hash.h (revision 2084:7d479274f334)
10Sigor@sysoev.ru 
20Sigor@sysoev.ru /*
30Sigor@sysoev.ru  * Copyright (C) Igor Sysoev
40Sigor@sysoev.ru  * Copyright (C) NGINX, Inc.
50Sigor@sysoev.ru  */
60Sigor@sysoev.ru 
70Sigor@sysoev.ru #ifndef _NXT_DJB_HASH_H_INCLUDED_
80Sigor@sysoev.ru #define _NXT_DJB_HASH_H_INCLUDED_
90Sigor@sysoev.ru 
100Sigor@sysoev.ru 
110Sigor@sysoev.ru /* A fast and simple hash function by Daniel J. Bernstein. */
120Sigor@sysoev.ru 
130Sigor@sysoev.ru 
140Sigor@sysoev.ru NXT_EXPORT uint32_t nxt_djb_hash(const void *data, size_t len);
150Sigor@sysoev.ru NXT_EXPORT uint32_t nxt_djb_hash_lowcase(const void *data, size_t len);
160Sigor@sysoev.ru 
170Sigor@sysoev.ru 
180Sigor@sysoev.ru #define NXT_DJB_HASH_INIT  5381
190Sigor@sysoev.ru 
200Sigor@sysoev.ru 
21*2084Salx.manpages@gmail.com #define nxt_djb_hash_add(hash, val)                                           \
220Sigor@sysoev.ru     ((uint32_t) ((((hash) << 5) + (hash)) ^ (uint32_t) (val)))
230Sigor@sysoev.ru 
240Sigor@sysoev.ru 
250Sigor@sysoev.ru #endif /* _NXT_DJB_HASH_H_INCLUDED_ */
26