24 #ifndef _CORE_UTILS_RWLOCK_VECTOR_H_
25 #define _CORE_UTILS_RWLOCK_VECTOR_H_
27 #include <core/threading/read_write_lock.h>
28 #include <core/utils/refptr.h>
34 template <
typename Type>
35 class RWLockVector :
public std::vector<Type>
45 virtual void unlock()
const;
50 void erase_locked(
typename std::vector<Type>::iterator pos);
51 void erase_locked(
typename std::vector<Type>::iterator first,
52 typename std::vector<Type>::iterator last);
72 template <
typename Type>
80 template <
typename Type>
87 template <
typename Type>
93 template <
typename Type>
101 template <
typename Type>
111 template <
typename Type>
121 template <
typename Type>
129 template <
typename Type>
139 template <
typename Type>
144 std::vector<Type>::push_back(x);
149 template <
typename Type>
154 std::vector<Type>::pop_back();
161 template <
typename Type>
166 std::vector<Type>::erase(pos);
174 template <
typename Type>
177 typename std::vector<Type>::iterator last)
180 std::vector<Type>::erase(first, last);
187 template <
typename Type>
200 template <
typename Type>
208 for (i = lv.begin(); i != lv.end(); ++i) {
223 template <
typename Type>
225 RWLockVector<Type>::operator=(
const std::vector<Type> &v)
227 rwlock_->lock_for_write();
229 typename std::vector<Type>::const_iterator i;
230 for (i = v.begin(); i != v.end(); ++i) {