crc: don't break current API while also supporting calculations with a seed.

This commit is contained in:
Pablo Curiel 2021-05-20 09:19:56 -04:00
parent 033dae81bd
commit cff30a68ad

View File

@ -24,11 +24,12 @@ do { \
} \ } \
} while (0) } while (0)
/// Calculate a CRC32 over data. /// Calculate a CRC32 over data using a seed.
static inline u32 crc32Calculate(u32 cur_crc, const void *src, size_t size) { /// Can be used to calculate a CRC32 in chunks using an initial seed of zero for the first chunk.
static inline u32 crc32CalculateWithSeed(u32 seed, const void *src, size_t size) {
const u8 *src_u8 = (const u8 *)src; const u8 *src_u8 = (const u8 *)src;
u32 crc = ~cur_crc; u32 crc = ~seed;
s64 len = size; s64 len = size;
_CRC_ALIGN(u8, b); _CRC_ALIGN(u8, b);
@ -47,11 +48,17 @@ static inline u32 crc32Calculate(u32 cur_crc, const void *src, size_t size) {
return ~crc; return ~crc;
} }
/// Calculate a CRC32C over data. /// Calculate a CRC32 over data.
static inline u32 crc32cCalculate(u32 cur_crc, const void *src, size_t size) { static inline u32 crc32Calculate(const void *src, size_t size) {
return crc32CalculateWithSeed(0, src, size);
}
/// Calculate a CRC32C over data using a seed.
/// Can be used to calculate a CRC32C in chunks using an initial seed of zero for the first chunk.
static inline u32 crc32cCalculateWithSeed(u32 seed, const void *src, size_t size) {
const u8 *src_u8 = (const u8 *)src; const u8 *src_u8 = (const u8 *)src;
u32 crc = ~cur_crc; u32 crc = ~seed;
s64 len = size; s64 len = size;
_CRC_ALIGN(u8, cb); _CRC_ALIGN(u8, cb);
@ -70,5 +77,10 @@ static inline u32 crc32cCalculate(u32 cur_crc, const void *src, size_t size) {
return ~crc; return ~crc;
} }
/// Calculate a CRC32C over data.
static inline u32 crc32cCalculate(const void *src, size_t size) {
return crc32cCalculateWithSeed(0, src, size);
}
#undef _CRC_REMAINDER #undef _CRC_REMAINDER
#undef _CRC_ALIGN #undef _CRC_ALIGN