/*
**	Command & Conquer Generals(tm)
**	Copyright 2025 Electronic Arts Inc.
**
**	This program is free software: you can redistribute it and/or modify
**	it under the terms of the GNU General Public License as published by
**	the Free Software Foundation, either version 3 of the License, or
**	(at your option) any later version.
**
**	This program is distributed in the hope that it will be useful,
**	but WITHOUT ANY WARRANTY; without even the implied warranty of
**	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
**	GNU General Public License for more details.
**
**	You should have received a copy of the GNU General Public License
**	along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

////////////////////////////////////////////////////////////////////////////////
//																																						//
//  (c) 2001-2003 Electronic Arts Inc.																				//
//																																						//
////////////////////////////////////////////////////////////////////////////////


#include "PreRTS.h"	// This must go first in EVERY cpp file int the GameEngine

#include "Common/CRC.h"
#include "Common/Debug.h"


void CRC::addCRC( UnsignedByte val )
{
	int hibit;

	//cout << "\t\t" << hex << val;
//	val = htonl(val);
	//cout << " / " << hex << val <<endl;


	if (crc & 0x80000000) {
		hibit = 1;
	} else {
		hibit = 0;
	}

	crc <<= 1;
	crc += val;
	crc += hibit;

	//cout << hex << (*crc) <<endl;
}


void CRC::computeCRC( const void *buf, Int len )
{
	if (!buf || len < 1)
	{
		return;
	}

	//crc = 0;

	UnsignedByte *uintPtr = (UnsignedByte *)buf;

	for (int i=0 ; i<len ; i++) {
		addCRC (*(uintPtr++));
	}
	//crc = htonl(crc);
}

//-------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------
UnsignedInt CRC::get( void )
{

	UnsignedInt tcrc = crc;
	return tcrc;

}  // end skip