misc/libphysfs/lzma/C/7zCrcT8.c
branchui-scaling
changeset 15283 c4fd2813b127
parent 13390 0135e64c6c66
parent 15279 7ab5cf405686
child 15663 d92eeb468dad
equal deleted inserted replaced
13390:0135e64c6c66 15283:c4fd2813b127
     1 /* 7zCrcT8.c */
       
     2 
       
     3 #include "7zCrc.h"
       
     4 
       
     5 #define kCrcPoly 0xEDB88320
       
     6 #define CRC_NUM_TABLES 8
       
     7 
       
     8 UInt32 g_CrcTable[256 * CRC_NUM_TABLES];
       
     9 
       
    10 void MY_FAST_CALL CrcGenerateTable()
       
    11 {
       
    12   UInt32 i;
       
    13   for (i = 0; i < 256; i++)
       
    14   {
       
    15     UInt32 r = i;
       
    16     int j;
       
    17     for (j = 0; j < 8; j++)
       
    18       r = (r >> 1) ^ (kCrcPoly & ~((r & 1) - 1));
       
    19     g_CrcTable[i] = r;
       
    20   }
       
    21   #if CRC_NUM_TABLES > 1
       
    22   for (; i < 256 * CRC_NUM_TABLES; i++)
       
    23   {
       
    24     UInt32 r = g_CrcTable[i - 256];
       
    25     g_CrcTable[i] = g_CrcTable[r & 0xFF] ^ (r >> 8);
       
    26   }
       
    27   #endif
       
    28 }
       
    29 
       
    30 UInt32 MY_FAST_CALL CrcUpdateT8(UInt32 v, const void *data, size_t size, const UInt32 *table);
       
    31 
       
    32 UInt32 MY_FAST_CALL CrcUpdate(UInt32 v, const void *data, size_t size)
       
    33 {
       
    34   return CrcUpdateT8(v, data, size, g_CrcTable);
       
    35 }
       
    36 
       
    37 UInt32 MY_FAST_CALL CrcCalc(const void *data, size_t size)
       
    38 {
       
    39   return CrcUpdateT8(CRC_INIT_VAL, data, size, g_CrcTable) ^ 0xFFFFFFFF;
       
    40 }