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