Smart pointer class which tracks pointer modes of template arguments of stored object and updates them after each assignment. This type is a pointer to manage other object's deletion. It should be allocated on stack and passed to functions either by value or by const reference.
More...
|
| | DynamicWeakPtr (std::nullptr_t=nullptr) |
| | Creates null smart pointer. More...
|
| |
| | DynamicWeakPtr (Pointee_ *object) |
| | Creates smart pointer pointing to given object. More...
|
| |
| | DynamicWeakPtr (const SmartPtr_ &ptr) |
| | Copy-constructs smart pointer. More...
|
| |
| template<class Q > |
| | DynamicWeakPtr (const SmartPtr< Q > &x) |
| | Copy-constructs smart pointer. More...
|
| |
| | DynamicWeakPtr (const DynamicWeakPtr_ &ptr) |
| | Copy-constructs smart pointer. More...
|
| |
| | DynamicWeakPtr (SmartPtr_ &&x) |
| | Move-constructs smart pointer. More...
|
| |
| bool | operator== (std::nullptr_t) const |
| | Checks if smart pointer is null. More...
|
| |
| DynamicWeakPtr_ & | operator= (SmartPtr_ &&x) |
| | Move-assigns smart pointer. More...
|
| |
| DynamicWeakPtr_ & | operator= (const SmartPtr_ &x) |
| | Copy-assigns smart pointer. More...
|
| |
| template<typename Q > |
| DynamicWeakPtr_ & | operator= (const SmartPtr< Q > &x) |
| | Copy-assigns smart pointer. More...
|
| |
| DynamicWeakPtr_ & | operator= (typename SmartPtr_::Pointee_ *p) |
| | Assigns smart pointer. More...
|
| |
| DynamicWeakPtr_ & | operator= (std::nullptr_t) |
| | Sets smart pointer to null. More...
|
| |
| | SmartPtr (SmartPtrMode mode) |
| | Creates SmartPtr object of required mode. More...
|
| |
| | SmartPtr (std::nullptr_t=nullptr, SmartPtrMode mode=SmartPtrMode::Shared) |
| | Creates null-pointer SmartPtr object of required mode. More...
|
| |
| | SmartPtr (Pointee_ *object, SmartPtrMode mode=SmartPtrMode::Shared) |
| | Creates SmartPtr pointing to specified object, or converts raw pointer to SmartPtr. More...
|
| |
| | SmartPtr (const SmartPtr_ &ptr, SmartPtrMode mode=SmartPtrMode::Shared) |
| | Copy constructs SmartPtr object. Both pointers point to the same object afterwards. More...
|
| |
| template<class Q , typename = typename std::enable_if<System::detail::is_pointer_convertible<Q, Pointee_>::type::value>::type> |
| | SmartPtr (const SmartPtr< Q > &x, SmartPtrMode mode=SmartPtrMode::Shared) |
| | Copy constructs SmartPtr object. Both pointers point to the same object afterwards. Performs type conversion if allowed. More...
|
| |
| | SmartPtr (SmartPtr_ &&x, SmartPtrMode mode=SmartPtrMode::Shared) noexcept |
| | Move constructs SmartPtr object. Effectively, swaps two pointers, if they are both of same mode. x may be unusable after call. More...
|
| |
| template<typename Y > |
| | SmartPtr (const SmartPtr< Array< Y > > &src, SmartPtrMode mode=SmartPtrMode::Shared) |
| | Converts type of referenced array by creating a new array of different type. Useful if in C# there is an array type cast which is unsupported in C++. More...
|
| |
| template<typename Y , typename = typename std::enable_if<std::is_same<Y, EmptyArrayInitializer>::value, void>::type> |
| | SmartPtr (const Y &) |
| | Initializes empty array. Used to translate some C# code constructs. More...
|
| |
| template<typename P > |
| | SmartPtr (const SmartPtr< P > &ptr, Pointee_ *p, SmartPtrMode mode=SmartPtrMode::Shared) |
| | Constructs a SmartPtr which shares ownership information with the initial value of ptr, but holds an unrelated and unmanaged pointer p. More...
|
| |
| | ~SmartPtr () |
| | Destroys SmartPtr object. If required, decreases pointed object's reference counter and deletes object. More...
|
| |
| SmartPtr_ & | operator= (SmartPtr_ &&x) noexcept |
| | Move-assigns SmartPtr object. x becomes unusable. More...
|
| |
| SmartPtr_ & | operator= (const SmartPtr_ &x) |
| | Copy-assigns SmartPtr object. More...
|
| |
| template<typename Q > |
| SmartPtr_ & | operator= (const SmartPtr< Q > &x) |
| | Copy-assigns SmartPtr object. Does required type conversions. More...
|
| |
| SmartPtr_ & | operator= (Pointee_ *p) |
| | Assigns raw pointer to SmartPtr object. More...
|
| |
| SmartPtr_ & | operator= (std::nullptr_t) |
| | Sets pointer value to nullptr. More...
|
| |
| Pointee_ * | operator-> () const |
| | Allows to access members of referenced object. More...
|
| |
| bool | operator== (std::nullptr_t) const |
| | Checks if pointer points to nullptr. More...
|
| |
| Pointee_ * | get () const |
| | Gets pointed object. More...
|
| |
| Pointee_ * | get_shared () const |
| | Gets pointed object, but asserts that pointer is in shared mode. More...
|
| |
| void | reset (Pointee_ *ptr) |
| | Sets pointed object. More...
|
| |
| void | reset () |
| | Makes pointer pointing to nullptr. More...
|
| |
| SmartPtrMode | get_Mode () const |
| | Gets pointer mode. More...
|
| |
| bool | IsShared () const |
| | Checks if pointer is in shared mode. More...
|
| |
| bool | IsWeak () const |
| | Checks if pointer is in weak mode. More...
|
| |
| bool | IsAliasingPtr () const |
| | Checks if pointer is pointed to another object than owned (created by an aliasing constructor). More...
|
| |
| Object * | GetObjectOwner () const |
| | Gets referenced object. More...
|
| |
| SmartPtr_ | RemoveAliasing () const |
| | Removes aliasing (created by an aliasing constructor) from pointer, makes sure it manages (if shared) or tracks (if weak) the same object it points to. More...
|
| |
| void | set_Mode (SmartPtrMode mode) |
| | Sets pointer mode. May alter referenced object's reference counts. More...
|
| |
| Pointee_ & | operator* () const |
| | Gets reference to pointed object. Asserts that pointer is not null. More...
|
| |
| | operator bool () const noexcept |
| | Checks if pointer is not null. More...
|
| |
| bool | operator! () const noexcept |
| | Checks if pointer is null. More...
|
| |
| template<class Y > |
| bool | operator< (Y *p) const |
| | Provides less-compare semantics for SmartPtr class. More...
|
| |
| template<class Y > |
| bool | operator< (SmartPtr< Y > const &x) const |
| | Provides less-compare semantics for SmartPtr class. More...
|
| |
| template<class Y > |
| SmartPtr< Y > | static_pointer_cast () const |
| | Casts pointer to different type using static_cast on pointed object. More...
|
| |
| template<class Y > |
| SmartPtr< Y > | dynamic_pointer_cast () const |
| | Casts pointer to different type using dynamic_cast on pointed object. More...
|
| |
| template<class Y > |
| SmartPtr< Y > | const_pointer_cast () const |
| | Casts pointer to different type using const_cast on pointed object. More...
|
| |
| template<class Y , typename Check = std::false_type> |
| std::enable_if_t< std::is_same< Y, T >::value, SmartPtr< Y > > | Cast () const |
| | Casts pointer to its type itself. More...
|
| |
| template<class Y , typename Check = std::false_type> |
| std::enable_if_t<!std::is_same< Y, T >::value &&std::is_base_of< Y, T >::value, SmartPtr< Y > > | Cast () const |
| | Casts pointer to base type using static_cast. More...
|
| |
| template<class Y , typename Check = std::false_type> |
| std::enable_if_t< Check::value &&!std::is_same< Y, T >::value &&!std::is_base_of< Y, T >::value, SmartPtr< Y > > | Cast () const |
| | Casts pointer to derived type dynamic_cast. More...
|
| |
| template<class Y , typename Check = std::false_type> |
| std::enable_if_t<!Check::value &&!std::is_same< Y, T >::value &&!std::is_base_of< Y, T >::value, SmartPtr< Y > > | Cast () const |
| | Casts pointer to derived type dynamic_cast. More...
|
| |
| bool | Is (const System::TypeInfo &target) const |
| | Checks if pointed object is of specific type or its child type. Follows C# 'is' semantics. More...
|
| |
| Object * | GetObjectOrNull () const |
| | Gets pointed object (if any) or nullptr. Same as get(). More...
|
| |
| SmartPtr< Object > | ToObjectPtr () const |
| | Converts any pointer type to pointer to Object. Doesn't require Pointee_ type to be complete. More...
|
| |
| Pointee_ * | GetPointer () const |
| | Gets pointed object (if any) or nullptr. Same as get(). More...
|
| |
| int | get_shared_count () const |
| | Gets number of shared pointers existing to referenced object, including current one. Asserts current pointer being in shared mode. More...
|
| |
| void | SetContainedTemplateWeakPtr (uint32_t argument) const |
| | Calls SetTemplateWeakPtr() method on pointed object (if any). More...
|
| |
| template<typename Q = T> |
| auto | begin () -> decltype(std::declval< Q >().begin()) |
| | Accessor for begin() method of an underling collection. Only compiles if SmartPtr_ is specialization type with begin() method. More...
|
| |
| template<typename Q = T> |
| auto | end () -> decltype(std::declval< Q >().end()) |
| | Accessor for end() method of an underling collection. Only compiles if SmartPtr_ is specialization type with end() method. More...
|
| |
| template<typename Q = T> |
| auto | begin () const -> decltype(std::declval< const Q >().begin()) |
| | Accessor for begin() method of an underling collection. Only compiles if SmartPtr_ is specialization type with begin() method. More...
|
| |
| template<typename Q = T> |
| auto | end () const -> decltype(std::declval< const Q >().end()) |
| | Accessor for end() method of an underling collection. Only compiles if SmartPtr_ is specialization type with end() method. More...
|
| |
| template<typename Q = T> |
| auto | cbegin () const -> decltype(std::declval< const Q >().cbegin()) |
| | Accessor for cbegin() method of an underling collection. Only compiles if SmartPtr_ is specialization type with cbegin() method. More...
|
| |
| template<typename Q = T> |
| auto | cend () const -> decltype(std::declval< const Q >().cend()) |
| | Accessor for cend() method of an underling collection. Only compiles if SmartPtr_ is specialization type with cend() method. More...
|
| |
| int | GetHashCode () const |
| | Calls GetHashCode() on pointed object. More...
|
| |
| T * | GetObjectNotNull () const |
| | Gets currently referenced object (if any) or throws. More...
|
| |
template<typename T,
SmartPtrMode trunkMode, unsigned int ... weakLeafs>
class System::DynamicWeakPtr< T, trunkMode, weakLeafs >
Smart pointer class which tracks pointer modes of template arguments of stored object and updates them after each assignment. This type is a pointer to manage other object's deletion. It should be allocated on stack and passed to functions either by value or by const reference.
- Template Parameters
-
| Pointee | type. |
| trunkMode | Mode of smart pointer itself, shared or weak. |
| weakLeafs | Indexes of template arguments of stored type which should be set to weak pointer mode. |