51 lines
1012 B
C
51 lines
1012 B
C
|
/**
|
||
|
@file uint128.h
|
||
|
|
||
|
@maintainer Morgan McGuire, http://graphics.cs.williams.edu
|
||
|
@author Kyle Whitson
|
||
|
|
||
|
@created 2008-07-17
|
||
|
@edited 2008-07-17
|
||
|
*/
|
||
|
|
||
|
#ifndef G3D_UINT128_H
|
||
|
#define G3D_UINT128_H
|
||
|
|
||
|
#include "G3D/g3dmath.h"
|
||
|
|
||
|
namespace G3D {
|
||
|
|
||
|
/** Limited functionality 128-bit unsigned integer. This is primarily to support FNV hashing and other
|
||
|
cryptography applications. See the GMP library for high-precision C++ math support. */
|
||
|
class uint128 {
|
||
|
public:
|
||
|
|
||
|
G3D::uint64 hi;
|
||
|
G3D::uint64 lo;
|
||
|
|
||
|
uint128(const uint64& lo);
|
||
|
|
||
|
uint128(const uint64& hi, const uint64& lo);
|
||
|
|
||
|
uint128& operator+=(const uint128& x);
|
||
|
|
||
|
uint128& operator*=(const uint128& x);
|
||
|
|
||
|
uint128& operator^=(const uint128& x);
|
||
|
|
||
|
uint128& operator&=(const uint128& x);
|
||
|
|
||
|
uint128& operator|=(const uint128& x);
|
||
|
|
||
|
bool operator==(const uint128& x);
|
||
|
|
||
|
uint128& operator>>=(const int x);
|
||
|
|
||
|
uint128& operator<<=(const int x);
|
||
|
|
||
|
uint128 operator&(const uint128& x);
|
||
|
};
|
||
|
}
|
||
|
|
||
|
#endif
|