1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#include "CRC.h"
extern "C" {
#include "lib/7z/7zCrc.h"
}
CRC::CRC(): crc(CRC_INIT_VAL)
{
InitTable();
}
uint32_t CRC::InitTable()
{
static bool crcTableInitialized = false;
if (crcTableInitialized)
return 1;
CrcGenerateTable();
crcTableInitialized = true;
return 0;
}
uint32_t CRC::CalcDigest(const void* data, size_t size)
{
return (InitTable(), CRC_GET_DIGEST(CrcUpdate(CRC_INIT_VAL, data, size)));
}
uint32_t CRC::GetDigest() const
{
return CRC_GET_DIGEST(crc);
}
CRC& CRC::Update(const void* data, size_t size)
{
crc = CrcUpdate(crc, data, size);
return *this;
}
CRC& CRC::Update(uint32_t data)
{
crc = CrcUpdate(crc, &data, sizeof(data));
return *this;
}
|