56template<
typename T>
class RefPtr;
111 : instance_(other.instance_)
122 : instance_(other.instance_)
150 T* old_value = std::move(instance_);
151 instance_ = std::forward<T*>(
nullptr);
153 old_value->Release();
159 inline T*
get()
const {
return instance_; }
162 T* result = std::move(instance_);
163 instance_ = std::forward<T*>(
nullptr);
167 T&
operator*()
const { assert(instance_);
return *instance_; }
184 return a.instance_ == b.instance_;
188 return a.instance_ != b.instance_;
192 return a.instance_ < b.instance_;
249 T* old_instance = std::move(instance_);
250 instance_ = std::forward<T*>(
nullptr);
252 old_instance->Release();
259 RefPtr ptr = std::move(other);
268 RefPtr ptr = std::move(other);
280 std::swap(instance_, other.instance_);
289template<
typename T,
typename U>
292 return a.
get() == b.
get();
295template<
typename T,
typename U>
301template<
typename T,
typename U>
307template<
typename T,
typename U>
310 return a.
get() != b.
get();
313template<
typename T,
typename U>
319template<
typename T,
typename U>
#define UExport
Definition Exports.h:25
Interface for all ref-counted objects that will be managed using the RefPtr<> smart pointer.
Definition RefPtr.h:47
virtual void AddRef() const =0
virtual int ref_count() const =0
virtual void Release() const =0
A nullable smart pointer.
Definition RefPtr.h:79
T & operator*() const
Definition RefPtr.h:167
constexpr RefPtr()
Construct a NULL ref-pointer.
Definition RefPtr.h:84
friend RefPtr AdoptRef(T &)
Helper for wrapping new objects with the RefPtr smart pointer.
Definition RefPtr.h:68
void swap(RefPtr &ptr)
Exchanges the stored pointer values and the ownerships of *this and ptr.
Definition RefPtr.h:278
friend bool operator==(const RefPtr &a, const RefPtr &b)
Definition RefPtr.h:183
RefPtr(T &object, AdoptTag)
Definition RefPtr.h:215
RefPtr(RefPtr &&other)
Move constructor.
Definition RefPtr.h:131
AdoptTag
Definition RefPtr.h:214
@ Adopt
Definition RefPtr.h:214
T *RefPtr::* UnspecifiedBoolType
Definition RefPtr.h:173
RefPtr & operator=(RefPtr< U > &&)
bool operator!() const
Definition RefPtr.h:170
RefPtr & operator=(const RefPtr &)
Definition RefPtr.h:222
friend bool operator!=(const RefPtr &a, const RefPtr &b)
Definition RefPtr.h:187
RefPtr(std::nullptr_t)
Construct a NULL ref-pointer.
Definition RefPtr.h:92
RefPtr & operator=(const RefPtr< U > &)
T * operator->() const
Definition RefPtr.h:168
RefPtr(T *other)
Construct from a pointer.
Definition RefPtr.h:100
RefPtr(const RefPtr &other)
Copy constructor.
Definition RefPtr.h:110
RefPtr(RefPtr< U > &&other)
Move constructor.
Definition RefPtr.h:140
T * LeakRef()
Definition RefPtr.h:161
friend bool operator<(const RefPtr &a, const RefPtr &b)
Definition RefPtr.h:191
void reset()
Releases the ownership of the managed object, if any.
Definition RefPtr.h:273
~RefPtr()
Destroy RefPtr (wll decrement ref-count by one)
Definition RefPtr.h:148
T * get() const
Get a pointer to wrapped object.
Definition RefPtr.h:159
RefPtr(const RefPtr< U > &other)
Copy constructor with internal type conversion.
Definition RefPtr.h:121
void swap(RefPtr< T > &a, RefPtr< T > &b)
Definition RefPtr.h:284
RefPtr< T > AdoptRef(T &reference)
Helper for wrapping new objects with the RefPtr smart pointer.
Definition RefPtr.h:68
bool operator==(const Matrix &a, const Matrix &b)
bool operator!=(const Matrix &a, const Matrix &b)