25 #ifndef __CORE_UTILS_LOCK_SET_H_
26 #define __CORE_UTILS_LOCK_SET_H_
28 #include <core/threading/mutex.h>
29 #include <core/utils/refptr.h>
34 template <
typename KeyType,
35 typename LessKey = std::less<KeyType> >
36 class LockSet :
public std::set<KeyType, LessKey>
49 typedef typename std::set<KeyType, LessKey>::iterator
iterator;
75 template <
typename KeyType,
typename LessKey>
77 : __mutex(new
Mutex())
84 template <
typename KeyType,
typename LessKey>
86 : std::set<KeyType, LessKey>::set(lm),
92 template <
typename KeyType,
typename LessKey>
98 template <
typename KeyType,
typename LessKey>
109 template <
typename KeyType,
typename LessKey>
113 return __mutex->try_lock();
118 template <
typename KeyType,
typename LessKey>
122 return __mutex->unlock();
131 template <
typename KeyType,
typename LessKey>
132 std::pair<typename LockSet<KeyType, LessKey>::iterator,
bool>
136 std::pair<iterator, bool> ret =
137 std::set<KeyType, LessKey>::insert(key);
146 template <
typename KeyType,
typename LessKey>
151 std::set<KeyType, LessKey>::erase(key);
160 template <
typename KeyType,
typename LessKey>
174 template <
typename KeyType,
typename LessKey>
182 for (i = ll.begin(); i != ll.end(); ++i) {
198 template <
typename KeyType,
typename LessKey>
204 typename std::set<KeyType, LessKey>::const_iterator i;
205 for (i = l.begin(); i != l.end(); ++i) {