* Added missing inclusion of <stddef.h>.

* Added AutoLocker constructor with the locking strategy as parameter.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29685 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold 2009-03-24 23:09:49 +00:00
parent e4aad26fec
commit a3ff5c0561
1 changed files with 21 additions and 7 deletions

View File

@ -6,6 +6,9 @@
#define _AUTO_LOCKER_H
#include <stddef.h>
namespace BPrivate {
// AutoLockerStandardLocking
@ -61,15 +64,25 @@ private:
typedef AutoLocker<Lockable, Locking> ThisClass;
public:
inline AutoLocker()
: fLockable(NULL),
fLocked(false)
:
fLockable(NULL),
fLocked(false)
{
}
inline AutoLocker(const Locking& locking)
:
fLockable(NULL),
fLocking(locking),
fLocked(false)
{
}
inline AutoLocker(Lockable *lockable, bool alreadyLocked = false,
bool lockIfNotLocked = true)
: fLockable(lockable),
fLocked(fLockable && alreadyLocked)
:
fLockable(lockable),
fLocked(fLockable && alreadyLocked)
{
if (!alreadyLocked && lockIfNotLocked)
Lock();
@ -77,8 +90,9 @@ public:
inline AutoLocker(Lockable &lockable, bool alreadyLocked = false,
bool lockIfNotLocked = true)
: fLockable(&lockable),
fLocked(fLockable && alreadyLocked)
:
fLockable(&lockable),
fLocked(fLockable && alreadyLocked)
{
if (!alreadyLocked && lockIfNotLocked)
Lock();
@ -150,8 +164,8 @@ public:
protected:
Lockable *fLockable;
bool fLocked;
Locking fLocking;
bool fLocked;
};