diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2023-02-15 15:11:35 -0500 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2023-02-15 15:11:35 -0500 |
commit | aec39a0f9f7f16a7970e96bad552ca684af57e3f (patch) | |
tree | 742bfd7fee6d2cf98a9a93b5fc3d17ff2ca6557c /indra/llcommon/lluuid.h | |
parent | 6ef3df54b3ff0dcfed3000819209a7633e53a32b (diff) | |
parent | 23a3da37a91ea80311b5820c48a12d56b989f69d (diff) |
SL-18330: Merge branch 'contribute' into sl-18330-merge
Diffstat (limited to 'indra/llcommon/lluuid.h')
-rw-r--r-- | indra/llcommon/lluuid.h | 50 |
1 files changed, 21 insertions, 29 deletions
diff --git a/indra/llcommon/lluuid.h b/indra/llcommon/lluuid.h index 86a396ab06..2c36a1d222 100644 --- a/indra/llcommon/lluuid.h +++ b/indra/llcommon/lluuid.h @@ -119,6 +119,14 @@ public: U16 getCRC16() const; U32 getCRC32() const; + // Returns a 64 bits digest of the UUID, by XORing its two 64 bits long + // words. HB + inline U64 getDigest64() const + { + U64* tmp = (U64*)mData; + return tmp[0] ^ tmp[1]; + } + static BOOL validate(const std::string& in_string); // Validate that the UUID string is legal. static const LLUUID null; @@ -165,36 +173,20 @@ public: LLAssetID makeAssetID(const LLUUID& session) const; }; -// Generate a hash of an LLUUID object using the boost hash templates. -template <> -struct boost::hash<LLUUID> -{ - typedef LLUUID argument_type; - typedef std::size_t result_type; - result_type operator()(argument_type const& s) const - { - result_type seed(0); - - for (S32 i = 0; i < UUID_BYTES; ++i) - { - boost::hash_combine(seed, s.mData[i]); - } - - return seed; - } -}; - -// Adapt boost hash to std hash +// std::hash implementation for LLUUID namespace std { - template<> struct hash<LLUUID> - { - std::size_t operator()(LLUUID const& s) const noexcept - { - return boost::hash<LLUUID>()(s); - } - }; + template<> struct hash<LLUUID> + { + inline size_t operator()(const LLUUID& id) const noexcept + { + return (size_t)id.getDigest64(); + } + }; } -#endif - +// For use with boost containers. +inline size_t hash_value(const LLUUID& id) noexcept +{ + return (size_t)id.getDigest64(); +} |