24 #ifndef _CORE_UTILS_LOCK_HASHSET_H_ 25 #define _CORE_UTILS_LOCK_HASHSET_H_ 27 #include <core/threading/mutex.h> 28 #include <core/utils/refptr.h> 31 #if __cplusplus >= 201103L || defined(_LIBCPP_VERSION) 32 # include <functional> 33 # include <unordered_set> 34 #elif GLIBCXX___ > 20080305 35 # include <tr1/unordered_set> 37 # include <ext/hash_set> 42 template <
class KeyType,
43 #if __cplusplus >= 201103L || defined(_LIBCPP_VERSION) 44 class HashFunction = std::hash<KeyType>,
45 class EqualKey = std::equal_to<KeyType>>
46 class LockHashSet :
public std::unordered_set<KeyType, HashFunction, EqualKey>
47 #elif GLIBCXX___ > 20080305 48 class HashFunction = std::tr1::hash<KeyType>,
49 class EqualKey = std::equal_to<KeyType>>
50 class LockHashSet :
public std::tr1::unordered_set<KeyType, HashFunction, EqualKey>
52 class HashFunction = gnu_cxx_::hash<KeyType>,
53 class EqualKey = std::equal_to<KeyType>>
54 class
LockHashSet :
public gnu_cxx_::hash_set<KeyType, HashFunction, EqualKey>
87 template <
class KeyType,
class HashFunction,
class EqualKey>
95 template <
class KeyType,
class HashFunction,
class EqualKey>
98 #if __cplusplus >= 201103L || defined(_LIBCPP_VERSION) 99 : std::unordered_set<KeyType, HashFunction, EqualKey>::unordered_set(lh),
100 #elif GLIBCXX___ > 20080305 101 : std::tr1::unordered_set<KeyType, HashFunction, EqualKey>::unordered_set(lh),
103 : gnu_cxx_::hash_set<KeyType, HashFunction, EqualKey>::hash_set(lh),
110 template <
class KeyType,
class HashFunction,
class EqualKey>
116 template <
class KeyType,
class HashFunction,
class EqualKey>
126 template <
class KeyType,
class HashFunction,
class EqualKey>
134 template <
class KeyType,
class HashFunction,
class EqualKey>
144 template <
class KeyType,
class HashFunction,
class EqualKey>
157 template <
typename KeyType,
class HashFunction,
class EqualKey>
170 template <
typename KeyType,
class HashFunction,
class EqualKey>
179 for (i = ll.begin(); i != ll.end(); ++i) {
LockHashSet< KeyType, HashFunction, EqualKey > & operator=(const LockHashSet< KeyType, HashFunction, EqualKey > &ll)
Copy values from another LockHashSet.
Fawkes library namespace.
void unlock() const
Unlock set.
virtual ~LockHashSet()
Destructor.
LockHashSet()
Constructor.
void lock() const
Lock set.
bool try_lock() const
Try to lock set.
RefPtr< Mutex > mutex() const
Get access to the internal mutex.
void insert_locked(const KeyType &x)
Insert element to hash set with lock protection.
RefPtr<> is a reference-counting shared smartpointer.
Mutex mutual exclusion lock.