Weak pointer template class with intrusive reference counting. Does not keep the object pointed to alive.
More...
|
| WeakPtr (std::nullptr_t) noexcept |
|
| WeakPtr (const ThisType &rhs) noexcept |
| Copy-construct from another weak pointer.
|
|
| WeakPtr (ThisType &&rhs) noexcept |
| Move-construct from another weak pointer.
|
|
template<class U1 , class U2 > |
| WeakPtr (const WeakPtr< U1, U2 > &rhs) noexcept |
| Copy-construct from another weak pointer allowing implicit upcasting.
|
|
template<class U1 , class U2 > |
| WeakPtr (const SharedPtr< U1, U2 > &rhs) noexcept |
| Construct from a shared pointer.
|
|
template<class U , ea::enable_if_t< ea::is_base_of_v< InterfaceType, U >, int > = 0> |
| WeakPtr (U *ptr) noexcept |
| Construct from a raw pointer.
|
|
| WeakPtr (InterfaceType *ptr, RefCounted *refCounted) noexcept |
| Construct from separate pointers.
|
|
| ~WeakPtr () noexcept |
| Destruct. Release the weak reference to the object.
|
|
template<class U1 , class U2 > |
ThisType & | operator= (const SharedPtr< U1, U2 > &rhs) noexcept |
| Assign from a shared pointer.
|
|
ThisType & | operator= (const ThisType &rhs) noexcept |
| Assign from a weak pointer.
|
|
ThisType & | operator= (ThisType &&rhs) noexcept |
| Move-assign from another weak pointer.
|
|
template<class U1 , class U2 > |
ThisType & | operator= (const WeakPtr< U1, U2 > &rhs) noexcept |
| Assign from another weak pointer allowing implicit upcasting.
|
|
ThisType & | operator= (InterfaceType *ptr) noexcept |
| Assign from a raw pointer.
|
|
SharedPtrType | Lock () const noexcept |
| Convert to a shared pointer. If expired, return a null shared pointer.
|
|
InterfaceType * | Get () const noexcept |
| Return raw pointer. If expired, return null.
|
|
InterfaceType * | operator-> () const noexcept |
| Point to the object.
|
|
InterfaceType & | operator* () const noexcept |
| Dereference the object.
|
|
template<class U1 , class U2 > |
bool | operator== (const WeakPtr< U1, U2 > &rhs) const noexcept |
| Test for equality with another weak pointer.
|
|
template<class U1 , class U2 > |
bool | operator!= (const WeakPtr< U1, U2 > &rhs) const noexcept |
| Test for inequality with another weak pointer.
|
|
template<class U1 , class U2 > |
bool | operator< (const WeakPtr< U1, U2 > &rhs) const noexcept |
| Test for less than with another weak pointer.
|
|
| operator InterfaceType * () const noexcept |
| Convert to a raw pointer, null if the object is expired.
|
|
void | Swap (ThisType &rhs) noexcept |
| Swap with another WeakPtr.
|
|
void | Reset (InterfaceType *ptr=nullptr) noexcept |
| Reset with another pointer.
|
|
template<class U1 , class U2 > |
void | StaticCast (const WeakPtr< U1, U2 > &rhs) noexcept |
| Perform a static cast from a weak pointer of another type.
|
|
template<class U1 , class U2 > |
void | DynamicCast (const WeakPtr< U1, U2 > &rhs) noexcept |
| Perform a dynamic cast from a weak pointer of another type.
|
|
int | Refs () const noexcept |
| Return the object's reference count, or 0 if null pointer or if object has expired.
|
|
int | WeakRefs () const noexcept |
| Return the object's weak reference count.
|
|
bool | Expired () const noexcept |
| Return whether the object has expired. If null pointer, always return true.
|
|
RefCount * | RefCountPtr () const noexcept |
| Return pointer to the RefCount structure.
|
|
size_t | ToHash () const noexcept |
| Return hash value for HashSet & HashMap. Use the same hash function as for raw pointers!
|
|
template<class InterfaceType, class RefCountedType = InterfaceType>
class Urho3D::WeakPtr< InterfaceType, RefCountedType >
Weak pointer template class with intrusive reference counting. Does not keep the object pointed to alive.