73 unsigned char _buf[7];
81#define clod_sip64_init(seed) ((clod_sip64_state){\
82 ._v0 = UINT64_C(0x736f6d6570736575) ^ seed,\
83 ._v1 = UINT64_C(0x646f72616e646f6d) ^ seed,\
84 ._v2 = UINT64_C(0x6c7967656e657261) ^ seed,\
85 ._v3 = UINT64_C(0x7465646279746573) ^ seed,\
100CLOD_API CLOD_USE_RETURN CLOD_PURE CLOD_NONNULL(2)
112CLOD_API CLOD_USE_RETURN CLOD_PURE
126#define clod_sip64(seed, data, size) clod_sip64_finalise(clod_sip64_add(clod_sip64_init(seed), data, size))
131#define clod_crc64_init() UINT64_C(0xFFFFFFFFFFFFFFFF)
146CLOD_API CLOD_USE_RETURN CLOD_PURE
159#define clod_crc64_add_at(crc, data, data_size, offset) \
160 (crc ^ clod_crc64_add(clod_crc64_add(0, data, data_size), nullptr, offset))
168#define clod_crc64_finalise(crc) (crc ^ UINT64_C(0xFFFFFFFFFFFFFFFF))
177#define clod_crc64(data, size) clod_crc64_finalise(clod_crc64_add(clod_crc64_init(), data, size))
182#define clod_crc32_init() UINT32_C(0xFFFFFFFF)
199CLOD_API CLOD_USE_RETURN CLOD_PURE
212#define clod_crc32_add_at(crc, data, data_size, offset) \
213 (crc ^ clod_crc32_add(clod_crc32_add(0, data, data_size), nullptr, offset))
221#define clod_crc32_finalise(crc) (crc ^ UINT32_C(0xFFFFFFFF))
230#define clod_crc32(data, size) clod_crc32_finalise(clod_crc32_add(clod_crc32_init(), data, size))
235#define clod_crc24_init() UINT32_C(0xFFFFFF)
250CLOD_API CLOD_USE_RETURN CLOD_PURE
263#define clod_crc24_add_at(crc, data, data_size, offset) \
264 (crc ^ clod_crc24_add(clod_crc24_add(0, data, data_size), nullptr, offset))
272#define clod_crc24_finalise(crc) (crc ^ UINT32_C(0xFFFFFF))
281#define clod_crc24(data, size) clod_crc24_finalise(clod_crc24_add(clod_crc24_init(), data, size))
286#define clod_crc16_init() UINT16_C(0xFFFF)
301CLOD_API CLOD_USE_RETURN CLOD_PURE
314#define clod_crc16_add_at(crc, data, data_size, offset) \
315 (crc ^ clod_crc16_add(clod_crc16_add(0, data, data_size), nullptr, offset))
323#define clod_crc16_finalise(crc) (crc ^ UINT16_C(0xFFFF))
332#define clod_crc16(data, size) clod_crc16_finalise(clod_crc16_add(clod_crc16_init(), data, size))
337#define clod_crc8_init() UINT8_C(0xFF)
352CLOD_API CLOD_USE_RETURN CLOD_PURE
365#define clod_crc8_add_at(crc, data, data_size, offset) \
366 (crc ^ clod_crc8_add(clod_crc8_add(0, data, data_size), nullptr, offset))
374#define clod_crc8_finalise(crc) (crc ^ UINT8_C(0xFF))
383#define clod_crc8(data, size) clod_crc8_finalise(clod_crc8_add(clod_crc8_init(), data, size))
uint64_t clod_crc64_add(uint64_t crc, const void *data, size_t data_len)
uint64_t clod_sip64_finalise(clod_sip64_state state)
uint8_t clod_crc8_add(uint8_t crc, const void *data, size_t data_len)
uint32_t clod_crc24_add(uint32_t crc, const void *data, size_t data_len)
uint32_t clod_crc32_add(uint32_t crc, const void *data, size_t data_len)
clod_sip64_state clod_sip64_add(clod_sip64_state state, const void *data, size_t size)
uint16_t clod_crc16_add(uint16_t crc, const void *data, size_t data_len)