37template <
typename TOwnable>
51 template<
typename TRequires= TOwnable>
56 template<
typename TRequires= TOwnable>
58 void callRelease() {
owned.Release(); }
68 ,
dbgCI(ci) { ownable.Acquire( ci ); }
70 Owner( TOwnable& ownable ) :
owned(ownable) { ownable.Acquire(); }
84template <
typename TOwnable>
99 template<
typename TRequires= TOwnable>
104 template<
typename TRequires= TOwnable>
106 void callRelease() {
owned.Release(); }
109 template<
typename TRequires= TOwnable>
111 void callRelease() {
owned.ReleaseRecursive(
dbgCI); }
114 template<
typename TRequires= TOwnable>
116 void callRelease() {
owned.ReleaseRecursive(); }
148template <
typename TOwnable>
163 template<
typename TRequires= TOwnable>
168 template<
typename TRequires= TOwnable>
170 void callRelease() {
owned.Release(); }
174 template<
typename TRequires= TOwnable>
176 void callRelease() {
owned.ReleaseRecursive(
dbgCI); }
179 template<
typename TRequires= TOwnable>
181 void callRelease() {
owned.ReleaseRecursive(); }
195 template<
typename TTimeValue>
200 template<
typename TTimeValue>
222template <
typename TOwnable>
236 template<
typename TRequires= TOwnable>
238 void callRelease() {
owned.ReleaseRecursive(
dbgCI); }
241 template<
typename TRequires= TOwnable>
243 void callRelease() {
owned.ReleaseRecursive(); }
253 ,
dbgCI(ci) { ownable.AcquireRecursive(ci); }
270template <
typename TOwnable>
284 template<
typename TRequires= TOwnable>
286 void callRelease()
const {
owned.ReleaseShared(
dbgCI); }
289 template<
typename TRequires= TOwnable>
291 void callRelease()
const {
owned.ReleaseShared(); }
301 ,
dbgCI(ci) { ownable.AcquireShared(ci); }
303 OwnerShared( TOwnable& ownable ) :
owned(ownable) { ownable.AcquireShared(); }
319template <
typename TOwnable>
334 template<
typename TRequires= TOwnable>
336 void callRelease() {
owned.ReleaseShared(
dbgCI); }
339 template<
typename TRequires= TOwnable>
341 void callRelease() {
owned.ReleaseShared(); }
375template <
typename TOwnable>
390 template<
typename TRequires= TOwnable>
392 void callRelease() {
owned.ReleaseShared(
dbgCI); }
395 template<
typename TRequires= TOwnable>
397 void callRelease() {
owned.ReleaseShared(); }
410 template<
typename TTimeValue>
415 template<
typename TTimeValue>
TOwnable & owned
The resource to acquire and release.
OwnerRecursive(TOwnable &ownable, const CallerInfo &ci)
~OwnerRecursive()
Destructor. Invokes ReleaseRecursive() on member owned.
CallerInfo dbgCI
Caller information. Available only with debug-builds.
CallerInfo dbgCI
Caller information. Available only with debug-builds.
bool IsOwning() const noexcept
OwnerSharedTimed(TOwnable &ownable, const TTimeValue &time, const CallerInfo &ci)
~OwnerSharedTimed()
Destructor. Invokes Release() on member owned.
TOwnable & owned
The resource to acquire and release.
bool isOwning
The result of the call to TryAcquire.
~OwnerShared()
Destructor. Invokes ReleaseShared() on member owned.
TOwnable & owned
The resource to acquire and release.
OwnerShared(TOwnable &ownable, const CallerInfo &ci)
CallerInfo dbgCI
Caller information. Available only with debug-builds.
TOwnable & owned
The resource to acquire and release.
bool IsOwning() const noexcept
~OwnerTimed()
Destructor. Invokes Release() on member owned.
CallerInfo dbgCI
Caller information. Available only with debug-builds.
OwnerTimed(TOwnable &ownable, const TTimeValue &time, const CallerInfo &ci)
bool isOwning
The result of the call to TryAcquire.
bool isOwning
The result of the call to TryAcquire.
~OwnerTryShared()
Destructor. Invokes Release() on member owned.
CallerInfo dbgCI
Caller information. Available only with debug-builds.
bool IsOwning() const noexcept
TOwnable & owned
The resource to acquire and release.
OwnerTryShared(TOwnable &ownable, const CallerInfo &ci)
CallerInfo dbgCI
Caller information. Available only with debug-builds.
OwnerTry(TOwnable &ownable, const CallerInfo &ci)
TOwnable & owned
The resource to acquire and release.
~OwnerTry()
Destructor. Invokes Release() on member owned.
bool IsOwning() const noexcept
bool isOwning
The result of the call to TryAcquire.
TOwnable & owned
The resource to acquire and release.
~Owner()
Destructor. Releases the owner by invoking Release().
Owner(TOwnable &ownable, const CallerInfo &ci)
CallerInfo dbgCI
Caller information. Available only with debug-builds.
#define ALIB_HAS_METHOD(T, Method,...)
#define ALIB_STACK_ALLOCATED_TYPE(T)