11 #ifndef ROOT_RConcurrentHashColl
12 #define ROOT_RConcurrentHashColl
26 class RConcurrentHashColl {
28 mutable std::unique_ptr<RHashSet> fHashSet;
29 mutable std::unique_ptr<ROOT::TRWSpinLock> fRWLock;
33 friend std::ostream &operator<<(std::ostream &os,
const RConcurrentHashColl::HashValue &h);
35 ULong64_t fDigest[4] = {0, 0, 0, 0};
38 HashValue() =
default;
39 HashValue(
const char *data,
int len);
40 ULong64_t
const *Get()
const {
return fDigest; }
43 RConcurrentHashColl();
44 ~RConcurrentHashColl();
47 bool Find(
const HashValue &hash)
const;
50 bool Insert(
char *buf,
int len)
const;
53 bool Insert(
const HashValue &hash)
const;
56 static HashValue Hash(
char *buf,
int len);
59 inline bool operator==(
const RConcurrentHashColl::HashValue &lhs,
const RConcurrentHashColl::HashValue &rhs)
63 return l[0] == r[0] && l[1] == r[1] && l[2] == r[2] && l[3] == r[3];
71 struct less<ROOT::Internal::RConcurrentHashColl::HashValue> {
72 bool operator()(
const ROOT::Internal::RConcurrentHashColl::HashValue &lhs,
const ROOT::Internal::RConcurrentHashColl::HashValue &rhs)
const
78 return l[0] < r[0] ?
true :
84 l[3] < r[3] ?
true :
false;