Class: cUID
Declaration: NPTrackingTools.h
<syntaxhighlight lang="python"> namespace Core {
/// <summary>
/// A platform-neutral 128-bit universal identifier. It is essentially guaranteed to never
/// generate the same ID twice.
/// </summary>
class cUID
{
public:
typedef unsigned long long int uint64;
/// <summary>
/// Create a default UID. In order to create a UID that has a valid unique identifier you
/// must call Generate().
/// </summary>
cUID() : mHighBits( 0 ), mLowBits( 0 ) { }
cUID( uint64 high, uint64 low ) : mHighBits( high ), mLowBits( low ) { }
cUID( const cUID & obj ) : mHighBits( obj.mHighBits ), mLowBits( obj.mLowBits ) { }
cUID& operator=( const cUID & rhs ) { mHighBits = rhs.mHighBits; mLowBits = rhs.mLowBits; return *this; }
/// <summary>
/// Set the value of the UID from two long integer values. It is up to the caller to ensure that
/// the resulting UID is unique.
/// </summary>
void SetValue( uint64 highBits, uint64 lowBits ) { mHighBits = highBits; mLowBits = lowBits; }
/// <summary>Get the low 64 bits of the UID.</summary>
uint64 LowBits() const { return mLowBits; }
/// <summary>Get the high 64 bits of the UID.</summary>
uint64 HighBits() const { return mHighBits; }
/// <summary>Returns true if the ID is valid.</summary>
bool Valid() const { return ( mHighBits != 0 && mLowBits != 0 ); }
/// <summary>Generate a new UID value.</summary>
static cUID Generate();
//====================================================================================
// Comparison operators
//====================================================================================
bool operator<( const cUID & rhs ) const
{
return ( ( mHighBits < rhs.mHighBits ) ? true : ( mHighBits == rhs.mHighBits ? ( mLowBits < rhs.mLowBits ) : false ) );
}
bool operator<=( const cUID & rhs ) const
{
return ( ( mHighBits < rhs.mHighBits ) ? true : ( mHighBits == rhs.mHighBits ? ( mLowBits <= rhs.mLowBits ) : false ) );
}
bool operator>( const cUID & rhs ) const { return !( *this <= rhs ); }
bool operator>=( const cUID & rhs ) const { return !( *this < rhs ); }
bool operator==( const cUID & rhs ) const
{
return ( ( mHighBits == rhs.mHighBits ) && ( mLowBits == rhs.mLowBits ) );
}
bool operator!=( const cUID & rhs ) const { return !( *this == rhs ); }
//====================================================================================
// Constants
//====================================================================================
static const cUID Invalid;
private:
uint64 mHighBits;
uint64 mLowBits;
};
}</syntaxhighlight>
Last updated