diff options
Diffstat (limited to 'CPP/7zip/Compress/BZip2/BZip2CRC.h')
-rwxr-xr-x | CPP/7zip/Compress/BZip2/BZip2CRC.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/CPP/7zip/Compress/BZip2/BZip2CRC.h b/CPP/7zip/Compress/BZip2/BZip2CRC.h new file mode 100755 index 00000000..8ac2a504 --- /dev/null +++ b/CPP/7zip/Compress/BZip2/BZip2CRC.h @@ -0,0 +1,31 @@ +// BZip2CRC.h + +#ifndef __BZIP2_CRC_H +#define __BZIP2_CRC_H + +#include "Common/Types.h" + +class CBZip2CRC +{ + UInt32 _value; + static UInt32 Table[256]; +public: + static void InitTable(); + CBZip2CRC(): _value(0xFFFFFFFF) {}; + void Init() { _value = 0xFFFFFFFF; } + void UpdateByte(Byte b) { _value = Table[(_value >> 24) ^ b] ^ (_value << 8); } + void UpdateByte(unsigned int b) { _value = Table[(_value >> 24) ^ b] ^ (_value << 8); } + UInt32 GetDigest() const { return _value ^ 0xFFFFFFFF; } +}; + +class CBZip2CombinedCRC +{ + UInt32 _value; +public: + CBZip2CombinedCRC(): _value(0){}; + void Init() { _value = 0; } + void Update(UInt32 v) { _value = ((_value << 1) | (_value >> 31)) ^ v; } + UInt32 GetDigest() const { return _value ; } +}; + +#endif |