64 lines
1005 B
C++
64 lines
1005 B
C++
/*
|
|
* Copyright (c) 2014, Oculus VR, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*
|
|
*/
|
|
|
|
///
|
|
/// \file CheckSum.cpp
|
|
/// \brief [Internal] CheckSum implementation from http://www.flounder.com/checksum.htm
|
|
///
|
|
|
|
#ifndef __CHECKSUM_H
|
|
#define __CHECKSUM_H
|
|
|
|
#include "RakMemoryOverride.hpp"
|
|
|
|
/// Generates and validates checksums
|
|
class CheckSum
|
|
{
|
|
|
|
public:
|
|
|
|
/// Default constructor
|
|
|
|
CheckSum()
|
|
{
|
|
Clear();
|
|
}
|
|
|
|
void Clear()
|
|
{
|
|
sum = 0;
|
|
r = 55665;
|
|
c1 = 52845;
|
|
c2 = 22719;
|
|
}
|
|
|
|
void Add ( unsigned int w );
|
|
|
|
|
|
void Add ( unsigned short w );
|
|
|
|
void Add ( unsigned char* b, unsigned int length );
|
|
|
|
void Add ( unsigned char b );
|
|
|
|
unsigned int Get ()
|
|
{
|
|
return sum;
|
|
}
|
|
|
|
protected:
|
|
unsigned short r;
|
|
unsigned short c1;
|
|
unsigned short c2;
|
|
unsigned int sum;
|
|
};
|
|
|
|
#endif
|