//------------------------------------------------------------------------
// Copyright (C) Sewell Development Corporation, 1994 - 1998.
//     Web: www.sewelld.com      E-mail: support@sewelld.com
//
// LICENSE: This source code was generated by CrcGen, a product of Sewell
// Development Corporation.  Paid-up licensees of CrcGen are authorized to
// use this code on a site-wide basis without restriction as to
// the type of product it is incorporated in, except that it may not be
// resold as stand-alone CRC code, and the copyright notice and license
// agreement must not be removed from the code.
//------------------------------------------------------------------------

// Interface definition for 32-bit CRC (cyclic redundancy check) class:
//     Polynomial:                 04C11DB7
//     Initial CRC register value: FFFFFFFF
//     Reflected input and output: Yes
//     Inverted final output:      Yes
//     CRC of string "123456789":  CBF43926

class Crc32 {
public:
    explicit
    Crc32() {
        m_crc = 0xFFFFFFFF;
    }
    explicit
    Crc32(unsigned __int32 uiInitialCrc) {
        m_crc = uiInitialCrc;
    }
    Crc32(const void* buffer, unsigned int count) {
        m_crc = 0xFFFFFFFF;
        Compute(buffer, count);
    }
    void Compute(const void* buffer, unsigned int count);
    void Compute(unsigned char value);
    operator unsigned __int32 () const {
        return m_crc ^ 0xFFFFFFFF;
    }

private:
    unsigned __int32 m_crc;
};

