xref: /aosp_15_r20/external/lzma/C/7zCrc.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
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