7#ifndef KISADAPTEDLOCK_H
8#define KISADAPTEDLOCK_H
25template <
typename Adapter>
28 public std::unique_lock<Adapter>
31 template<
typename Object>
34 ,
std::unique_lock<Adapter>(
35 static_cast<Adapter&>(*this))
38 template<
typename Object>
41 ,
std::unique_lock<Adapter>(static_cast<Adapter&>(*this), t)
44 template<
typename Object>
47 ,
std::unique_lock<Adapter>(static_cast<Adapter&>(*this), t)
50 template<
typename Object>
53 ,
std::unique_lock<Adapter>(static_cast<Adapter&>(*this), t)
57 : Adapter(static_cast<Adapter&>(rhs))
58 ,
std::unique_lock<Adapter>(
59 static_cast<Adapter&>(*this),
std::adopt_lock)
66 static_cast<Adapter&
>(*this) = rhs;
67 static_cast<std::unique_lock<Adapter>&
>(*this) =
68 std::unique_lock<Adapter>(
static_cast<Adapter&
>(*
this),
74 using std::unique_lock<Adapter>::try_lock;
75 using std::unique_lock<Adapter>::lock;
76 using std::unique_lock<Adapter>::unlock;
77 using std::unique_lock<Adapter>::owns_lock;
85#define KIS_DECLARE_ADAPTED_LOCK(Name, Adapter) \
86class Name : public KisAdaptedLock<Adapter> \
89 using BaseClass = KisAdaptedLock<Adapter>; \
90 using BaseClass::BaseClass; \
KisAdaptedLock & operator=(KisAdaptedLock &&rhs)
KisAdaptedLock(Object object, std::try_to_lock_t t)
KisAdaptedLock(KisAdaptedLock &&rhs)
KisAdaptedLock(Object object)
KisAdaptedLock(Object object, std::defer_lock_t t)
KisAdaptedLock(Object object, std::adopt_lock_t t)