Krita Source Code Documentation
Loading...
Searching...
No Matches
KisAdaptedLock< Adapter > Class Template Reference

#include <KisAdaptedLock.h>

+ Inheritance diagram for KisAdaptedLock< Adapter >:

Public Member Functions

 KisAdaptedLock (KisAdaptedLock &&rhs)
 
template<typename Object >
 KisAdaptedLock (Object object)
 
template<typename Object >
 KisAdaptedLock (Object object, std::adopt_lock_t t)
 
template<typename Object >
 KisAdaptedLock (Object object, std::defer_lock_t t)
 
template<typename Object >
 KisAdaptedLock (Object object, std::try_to_lock_t t)
 
KisAdaptedLockoperator= (KisAdaptedLock &&rhs)
 

Detailed Description

template<typename Adapter>
class KisAdaptedLock< Adapter >

A wrapper class that adapts std::unique_lock to any kind of locking that might be necessary to a particular class.

Just define an Adapter class that implements lock(), unlock() and (optionally) try_lock() interface and pass it to KisAdaptedLock. The resulting class will behave as normal std::unique_lock and lock/unlock the object as you instructed it.

See examples in KisCursorOverrideLockAdapter and KisLockFrameGenerationLock

Definition at line 26 of file KisAdaptedLock.h.

Constructor & Destructor Documentation

◆ KisAdaptedLock() [1/5]

template<typename Adapter >
template<typename Object >
KisAdaptedLock< Adapter >::KisAdaptedLock ( Object object)
inline

Definition at line 32 of file KisAdaptedLock.h.

33 : Adapter(object)
34 , std::unique_lock<Adapter>(
35 static_cast<Adapter&>(*this))
36 {}

◆ KisAdaptedLock() [2/5]

template<typename Adapter >
template<typename Object >
KisAdaptedLock< Adapter >::KisAdaptedLock ( Object object,
std::try_to_lock_t t )
inline

Definition at line 39 of file KisAdaptedLock.h.

40 : Adapter(object)
41 , std::unique_lock<Adapter>(static_cast<Adapter&>(*this), t)
42 {}

◆ KisAdaptedLock() [3/5]

template<typename Adapter >
template<typename Object >
KisAdaptedLock< Adapter >::KisAdaptedLock ( Object object,
std::defer_lock_t t )
inline

Definition at line 45 of file KisAdaptedLock.h.

46 : Adapter(object)
47 , std::unique_lock<Adapter>(static_cast<Adapter&>(*this), t)
48 {}

◆ KisAdaptedLock() [4/5]

template<typename Adapter >
template<typename Object >
KisAdaptedLock< Adapter >::KisAdaptedLock ( Object object,
std::adopt_lock_t t )
inline

Definition at line 51 of file KisAdaptedLock.h.

52 : Adapter(object)
53 , std::unique_lock<Adapter>(static_cast<Adapter&>(*this), t)
54 {}

◆ KisAdaptedLock() [5/5]

template<typename Adapter >
KisAdaptedLock< Adapter >::KisAdaptedLock ( KisAdaptedLock< Adapter > && rhs)
inline

Definition at line 56 of file KisAdaptedLock.h.

57 : Adapter(static_cast<Adapter&>(rhs))
58 , std::unique_lock<Adapter>(
59 static_cast<Adapter&>(*this), std::adopt_lock)
60 {
61 rhs.release();
62 }

Member Function Documentation

◆ operator=()

template<typename Adapter >
KisAdaptedLock & KisAdaptedLock< Adapter >::operator= ( KisAdaptedLock< Adapter > && rhs)
inline

Definition at line 64 of file KisAdaptedLock.h.

65 {
66 static_cast<Adapter&>(*this) = rhs;
67 static_cast<std::unique_lock<Adapter>&>(*this) =
68 std::unique_lock<Adapter>(static_cast<Adapter&>(*this),
69 std::adopt_lock);
70 rhs.release();
71 return *this;
72 }

The documentation for this class was generated from the following file: