1*f6dc9357SAndroid Build Coastguard Worker // XzCrc64Reg.cpp 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #include "StdAfx.h" 4*f6dc9357SAndroid Build Coastguard Worker 5*f6dc9357SAndroid Build Coastguard Worker #include "../../C/CpuArch.h" 6*f6dc9357SAndroid Build Coastguard Worker #include "../../C/XzCrc64.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker #include "../Common/MyCom.h" 9*f6dc9357SAndroid Build Coastguard Worker 10*f6dc9357SAndroid Build Coastguard Worker #include "../7zip/Common/RegisterCodec.h" 11*f6dc9357SAndroid Build Coastguard Worker 12*f6dc9357SAndroid Build Coastguard Worker Z7_CLASS_IMP_COM_1( 13*f6dc9357SAndroid Build Coastguard Worker CXzCrc64Hasher 14*f6dc9357SAndroid Build Coastguard Worker , IHasher 15*f6dc9357SAndroid Build Coastguard Worker ) 16*f6dc9357SAndroid Build Coastguard Worker UInt64 _crc; 17*f6dc9357SAndroid Build Coastguard Worker public: 18*f6dc9357SAndroid Build Coastguard Worker Byte _mtDummy[1 << 7]; // it's public to eliminate clang warning: unused private field 19*f6dc9357SAndroid Build Coastguard Worker 20*f6dc9357SAndroid Build Coastguard Worker CXzCrc64Hasher(): _crc(CRC64_INIT_VAL) {} 21*f6dc9357SAndroid Build Coastguard Worker }; 22*f6dc9357SAndroid Build Coastguard Worker 23*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF2(void, CXzCrc64Hasher::Init()) 24*f6dc9357SAndroid Build Coastguard Worker { 25*f6dc9357SAndroid Build Coastguard Worker _crc = CRC64_INIT_VAL; 26*f6dc9357SAndroid Build Coastguard Worker } 27*f6dc9357SAndroid Build Coastguard Worker 28*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF2(void, CXzCrc64Hasher::Update(const void *data, UInt32 size)) 29*f6dc9357SAndroid Build Coastguard Worker { 30*f6dc9357SAndroid Build Coastguard Worker _crc = Crc64Update(_crc, data, size); 31*f6dc9357SAndroid Build Coastguard Worker } 32*f6dc9357SAndroid Build Coastguard Worker 33*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF2(void, CXzCrc64Hasher::Final(Byte *digest)) 34*f6dc9357SAndroid Build Coastguard Worker { 35*f6dc9357SAndroid Build Coastguard Worker const UInt64 val = CRC64_GET_DIGEST(_crc); 36*f6dc9357SAndroid Build Coastguard Worker SetUi64(digest, val) 37*f6dc9357SAndroid Build Coastguard Worker } 38*f6dc9357SAndroid Build Coastguard Worker 39*f6dc9357SAndroid Build Coastguard Worker REGISTER_HASHER(CXzCrc64Hasher, 0x4, "CRC64", 8) 40