12 #ifndef _ND_SHARED_PTR_H_
13 #define _ND_SHARED_PTR_H_
30 const T* operator* ()
const;
42 ndRefCounter* m_references;
61 int ref = fetch_add(-1);
68 ,m_references(new ndRefCounter)
70 m_references->AddRef();
76 ,m_references(new ndRefCounter)
78 m_references->AddRef();
84 ,m_references(sp.m_references)
86 m_references->AddRef();
92 int ref = m_references->Release();
103 template <
typename T>
108 if (m_references->Release() == 0)
118 m_references = src.m_references;
119 m_references->AddRef();
124 template <
typename T>
127 ndSwap(m_ptr, src.m_ptr);
128 ndSwap(m_references, src.m_references);
131 template <
typename T>
137 template <
typename T>
143 template <
typename T>