24 #ifndef _CORE_UTILS_LOCK_HASHMAP_H_ 25 #define _CORE_UTILS_LOCK_HASHMAP_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_map> 34 #elif GLIBCXX___ > 20080305 35 # include <tr1/unordered_map> 37 # include <ext/hash_map> 42 template <
class KeyType,
44 #if __cplusplus >= 201103L || defined(_LIBCPP_VERSION) 45 class HashFunction = std::hash<KeyType>,
46 class EqualKey = std::equal_to<KeyType>>
47 class LockHashMap :
public std::unordered_map<KeyType, ValueType, HashFunction, EqualKey>
48 #elif GLIBCXX___ > 20080305 49 class HashFunction = std::tr1::hash<KeyType>,
50 class EqualKey = std::equal_to<KeyType>>
51 class LockHashMap :
public std::tr1::unordered_map<KeyType, ValueType, HashFunction, EqualKey>
53 class HashFunction = gnu_cxx_::hash<KeyType>,
54 class EqualKey = std::equal_to<KeyType>>
55 class
LockHashMap :
public gnu_cxx_::hash_map<KeyType, ValueType, HashFunction, EqualKey>
86 template <
class KeyType,
class ValueType,
class HashFunction,
class EqualKey>
94 template <
class KeyType,
class ValueType,
class HashFunction,
class EqualKey>
97 #if __cplusplus >= 201103L || defined(_LIBCPP_VERSION) 98 : std::unordered_map<KeyType, ValueType, HashFunction, EqualKey>::unordered_map(lh)
99 #elif GLIBCXX___ > 20080305 100 : std::tr1::unordered_map<KeyType, ValueType, HashFunction, EqualKey>::unordered_map(lh)
102 : gnu_cxx_::hash_map<KeyType, ValueType, HashFunction, EqualKey>::hash_map(lh)
110 template <
class KeyType,
class ValueType,
class HashFunction,
class EqualKey>
116 template <
class KeyType,
class ValueType,
class HashFunction,
class EqualKey>
126 template <
class KeyType,
class ValueType,
class HashFunction,
class EqualKey>
134 template <
class KeyType,
class ValueType,
class HashFunction,
class EqualKey>
145 template <
typename KeyType,
typename ValueType,
class HashFunction,
typename EqualKey>
158 template <
typename KeyType,
typename ValueType,
class HashFunction,
typename EqualKey>
167 for (i = ll.begin(); i != ll.end(); ++i) {
LockHashMap< KeyType, ValueType, HashFunction, EqualKey > & operator=(const LockHashMap< KeyType, ValueType, HashFunction, EqualKey > &ll)
Copy values from another LockHashMap.
RefPtr< Mutex > mutex() const
Get access to the internal mutex.
Fawkes library namespace.
LockHashMap()
Constructor.
virtual ~LockHashMap()
Destructor.
RefPtr<> is a reference-counting shared smartpointer.
bool try_lock() const
Try to lock map.
void unlock() const
Unlock map.
Mutex mutual exclusion lock.
void lock() const
Lock map.