3 #include <core_api/lsglobaldefinitions.h>
106 T* get()
const throw()
116 T* operator->()
const
122 typedef T*
ref_ptr<T>::*unspecified_bool_type;
123 operator unspecified_bool_type()
const
131 std::swap(m_obj, other.m_obj);
138 template<
class T,
class U>
139 inline bool operator==(ref_ptr<T>
const & p1, ref_ptr<U>
const & p2)
141 return p1.get() == p2.get();
144 template<
class T,
class U>
145 inline bool operator!=(ref_ptr<T>
const & p1, ref_ptr<U>
const & p2)
147 return p1.get() != p2.get();
150 template<
class T,
class U>
151 inline bool operator==(ref_ptr<T>
const & p1, U* p2)
153 return p1.get() == p2;
156 template<
class T,
class U>
157 inline bool operator!=(ref_ptr<T>
const & p1, U* p2)
159 return p1.get() != p2;
162 template<
class T,
class U>
163 inline bool operator==(T* p1, ref_ptr<U>
const & p2)
165 return p1 == p2.get();
168 template<
class T,
class U>
169 inline bool operator!=(T* p1, ref_ptr<U>
const & p2)
171 return p1 != p2.get();
175 inline bool operator<(ref_ptr<T>
const & p1, ref_ptr<T>
const & p2)
177 return std::less<T *>()(p1.get(), p2.get());
180 template<
class T>
void swap(ref_ptr<T> & lhs, ref_ptr<T> & rhs)
185 template<
class T,
class U>
186 ref_ptr<T> static_pointer_cast(ref_ptr<U>
const & p)
188 return static_cast<T *>(p.get());
191 template<
class T,
class U>
192 ref_ptr<T> const_pointer_cast(ref_ptr<U>
const & p)
194 return const_cast<T *>(p.get());
197 template<
class T,
class U>
198 ref_ptr<T> dynamic_pointer_cast(ref_ptr<U>
const & p)
200 return dynamic_cast<T *>(p.get());