14 typedef T element_type;
32 explicitDecRef(m_ptr);
44 explicitDecRef(m_ptr);
49 explicitIncRef(m_ptr);
77 assert(
get() &&
"Accessing member of null pointer!");
83 assert(
get() &&
"Dereferencing null pointer!");
87 typedef RefPtr<T> this_type;
95 return (
get() ? &this_type::m_ptr : 0);
100 assert(!m_ptr || m_ptr->getRefCount() > 0 &&
101 "Dereferencing pointer with refCount <= 0");
112 T* get_pointer(
const RefPtr<T>& p)
118 template<
typename T,
typename U>
119 bool operator==(
const RefPtr<T>& a,
const RefPtr<U>& b)
121 return (a.get() == b.get());
124 template<
typename T,
typename U>
125 bool operator==(
const RefPtr<T>& a,
const U* b)
127 return (a.get() == b);
130 template<
typename T,
typename U>
131 bool operator==(
const T* a,
const RefPtr<U>& b)
133 return (a == b.get());
137 template<
typename T,
typename U>
138 bool operator!=(
const RefPtr<T>& a,
const RefPtr<U>& b)
140 return (a.get() != b.get());
143 template<
typename T,
typename U>
144 bool operator!=(
const RefPtr<T>& a,
const U* b)
146 return (a.get() != b);
149 template<
typename T,
typename U>
150 bool operator!=(
const T* a,
const RefPtr<U>& b)
152 return (a != b.get());
156 template<
typename T,
typename U>
157 bool operator<(const RefPtr<T>& a,
const RefPtr<U>& b)
159 return (a.get() < b.get());
162 template<
typename T,
typename U>
163 bool operator<(const RefPtr<T>& a,
const U* b)
165 return (a.get() < b);
168 template<
typename T,
typename U>
169 bool operator<(const T* a, const RefPtr<U>& b)
171 return (a < b.get());