annotate src/win32/7zip/7z/C/7zCrc.c @ 1:f9f4f1b99eed

importing src directory
author Robert McIntyre <rlm@mit.edu>
date Sat, 03 Mar 2012 10:31:27 -0600
parents
children
rev   line source
rlm@1 1 /* 7zCrc.c -- CRC32 calculation
rlm@1 2 2008-08-05
rlm@1 3 Igor Pavlov
rlm@1 4 Public domain */
rlm@1 5
rlm@1 6 #include "7zCrc.h"
rlm@1 7
rlm@1 8 #define kCrcPoly 0xEDB88320
rlm@1 9 UInt32 g_CrcTable[256];
rlm@1 10
rlm@1 11 void MY_FAST_CALL CrcGenerateTable(void)
rlm@1 12 {
rlm@1 13 UInt32 i;
rlm@1 14 for (i = 0; i < 256; i++)
rlm@1 15 {
rlm@1 16 UInt32 r = i;
rlm@1 17 int j;
rlm@1 18 for (j = 0; j < 8; j++)
rlm@1 19 r = (r >> 1) ^ (kCrcPoly & ~((r & 1) - 1));
rlm@1 20 g_CrcTable[i] = r;
rlm@1 21 }
rlm@1 22 }
rlm@1 23
rlm@1 24 UInt32 MY_FAST_CALL CrcUpdate(UInt32 v, const void *data, size_t size)
rlm@1 25 {
rlm@1 26 const Byte *p = (const Byte *)data;
rlm@1 27 for (; size > 0 ; size--, p++)
rlm@1 28 v = CRC_UPDATE_BYTE(v, *p);
rlm@1 29 return v;
rlm@1 30 }
rlm@1 31
rlm@1 32 UInt32 MY_FAST_CALL CrcCalc(const void *data, size_t size)
rlm@1 33 {
rlm@1 34 return CrcUpdate(CRC_INIT_VAL, data, size) ^ 0xFFFFFFFF;
rlm@1 35 }