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> 30 #if __cplusplus >= 201103L || defined(_LIBCPP_VERSION) 31 # include <unordered_set> 32 # include <functional> 33 #elif __GLIBCXX__ > 20080305 34 # include <tr1/unordered_set> 36 # 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>
90 template <
class KeyType,
class HashFunction,
class EqualKey>
92 : __mutex(new
Mutex())
99 template <
class KeyType,
class HashFunction,
class EqualKey>
101 #if __cplusplus >= 201103L || defined(_LIBCPP_VERSION) 102 : std::unordered_set<KeyType, HashFunction, EqualKey>::unordered_set(lh),
103 #elif __GLIBCXX__ > 20080305 104 : std::tr1::unordered_set<KeyType, HashFunction, EqualKey>::unordered_set(lh),
106 : __gnu_cxx::hash_set<KeyType, HashFunction, EqualKey>::hash_set(lh),
113 template <
class KeyType,
class HashFunction,
class EqualKey>
119 template <
class KeyType,
class HashFunction,
class EqualKey>
130 template <
class KeyType,
class HashFunction,
class EqualKey>
139 template <
class KeyType,
class HashFunction,
class EqualKey>
150 template <
class KeyType,
class HashFunction,
class EqualKey>
164 template <
typename KeyType,
class HashFunction,
class EqualKey>
177 template <
typename KeyType,
class HashFunction,
class EqualKey>
186 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.