9#ifndef LLDB_UTILITY_ITERABLE_H
10#define LLDB_UTILITY_ITERABLE_H
14#include <llvm/ADT/iterator.h>
18template <
typename WrappedIteratorT,
19 typename T =
typename std::iterator_traits<
20 WrappedIteratorT>::value_type::second_type>
22 : llvm::iterator_adaptor_base<
23 ValueMapIterator<WrappedIteratorT, T>, WrappedIteratorT,
24 typename std::iterator_traits<WrappedIteratorT>::iterator_category,
31 const T &
operator*()
const {
return (*this->I).second; }
34template <
typename MutexType,
typename C,
35 typename IteratorT =
typename C::const_iterator>
39 :
llvm::iterator_range<IteratorT>(container),
m_mutex(&mutex) {
45 rhs.m_mutex =
nullptr;
LockingAdaptedIterable(LockingAdaptedIterable &&rhs)
~LockingAdaptedIterable()
LockingAdaptedIterable & operator=(const LockingAdaptedIterable &)=delete
std::recursive_mutex * m_mutex
LockingAdaptedIterable(const C &container, MutexType &mutex)
LockingAdaptedIterable(const LockingAdaptedIterable &)=delete
A class that represents a running process on the host machine.
ValueMapIterator()=default
ValueMapIterator(WrappedIteratorT u)
const T & operator*() const