/***************************************************************************** * * (C) COPYRIGHT MICROSOFT CORPORATION, 2000 * * TITLE: gensph.h * * VERSION: 1.0 * * AUTHOR: LazarI * * DATE: 23-Dec-2000 * * DESCRIPTION: generic smart pointers & smart handles templates * *****************************************************************************/ //////////////////////////////////////////////// // // class CRefPtrCOM // // referenced smart COM pointer (ATL style) // template inline void CRefPtrCOM::_AddRefAttach(T *p) { if( IsntNull(p) ) { p->AddRef(); } Reset(); m_p = (p ? p : GetNull()); } template inline HRESULT CRefPtrCOM::CopyFrom(T *p) { _AddRefAttach(p); return S_OK; } template inline HRESULT CRefPtrCOM::CopyTo(T **ppObj) { HRESULT hr = E_INVALIDARG; if( ppObj ) { *ppObj = m_p; if( IsntNull(*ppObj) ) { (*ppObj)->AddRef(); } hr = S_OK; } return hr; } template inline HRESULT CRefPtrCOM::TransferTo(T **ppObj) { HRESULT hr = E_INVALIDARG; if( ppObj ) { *ppObj = m_p; m_p = GetNull(); hr = S_OK; } return hr; } template inline HRESULT CRefPtrCOM::Adopt(T *p) { Reset(); m_p = (p ? p : GetNull()); return S_OK; }