1*f6dc9357SAndroid Build Coastguard Worker // BZip2Crc.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 "BZip2Crc.h" 6*f6dc9357SAndroid Build Coastguard Worker 7*f6dc9357SAndroid Build Coastguard Worker MY_ALIGN(64) 8*f6dc9357SAndroid Build Coastguard Worker UInt32 CBZip2Crc::Table[256]; 9*f6dc9357SAndroid Build Coastguard Worker 10*f6dc9357SAndroid Build Coastguard Worker static const UInt32 kBZip2CrcPoly = 0x04c11db7; /* AUTODIN II, Ethernet, & FDDI */ 11*f6dc9357SAndroid Build Coastguard Worker InitTable()12*f6dc9357SAndroid Build Coastguard Workervoid CBZip2Crc::InitTable() 13*f6dc9357SAndroid Build Coastguard Worker { 14*f6dc9357SAndroid Build Coastguard Worker for (UInt32 i = 0; i < 256; i++) 15*f6dc9357SAndroid Build Coastguard Worker { 16*f6dc9357SAndroid Build Coastguard Worker UInt32 r = i << 24; 17*f6dc9357SAndroid Build Coastguard Worker for (unsigned j = 0; j < 8; j++) 18*f6dc9357SAndroid Build Coastguard Worker r = (r << 1) ^ (kBZip2CrcPoly & ((UInt32)0 - (r >> 31))); 19*f6dc9357SAndroid Build Coastguard Worker Table[i] = r; 20*f6dc9357SAndroid Build Coastguard Worker } 21*f6dc9357SAndroid Build Coastguard Worker } 22*f6dc9357SAndroid Build Coastguard Worker 23*f6dc9357SAndroid Build Coastguard Worker static 24*f6dc9357SAndroid Build Coastguard Worker class CBZip2CrcTableInit 25*f6dc9357SAndroid Build Coastguard Worker { 26*f6dc9357SAndroid Build Coastguard Worker public: CBZip2CrcTableInit()27*f6dc9357SAndroid Build Coastguard Worker CBZip2CrcTableInit() { CBZip2Crc::InitTable(); } 28*f6dc9357SAndroid Build Coastguard Worker } g_BZip2CrcTableInit; 29