home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 March / CMCD0304.ISO / Software / Freeware / Programare / nullsoft / nsis20.exe / Source / 7zip / Common / CRC.h < prev    next >
C/C++ Source or Header  |  2003-11-23  |  660b  |  32 lines

  1. // Common/CRC.h
  2.  
  3. // #pragma once
  4.  
  5. #ifndef __COMMON_CRC_H
  6. #define __COMMON_CRC_H
  7.  
  8. #include "Types.h"
  9.  
  10. class CCRC
  11. {
  12.   UINT32 _value;
  13. public:
  14.     static UINT32 Table[256];
  15.   CCRC():  _value(0xFFFFFFFF){};
  16.   void Init() { _value = 0xFFFFFFFF; }
  17.   void Update(const void *data, UINT32 size);
  18.   UINT32 GetDigest() const { return _value ^ 0xFFFFFFFF; } 
  19.   static UINT32 CalculateDigest(const void *data, UINT32 size)
  20.   {
  21.     CCRC crc;
  22.     crc.Update(data, size);
  23.     return crc.GetDigest();
  24.   }
  25.   static bool VerifyDigest(UINT32 digest, const void *data, UINT32 size)
  26.   {
  27.     return (CalculateDigest(data, size) == digest);
  28.   }
  29. };
  30.  
  31. #endif
  32.