Files
Work/yproxy/crc.hpp
2024-08-07 09:16:27 -04:00

56 lines
850 B
C++

#ifndef _YPROXY_CRC_HPP_
#define _YPROXY_CRC_HPP_
class CRC
{
public:
CRC();
virtual ~CRC();
void crcAdd(int c);
int getVal(void)const;
private:
static int crc_tab[256];
int mCRCVal;
long mCRCAnz;
};
inline
CRC::CRC()
: mCRCVal(-1L), mCRCAnz(0)
{
}
inline
CRC::~CRC()
{
}
inline
void CRC::crcAdd(int c)
{
unsigned long ch1,ch2,cc;
/* X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 */
/* for (i = 0; i < size; i++) */
/* crccode = crc32Tab[(int) ((crccode) ^ (buf[i])) & 0xff] ^ */
/* (((crccode) >> 8) & 0x00FFFFFFL); */
/* return(crccode); */
cc= (c) & 0x000000ffL;
ch1=(mCRCVal ^ cc) & 0xffL;
ch1=crc_tab[ch1];
ch2=(mCRCVal>>8L) & 0xffffffL; // Correct version
mCRCVal=ch1 ^ ch2;
mCRCAnz++;
}
inline
int CRC::getVal(void)const
{
return mCRCVal;
}
#endif