Annotation of elwix/tools/oldlzma/SRC/Common/CRC.h, revision 1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>