/////////////////////////////////////////////////////////////////////////// // Interstate Gangs : smart_ptr.inl /////////////////////////////////////////////////////////////////////////// // This file is under GPL licence /////////////////////////////////////////////////////////////////////////// // CHANGELOG // Groove - 13/06/2005 : // - Create file /////////////////////////////////////////////////////////////////////////// namespace gli { template util::CSmartPtr::CSmartPtr() { m_pPointer = 0; } template util::CSmartPtr::CSmartPtr(const util::CSmartPtr & SmartPtr) { m_pReference = SmartPtr.m_pReference; m_pPointer = SmartPtr.m_pPointer; (*m_pReference)++; } template util::CSmartPtr::CSmartPtr(T* pPointer) { m_pReference = new int; m_pPointer = pPointer; (*m_pReference) = 1; } template util::CSmartPtr::~CSmartPtr() { if(!m_pPointer) return; (*m_pReference)--; if(*m_pReference <= 0) { delete m_pReference; delete m_pPointer; } } template util::CSmartPtr& util::CSmartPtr::operator=(const util::CSmartPtr & SmartPtr) { if(m_pPointer) { (*m_pReference)--; if(*m_pReference <= 0) { delete m_pReference; delete m_pPointer; } } m_pReference = SmartPtr.m_pReference; m_pPointer = SmartPtr.m_pPointer; (*m_pReference)++; return *this; } template util::CSmartPtr& util::CSmartPtr::operator=(T* pPointer) { if(m_pPointer) { (*m_pReference)--; if(*m_pReference <= 0) { delete m_pReference; delete m_pPointer; } } m_pReference = new int; m_pPointer = pPointer; (*m_pReference) = 1; return *this; } template bool util::CSmartPtr::operator==(const util::CSmartPtr & SmartPtr) const { return m_pPointer == SmartPtr.m_pPointer; } template bool util::CSmartPtr::operator!=(const util::CSmartPtr & SmartPtr) const { return m_pPointer != SmartPtr.m_pPointer; } template T& util::CSmartPtr::operator*() { return *m_pPointer; } template T* util::CSmartPtr::operator->() { return m_pPointer; } template const T& util::CSmartPtr::operator*() const { return *m_pPointer; } template const T* util::CSmartPtr::operator->() const { return m_pPointer; } }//namespace gli