//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ // // Utilities for globally unique IDs //=============================================================================// #ifndef UNIQUEID_H #define UNIQUEID_H #ifdef _WIN32 #pragma once #endif #include "tier1/utlvector.h" //----------------------------------------------------------------------------- // Forward declarations //----------------------------------------------------------------------------- struct UniqueId_t; class CUtlBuffer; //----------------------------------------------------------------------------- // Defines a globally unique ID //----------------------------------------------------------------------------- struct UniqueId_t { unsigned char m_Value[16]; }; //----------------------------------------------------------------------------- // Methods related to unique ids //----------------------------------------------------------------------------- void CreateUniqueId( UniqueId_t *pDest ); void InvalidateUniqueId( UniqueId_t *pDest ); bool IsUniqueIdValid( const UniqueId_t &id ); bool IsUniqueIdEqual( const UniqueId_t &id1, const UniqueId_t &id2 ); void UniqueIdToString( const UniqueId_t &id, char *pBuf, int nMaxLen ); bool UniqueIdFromString( UniqueId_t *pDest, const char *pBuf, int nMaxLen = 0 ); void CopyUniqueId( const UniqueId_t &src, UniqueId_t *pDest ); bool Serialize( CUtlBuffer &buf, const UniqueId_t &src ); bool Unserialize( CUtlBuffer &buf, UniqueId_t &dest ); inline bool operator ==( const UniqueId_t& lhs, const UniqueId_t& rhs ) { return !Q_memcmp( (void *)&lhs.m_Value[ 0 ], (void *)&rhs.m_Value[ 0 ], sizeof( lhs.m_Value ) ); } #endif // UNIQUEID_H