1*f6dc9357SAndroid Build Coastguard Worker // BZip2Crc.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_BZIP2_CRC_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_BZIP2_CRC_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/MyTypes.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker class CBZip2Crc 9*f6dc9357SAndroid Build Coastguard Worker { 10*f6dc9357SAndroid Build Coastguard Worker UInt32 _value; 11*f6dc9357SAndroid Build Coastguard Worker static UInt32 Table[256]; 12*f6dc9357SAndroid Build Coastguard Worker public: 13*f6dc9357SAndroid Build Coastguard Worker static void InitTable(); _value(initVal)14*f6dc9357SAndroid Build Coastguard Worker CBZip2Crc(UInt32 initVal = 0xFFFFFFFF): _value(initVal) {} 15*f6dc9357SAndroid Build Coastguard Worker void Init(UInt32 initVal = 0xFFFFFFFF) { _value = initVal; } UpdateByte(Byte b)16*f6dc9357SAndroid Build Coastguard Worker void UpdateByte(Byte b) { _value = Table[(_value >> 24) ^ b] ^ (_value << 8); } UpdateByte(unsigned b)17*f6dc9357SAndroid Build Coastguard Worker void UpdateByte(unsigned b) { _value = Table[(_value >> 24) ^ b] ^ (_value << 8); } GetDigest()18*f6dc9357SAndroid Build Coastguard Worker UInt32 GetDigest() const { return _value ^ 0xFFFFFFFF; } 19*f6dc9357SAndroid Build Coastguard Worker }; 20*f6dc9357SAndroid Build Coastguard Worker 21*f6dc9357SAndroid Build Coastguard Worker class CBZip2CombinedCrc 22*f6dc9357SAndroid Build Coastguard Worker { 23*f6dc9357SAndroid Build Coastguard Worker UInt32 _value; 24*f6dc9357SAndroid Build Coastguard Worker public: CBZip2CombinedCrc()25*f6dc9357SAndroid Build Coastguard Worker CBZip2CombinedCrc(): _value(0) {} Init()26*f6dc9357SAndroid Build Coastguard Worker void Init() { _value = 0; } Update(UInt32 v)27*f6dc9357SAndroid Build Coastguard Worker void Update(UInt32 v) { _value = ((_value << 1) | (_value >> 31)) ^ v; } GetDigest()28*f6dc9357SAndroid Build Coastguard Worker UInt32 GetDigest() const { return _value ; } 29*f6dc9357SAndroid Build Coastguard Worker }; 30*f6dc9357SAndroid Build Coastguard Worker 31*f6dc9357SAndroid Build Coastguard Worker #endif 32