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
|
#ifndef CRC_H
#define CRC_H
#include <string>
/** @brief Object representing an updateable CRC-32 checksum. */
class CRC
{
private:
template<class T>
CRC& Up(T data) {
Update((void*) &data, sizeof(data));
return *this;
}
public:
CRC();
unsigned int GetDigest() const;
CRC& Update(const void* data, unsigned int size);
CRC& Update(unsigned int data);
CRC& operator<<(int data) { return Up(data); }
CRC& operator<<(unsigned data) { return Up(data); }
CRC& operator<<(float data) { return Up(data); }
private:
unsigned int crc;
};
#endif // !CRC_H
|