2#ifndef _aspose_system_dynamic_weak_ptr_h_
3#define _aspose_system_dynamic_weak_ptr_h_
5#include "system/smart_ptr.h"
15 template <
unsigned int ...leafs>
struct WeakLeafMaker;
20 template <
unsigned int leaf,
unsigned int ...leafs>
21 struct WeakLeafMaker<leaf, leafs...>
24 static constexpr bool HasLeafs =
true;
31 struct WeakLeafMaker<>
34 static constexpr bool HasLeafs =
false;
46template <
typename T,
SmartPtrMode trunkMode,
unsigned int ...weakLeafs>
125 template <
typename Q>
159 : m_ptr(reference.m_ptr)
161 reference.m_ptr =
nullptr;
185 if (!System::Details::WeakLeafMaker<weakLeafs...>::HasLeafs)
188 System::Details::WeakLeafMaker<weakLeafs...>::Apply(
object);
197template <
typename T,
SmartPtrMode trunkMode,
unsigned int ...weakLeafs>
207decltype(
Ref(std::declval<T&>()))
Ref(
const std::reference_wrapper<T> &wrapper)
209 return Ref(wrapper.get());
Reference class which ensures that DynamicWeakPtr::Apply is called. Used if DynamicWeakPtr is passed ...
Definition: dynamic_weak_ptr.h:149
Reference(DynamicWeakPtr_ &ptr)
Creates smart pointer reference.
Definition: dynamic_weak_ptr.h:153
~Reference()
Destroys reference. Ensures Apply() call on referenced smart pointer.
Definition: dynamic_weak_ptr.h:164
Reference(Reference &&reference) noexcept
Move-constructs smart pointer reference.
Definition: dynamic_weak_ptr.h:158
Smart pointer class which tracks pointer modes of template arguments of stored object and updates the...
Definition: dynamic_weak_ptr.h:48
DynamicWeakPtr(const DynamicWeakPtr_ &ptr)
Copy-constructs smart pointer.
Definition: dynamic_weak_ptr.h:85
DynamicWeakPtr(const SmartPtr_ &ptr)
Copy-constructs smart pointer.
Definition: dynamic_weak_ptr.h:69
DynamicWeakPtr_ & operator=(SmartPtr_ &&x)
Move-assigns smart pointer.
Definition: dynamic_weak_ptr.h:106
DynamicWeakPtr(Pointee_ *object)
Creates smart pointer pointing to given object.
Definition: dynamic_weak_ptr.h:62
SmartPtr< T > SmartPtr_
SmartPtr baseclass alias.
Definition: dynamic_weak_ptr.h:51
DynamicWeakPtr(std::nullptr_t=nullptr)
Creates null smart pointer.
Definition: dynamic_weak_ptr.h:57
bool operator==(std::nullptr_t) const
Checks if smart pointer is null.
Definition: dynamic_weak_ptr.h:99
DynamicWeakPtr(SmartPtr_ &&x)
Move-constructs smart pointer.
Definition: dynamic_weak_ptr.h:92
DynamicWeakPtr< T, trunkMode, weakLeafs... > DynamicWeakPtr_
Self type alias.
Definition: dynamic_weak_ptr.h:53
DynamicWeakPtr(const SmartPtr< Q > &x)
Copy-constructs smart pointer.
Definition: dynamic_weak_ptr.h:78
Base class that enables using methods available for System.Object class in C#. All non-trivial classe...
Definition: object.h:62
Pointer class to wrap types being allocated on heap. Use it to manage memory for classes inheriting O...
Definition: smart_ptr.h:180
bool operator==(std::nullptr_t) const
Checks if pointer points to nullptr.
Definition: smart_ptr.h:512
Object * GetObjectOrNull() const
Gets pointed object (if any) or nullptr. Same as get().
Definition: smart_ptr.h:783
SmartPtr_ & operator=(SmartPtr_ &&x) noexcept
Move-assigns SmartPtr object. x becomes unusable.
Definition: smart_ptr.h:381
T Pointee_
Pointed type.
Definition: smart_ptr.h:183
Definition: db_command.h:9
SmartPtrMode
SmartPtr pointer type: weak or shared. Defines whether pointer is being counted when it is being deci...
Definition: smart_ptr.h:68
decltype(Ref(std::declval< T & >())) Ref(const std::reference_wrapper< T > &wrapper)
Wrapper to make sure Ref(std::ref(DynamicWeakPtr)) works.
Definition: dynamic_weak_ptr.h:207