diff options
Diffstat (limited to 'src/libs/7zip/unix/CPP/7zip/Compress/BZip2Crc.h')
-rw-r--r-- | src/libs/7zip/unix/CPP/7zip/Compress/BZip2Crc.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/libs/7zip/unix/CPP/7zip/Compress/BZip2Crc.h b/src/libs/7zip/unix/CPP/7zip/Compress/BZip2Crc.h new file mode 100644 index 000000000..876945b5f --- /dev/null +++ b/src/libs/7zip/unix/CPP/7zip/Compress/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 |