24 #ifndef _CORE_UTILS_LOCK_MULTIMAP_H_
25 #define _CORE_UTILS_LOCK_MULTIMAP_H_
27 #include <core/threading/mutex.h>
28 #include <core/utils/refptr.h>
34 template <
typename KeyType,
typename ValueType,
typename LessKey = std::less<KeyType>>
35 class LockMultiMap :
public std::multimap<KeyType, ValueType, LessKey>
53 operator=(
const std::map<KeyType, ValueType, LessKey> &l);
70 template <
typename KeyType,
typename ValueType,
typename LessKey>
78 template <
typename KeyType,
typename ValueType,
typename LessKey>
81 : std::map<KeyType, ValueType, LessKey>::map(lm), mutex_(new
Mutex())
86 template <
typename KeyType,
typename ValueType,
typename LessKey>
92 template <
typename KeyType,
typename ValueType,
typename LessKey>
102 template <
typename KeyType,
typename ValueType,
typename LessKey>
110 template <
typename KeyType,
typename ValueType,
typename LessKey>
121 template <
typename KeyType,
typename ValueType,
typename LessKey>
126 std::map<KeyType, ValueType, LessKey>::erase(key);
134 template <
typename KeyType,
typename ValueType,
typename LessKey>
147 template <
typename KeyType,
typename ValueType,
typename LessKey>
156 for (i = ll.begin(); i != ll.end(); ++i) {
171 template <
typename KeyType,
typename ValueType,
typename LessKey>
172 LockMultiMap<KeyType, ValueType, LessKey> &
173 LockMultiMap<KeyType, ValueType, LessKey>::operator=(
const std::map<KeyType, ValueType, LessKey> &l)
177 typename std::map<KeyType, ValueType, LessKey>::const_iterator i;
178 for (i = l.begin(); i != l.end(); ++i) {