Listing 4: NTreference count implementation
////////////////////////////////////////////
// Copyright (c) Panos Kougiouris 1997
////////////////////////////////////////////
#include <kfReferenceCount.h>
CKFReferenceCount::CKFReferenceCount()
{
m_count = 1;
}
CKFReferenceCount::~CKFReferenceCount()
{
assert(m_count == 0);
}
//------------------------------------------
void
CKFReferenceCount::increment()
{
InterlockedIncrement((LPLONG)&m_count);
}
//------------------------------------------
void
CKFReferenceCount::decrement()
{
LONG ret =
InterlockedDecrement((LPLONG)&m_count);
assert(ret >= 0); // less than 0 means
// too many decrements
if (m_count == 0) {
delete this;
}
}
//------------------------------------------
int
CKFReferenceCount::count()
{
return m_count;
}
//End of File