diff --git a/headers/private/shared/AutoLocker.h b/headers/private/shared/AutoLocker.h index 95fa4c496b..112521881b 100644 --- a/headers/private/shared/AutoLocker.h +++ b/headers/private/shared/AutoLocker.h @@ -15,12 +15,12 @@ namespace BPrivate { template class AutoLockerStandardLocking { public: - inline bool Lock(Lockable *lockable) + inline bool Lock(Lockable* lockable) { return lockable->Lock(); } - inline void Unlock(Lockable *lockable) + inline void Unlock(Lockable* lockable) { lockable->Unlock(); } @@ -30,12 +30,12 @@ public: template class AutoLockerReadLocking { public: - inline bool Lock(Lockable *lockable) + inline bool Lock(Lockable* lockable) { return lockable->ReadLock(); } - inline void Unlock(Lockable *lockable) + inline void Unlock(Lockable* lockable) { lockable->ReadUnlock(); } @@ -45,12 +45,12 @@ public: template class AutoLockerWriteLocking { public: - inline bool Lock(Lockable *lockable) + inline bool Lock(Lockable* lockable) { return lockable->WriteLock(); } - inline void Unlock(Lockable *lockable) + inline void Unlock(Lockable* lockable) { lockable->WriteUnlock(); } @@ -78,7 +78,7 @@ public: { } - inline AutoLocker(Lockable *lockable, bool alreadyLocked = false, + inline AutoLocker(Lockable* lockable, bool alreadyLocked = false, bool lockIfNotLocked = true) : fLockable(lockable), @@ -88,7 +88,7 @@ public: Lock(); } - inline AutoLocker(Lockable &lockable, bool alreadyLocked = false, + inline AutoLocker(Lockable& lockable, bool alreadyLocked = false, bool lockIfNotLocked = true) : fLockable(&lockable), @@ -103,7 +103,7 @@ public: Unlock(); } - inline void SetTo(Lockable *lockable, bool alreadyLocked, + inline void SetTo(Lockable* lockable, bool alreadyLocked, bool lockIfNotLocked = true) { Unlock(); @@ -113,7 +113,7 @@ public: Lock(); } - inline void SetTo(Lockable &lockable, bool alreadyLocked, + inline void SetTo(Lockable& lockable, bool alreadyLocked, bool lockIfNotLocked = true) { SetTo(&lockable, alreadyLocked, lockIfNotLocked); @@ -146,24 +146,32 @@ public: fLocked = false; } - inline AutoLocker &operator=(Lockable *lockable) + inline AutoLocker& operator=(Lockable* lockable) { SetTo(lockable); return *this; } - inline AutoLocker &operator=(Lockable &lockable) + inline AutoLocker& operator=(Lockable& lockable) { SetTo(&lockable); return *this; } + inline ThisClass& operator=(ThisClass& otherLocker) + { + fLockable = otherLocker.fLockable; + fLocked = otherLocker.fLocked; + otherLocker.Detach(); + return &this; + } + inline bool IsLocked() const { return fLocked; } inline operator bool() const { return fLocked; } protected: - Lockable *fLockable; + Lockable* fLockable; Locking fLocking; bool fLocked; };