//
// refcount.inl
//
// This file implements the member functions of 
// CRefCount as defined in smartptr.h.  
// Refer to smartptr.h for all information.
//


//-------------------------------------------
//
//  Initialize the reference count to -1.  We Use -1 so 
//  that it will be possible to determine when the first reference
//  is made.
//  
inline
CRefCount::CRefCount( ) : m_refs( -1 ) { }

//-------------------------------------------
inline  LONG
CRefCount::AddRef( ) {
//
//  Add a reference to an object.
//
    return  InterlockedIncrement( &m_refs ) ;
}



//-------------------------------------------
inline  LONG
CRefCount::RemoveRef( ) {
//
//  Remove a Reference from an object.
//  When this function returns a negative number the object
//  should be destroyed.
//
    return  InterlockedDecrement( &m_refs ) ;
}