/** @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