|
Rebel Fork Framework
|
Shared pointer template class with intrusive reference counting. More...
#include <Urho3D/Container/Ptr.h>
Public Types | |
| using | ThisType = SharedPtr< InterfaceType, RefCountedType > |
| using | BaseType = Detail::SharedPtrBase< InterfaceType, RefCountedType > |
Public Member Functions | |
| SharedPtr (std::nullptr_t) noexcept | |
| SharedPtr (const ThisType &rhs) noexcept=default | |
| SharedPtr (ThisType &&rhs) noexcept=default | |
| SharedPtr (InterfaceType *ptr, RefCounted *refCounted) noexcept | |
| Construct with explicit reference counter. | |
| template<class U1 , class U2 > | |
| SharedPtr (const SharedPtr< U1, U2 > &rhs) noexcept | |
| Construct from another shared pointer. | |
| template<class U > | |
| SharedPtr (U *ptr) noexcept | |
| Construct from a raw pointer. | |
| ThisType & | operator= (const ThisType &rhs) noexcept |
| Assign from another shared pointer. | |
| template<class U1 , class U2 > | |
| ThisType & | operator= (const SharedPtr< U1, U2 > &rhs) noexcept |
| Assign from another shared pointer. | |
| ThisType & | operator= (ThisType &&rhs) noexcept |
| Move-assign from another shared pointer. | |
| template<class U1 , class U2 > | |
| ThisType & | operator= (SharedPtr< U1, U2 > &&rhs) noexcept |
| Move-assign from another shared pointer. | |
| template<class U > | |
| ThisType & | operator= (U *ptr) noexcept |
| Assign from a raw pointer. | |
| InterfaceType * | operator-> () const noexcept |
| Point to the object. | |
| InterfaceType & | operator* () const noexcept |
| Dereference the object. | |
| template<class U1 , class U2 > | |
| bool | operator< (const SharedPtr< U1, U2 > &rhs) const noexcept |
| Test for less than with another shared pointer. | |
| template<class U1 , class U2 > | |
| bool | operator== (const SharedPtr< U1, U2 > &rhs) const noexcept |
| Test for equality with another shared pointer. | |
| template<class U1 , class U2 > | |
| bool | operator!= (const SharedPtr< U1, U2 > &rhs) const noexcept |
| Test for inequality with another shared pointer. | |
| operator InterfaceType * () const noexcept | |
| Convert to a raw pointer. | |
| void | Reset () noexcept |
| template<class U > | |
| void | Reset (U *ptr) noexcept |
| Reset with another pointer. | |
| void | Reset (InterfaceType *ptr, RefCounted *refCounted) noexcept |
| Reset with another pointers. | |
| InterfaceType * | Detach () noexcept |
| Detach without destroying the object even if the refcount goes zero. To be used for scripting language interoperation. | |
| template<class U1 , class U2 > | |
| void | StaticCast (const SharedPtr< U1, U2 > &rhs) noexcept |
| Perform a static cast from a shared pointer of another type. | |
| template<class U1 , class U2 > | |
| void | DynamicCast (const SharedPtr< U1, U2 > &rhs) noexcept |
| Perform a dynamic cast from a shared pointer of another type. | |
| InterfaceType * | Get () const noexcept |
| Return the raw pointer. | |
| int | Refs () const noexcept |
| Return the object's reference count, or 0 if the pointer is null. | |
| int | WeakRefs () const noexcept |
| Return the object's weak reference count, or 0 if the pointer is null. | |
| 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! | |
Shared pointer template class with intrusive reference counting.