* 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:
@@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user