Initial
This commit is contained in:
55
yproxy/crc.hpp
Normal file
55
yproxy/crc.hpp
Normal file
@@ -0,0 +1,55 @@
|
||||
#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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user