11#ifndef ROOT_RConcurrentHashColl
12#define ROOT_RConcurrentHashColl
34 mutable std::unique_ptr<ROOT::TRWSpinLock>
fRWLock;
51 std::hash<ULong64_t> hasher;
75 return l[0] ==
r[0] &&
l[1] ==
r[1] &&
l[2] ==
r[2] &&
l[3] ==
r[3];
83struct less<ROOT::Internal::RConcurrentHashColl::HashValue> {
84 bool operator()(
const ROOT::Internal::RConcurrentHashColl::HashValue &lhs,
85 const ROOT::Internal::RConcurrentHashColl::HashValue &rhs)
const
91 return l[0] <
r[0] ? true :
97 l[3] <
r[3] ? true :
false;
unsigned long long ULong64_t
Portable unsigned long integer 8 bytes.
TRObject operator()(const T1 &t1) const
size_t ShortHash() const noexcept
Return the 64-bit hash of this 256-bit long digest/hash (4 x 64-bit).
friend std::ostream & operator<<(std::ostream &os, const RConcurrentHashColl::HashValue &h)
ULong64_t const * Get() const
bool Insert(const HashValue &hash, RUidColl &&coll) const
If the hash is there, return false.
static HashValue Hash(char *buf, int len)
Return the hash object corresponding to the buffer.
std::unique_ptr< ROOT::TRWSpinLock > fRWLock
std::unique_ptr< RHashMap > fHashMap
const RUidColl * Find(const HashValue &hash) const
Return the collection of UID corresponding to the hash if the hash has already been seen or nullptr o...
std::vector< Int_t > RUidColl
bool operator==(const RConcurrentHashColl::HashValue &lhs, const RConcurrentHashColl::HashValue &rhs)