33#ifndef DART_COMMON_LOCKABLEREFERENCE_IMPL_HPP_
34#define DART_COMMON_LOCKABLEREFERENCE_IMPL_HPP_
42template <
typename Lockable>
44 std::weak_ptr<const void> lockableHolder,
Lockable& lockable) noexcept
45 : mLockableHolder(std::move(lockableHolder)),
52template <
typename Lockable>
55 if (mLockableHolder.expired())
62template <
typename Lockable>
65 if (mLockableHolder.expired())
68 return mLockable.try_lock();
72template <
typename Lockable>
75 if (mLockableHolder.expired())
82template <
typename Lockable>
83template <
typename InputIterator>
85 std::weak_ptr<const void> lockableHolder,
88 : mLockableHolder(
std::move(lockableHolder)), mLockables(first, last)
90 using IteratorValueType =
91 typename std::iterator_traits<InputIterator>::value_type;
92 using IteratorLockable =
typename std::remove_pointer<
93 typename std::remove_reference<IteratorValueType>::type>
::type;
96 std::is_same<Lockable, IteratorLockable>::value,
97 "Lockable of this class and the lockable of InputIterator are not the "
102template <
typename Lockable>
105 if (mLockableHolder.expired())
108 for (
auto lockable : mLockables)
113template <
typename Lockable>
116 if (mLockableHolder.expired())
119 for (
auto lockable : mLockables)
121 if (!lockable->try_lock())
129template <
typename Lockable>
132 if (mLockableHolder.expired())
135 for (
auto it = mLockables.rbegin(); it != mLockables.rend(); ++it)
140template <
typename Lockable>
148template <
typename Lockable>
std::string type
Definition SdfParser.cpp:82
bool try_lock() noexcept override
Tries to lock the lockables that this class references; returns false if one of the lockables is not ...
Definition LockableReference-impl.hpp:114
MultiLockableReference(std::weak_ptr< const void > lockableHolder, InputIterator first, InputIterator last)
Constructs from multiple lockables.
Definition LockableReference-impl.hpp:84
void unlock() noexcept override
Unlocks the lockables.
Definition LockableReference-impl.hpp:130
void lock() override
Locks lockable that this class references; blocks if one of the lockables are not avaliable.
Definition LockableReference-impl.hpp:103
T * ptr(T &obj)
Converts reference to pointer.
Definition LockableReference-impl.hpp:142
bool try_lock() noexcept override
Tries to lock the lockables that this class references; returns false if one of the lockables is not ...
Definition LockableReference-impl.hpp:63
LockableT Lockable
Definition LockableReference.hpp:82
void unlock() noexcept override
Unlocks the lockables.
Definition LockableReference-impl.hpp:73
void lock() override
Locks lockable that this class references; blocks if one of the lockables are not avaliable.
Definition LockableReference-impl.hpp:53
SingleLockableReference(std::weak_ptr< const void > lockableHolder, Lockable &lockable) noexcept
Constructor from a single lockable.
Definition LockableReference-impl.hpp:43
Definition BulletCollisionDetector.cpp:63
Definition SharedLibraryManager.hpp:43