1*f6dc9357SAndroid Build Coastguard Worker /* 7zCrc.h -- CRC32 calculation 2*f6dc9357SAndroid Build Coastguard Worker 2024-01-22 : Igor Pavlov : Public domain */ 3*f6dc9357SAndroid Build Coastguard Worker 4*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_7Z_CRC_H 5*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_7Z_CRC_H 6*f6dc9357SAndroid Build Coastguard Worker 7*f6dc9357SAndroid Build Coastguard Worker #include "7zTypes.h" 8*f6dc9357SAndroid Build Coastguard Worker 9*f6dc9357SAndroid Build Coastguard Worker EXTERN_C_BEGIN 10*f6dc9357SAndroid Build Coastguard Worker 11*f6dc9357SAndroid Build Coastguard Worker extern UInt32 g_CrcTable[]; 12*f6dc9357SAndroid Build Coastguard Worker 13*f6dc9357SAndroid Build Coastguard Worker /* Call CrcGenerateTable one time before other CRC functions */ 14*f6dc9357SAndroid Build Coastguard Worker void Z7_FASTCALL CrcGenerateTable(void); 15*f6dc9357SAndroid Build Coastguard Worker 16*f6dc9357SAndroid Build Coastguard Worker #define CRC_INIT_VAL 0xFFFFFFFF 17*f6dc9357SAndroid Build Coastguard Worker #define CRC_GET_DIGEST(crc) ((crc) ^ CRC_INIT_VAL) 18*f6dc9357SAndroid Build Coastguard Worker #define CRC_UPDATE_BYTE(crc, b) (g_CrcTable[((crc) ^ (b)) & 0xFF] ^ ((crc) >> 8)) 19*f6dc9357SAndroid Build Coastguard Worker 20*f6dc9357SAndroid Build Coastguard Worker UInt32 Z7_FASTCALL CrcUpdate(UInt32 crc, const void *data, size_t size); 21*f6dc9357SAndroid Build Coastguard Worker UInt32 Z7_FASTCALL CrcCalc(const void *data, size_t size); 22*f6dc9357SAndroid Build Coastguard Worker 23*f6dc9357SAndroid Build Coastguard Worker typedef UInt32 (Z7_FASTCALL *Z7_CRC_UPDATE_FUNC)(UInt32 v, const void *data, size_t size); 24*f6dc9357SAndroid Build Coastguard Worker Z7_CRC_UPDATE_FUNC z7_GetFunc_CrcUpdate(unsigned algo); 25*f6dc9357SAndroid Build Coastguard Worker 26*f6dc9357SAndroid Build Coastguard Worker EXTERN_C_END 27*f6dc9357SAndroid Build Coastguard Worker 28*f6dc9357SAndroid Build Coastguard Worker #endif 29