Annotation of embedaddon/nginx/src/core/ngx_crc32.h, revision 1.1.1.1

1.1       misho       1: 
                      2: /*
                      3:  * Copyright (C) Igor Sysoev
                      4:  * Copyright (C) Nginx, Inc.
                      5:  */
                      6: 
                      7: 
                      8: #ifndef _NGX_CRC32_H_INCLUDED_
                      9: #define _NGX_CRC32_H_INCLUDED_
                     10: 
                     11: 
                     12: #include <ngx_config.h>
                     13: #include <ngx_core.h>
                     14: 
                     15: 
                     16: extern uint32_t  *ngx_crc32_table_short;
                     17: extern uint32_t   ngx_crc32_table256[];
                     18: 
                     19: 
                     20: static ngx_inline uint32_t
                     21: ngx_crc32_short(u_char *p, size_t len)
                     22: {
                     23:     u_char    c;
                     24:     uint32_t  crc;
                     25: 
                     26:     crc = 0xffffffff;
                     27: 
                     28:     while (len--) {
                     29:         c = *p++;
                     30:         crc = ngx_crc32_table_short[(crc ^ (c & 0xf)) & 0xf] ^ (crc >> 4);
                     31:         crc = ngx_crc32_table_short[(crc ^ (c >> 4)) & 0xf] ^ (crc >> 4);
                     32:     }
                     33: 
                     34:     return crc ^ 0xffffffff;
                     35: }
                     36: 
                     37: 
                     38: static ngx_inline uint32_t
                     39: ngx_crc32_long(u_char *p, size_t len)
                     40: {
                     41:     uint32_t  crc;
                     42: 
                     43:     crc = 0xffffffff;
                     44: 
                     45:     while (len--) {
                     46:         crc = ngx_crc32_table256[(crc ^ *p++) & 0xff] ^ (crc >> 8);
                     47:     }
                     48: 
                     49:     return crc ^ 0xffffffff;
                     50: }
                     51: 
                     52: 
                     53: #define ngx_crc32_init(crc)                                                   \
                     54:     crc = 0xffffffff
                     55: 
                     56: 
                     57: static ngx_inline void
                     58: ngx_crc32_update(uint32_t *crc, u_char *p, size_t len)
                     59: {
                     60:     uint32_t  c;
                     61: 
                     62:     c = *crc;
                     63: 
                     64:     while (len--) {
                     65:         c = ngx_crc32_table256[(c ^ *p++) & 0xff] ^ (c >> 8);
                     66:     }
                     67: 
                     68:     *crc = c;
                     69: }
                     70: 
                     71: 
                     72: #define ngx_crc32_final(crc)                                                  \
                     73:     crc ^= 0xffffffff
                     74: 
                     75: 
                     76: ngx_int_t ngx_crc32_table_init(void);
                     77: 
                     78: 
                     79: #endif /* _NGX_CRC32_H_INCLUDED_ */

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