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