BPrivate::WeakReferenceable: Move implementation to a .cpp.
No functional change to the implementation, just getting it out of a header.
This commit is contained in:
@@ -230,99 +230,6 @@ private:
|
||||
};
|
||||
|
||||
|
||||
// #pragma mark -
|
||||
|
||||
|
||||
inline
|
||||
WeakPointer::WeakPointer(BWeakReferenceable* object)
|
||||
:
|
||||
fUseCount(1),
|
||||
fObject(object)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
WeakPointer::~WeakPointer()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
inline BWeakReferenceable*
|
||||
WeakPointer::Get()
|
||||
{
|
||||
int32 count = -11;
|
||||
|
||||
do {
|
||||
count = atomic_get(&fUseCount);
|
||||
if (count == 0)
|
||||
return NULL;
|
||||
} while (atomic_test_and_set(&fUseCount, count + 1, count) != count);
|
||||
|
||||
return fObject;
|
||||
}
|
||||
|
||||
|
||||
inline bool
|
||||
WeakPointer::Put()
|
||||
{
|
||||
if (atomic_add(&fUseCount, -1) == 1) {
|
||||
delete fObject;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
inline int32
|
||||
WeakPointer::UseCount() const
|
||||
{
|
||||
return fUseCount;
|
||||
}
|
||||
|
||||
|
||||
inline void
|
||||
WeakPointer::GetUnchecked()
|
||||
{
|
||||
atomic_add(&fUseCount, 1);
|
||||
}
|
||||
|
||||
|
||||
// #pragma -
|
||||
|
||||
|
||||
inline
|
||||
BWeakReferenceable::BWeakReferenceable()
|
||||
:
|
||||
fPointer(new(std::nothrow) WeakPointer(this))
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
inline
|
||||
BWeakReferenceable::~BWeakReferenceable()
|
||||
{
|
||||
fPointer->ReleaseReference();
|
||||
}
|
||||
|
||||
|
||||
inline status_t
|
||||
BWeakReferenceable::InitCheck()
|
||||
{
|
||||
if (fPointer == NULL)
|
||||
return B_NO_MEMORY;
|
||||
return B_OK;
|
||||
}
|
||||
|
||||
|
||||
inline WeakPointer*
|
||||
BWeakReferenceable::GetWeakPointer()
|
||||
{
|
||||
fPointer->AcquireReference();
|
||||
return fPointer;
|
||||
}
|
||||
|
||||
} // namespace BPrivate
|
||||
|
||||
using BPrivate::BWeakReferenceable;
|
||||
|
||||
Reference in New Issue
Block a user