static uint32_t buzhash(const unsigned char *data, size_t len, const uint32_t *h) { size_t i; uint32_t sum = 0; for(i = len - 1; i > 0; i--) { sum ^= BARREL_SHIFT(h[*data], i); data++; } return sum ^ h[*data]; }
static uint32_t buzhash_update(uint32_t sum, unsigned char remove, unsigned char add, size_t len, const uint32_t *h) { return BARREL_SHIFT(sum, 1) ^ BARREL_SHIFT(h[remove], len) ^ h[add]; }
static uint32_t buzhash_update(uint32_t sum, unsigned char remove, unsigned char add, size_t len, const uint32_t *h) { uint32_t lenmod = len & 0x1f; /* Note: replace by constant to get small speedup */ return BARREL_SHIFT(sum, 1) ^ BARREL_SHIFT(h[remove], lenmod) ^ h[add]; }