52 #ifndef __PCL_AutoPointer_h 53 #define __PCL_AutoPointer_h 58 #include <pcl/Diagnostics.h> 116 PCL_PRECONDITION( p !=
nullptr )
240 template <
class T,
class D = StandardDeleter<T> >
283 AutoPointer(
bool autoDelete =
true,
const deleter& d = deleter() )
285 , m_autoDelete( autoDelete )
306 AutoPointer( pointer p,
bool autoDelete =
true,
const deleter& d = deleter() )
308 , m_autoDelete( autoDelete )
328 : m_deleter( x.m_deleter )
329 , m_autoDelete( x.m_autoDelete )
338 : m_deleter( std::move( x.m_deleter ) )
339 , m_autoDelete( x.m_autoDelete )
341 m_pointer = x.Release();
365 if ( m_pointer != p )
368 if ( m_pointer !=
nullptr )
369 m_deleter( Release() );
385 if ( m_pointer !=
nullptr )
387 pointer p = Release();
413 pointer p = m_pointer;
456 return m_pointer ==
nullptr;
497 m_autoDelete = enable;
508 EnableAutoDelete( !disable );
550 m_deleter = x.m_deleter;
551 m_autoDelete = x.m_autoDelete;
561 SetPointer( x.Release() );
562 m_deleter = std::move( x.m_deleter );
563 m_autoDelete = x.m_autoDelete;
595 operator const_pointer()
const 614 const_pointer operator ->()
const 616 PCL_PRECONDITION( m_pointer !=
nullptr )
624 pointer operator ->()
626 PCL_PRECONDITION( m_pointer !=
nullptr )
636 PCL_PRECONDITION( m_pointer !=
nullptr )
646 PCL_PRECONDITION( m_pointer !=
nullptr )
654 operator bool()
const 666 bool b = x1.m_autoDelete; x1.m_autoDelete = x2.m_autoDelete; x2.m_autoDelete = b;
671 pointer m_pointer =
nullptr;
673 bool m_autoDelete =
true;
678 #define ASSERT_COPIABLE_T() \ 679 static_assert( std::is_copy_constructible<T>::value, "AutoPointerCloner<> requires a copy-constructible type." ) 695 template <
class T,
class D = StandardDeleter<T> >
741 : base_type( autoDelete, d )
764 : base_type( p, autoDelete, d )
782 : base_type( nullptr )
785 this->m_pointer = x ?
new value_type( *x ) :
nullptr;
786 this->m_deleter = x.m_deleter;
787 this->m_autoDelete = x || x.m_autoDelete;
803 : base_type( nullptr )
806 this->m_pointer = x ?
new value_type( *x ) :
nullptr;
807 this->m_deleter = x.m_deleter;
808 this->m_autoDelete = x || x.m_autoDelete;
815 : base_type( std::move( x ) )
842 this->SetPointer( x ?
new value_type( *x ) :
nullptr );
843 this->m_deleter = x.m_deleter;
844 this->m_autoDelete = x || x.m_autoDelete;
871 this->SetPointer( x ?
new value_type( *x ) :
nullptr );
872 this->m_deleter = x.m_deleter;
873 this->m_autoDelete = x || x.m_autoDelete;
883 (void)base_type::operator =( std::move( x ) );
898 this->SetPointer( p );
903 #undef ASSERT_COPIABLE_T 909 #endif // __PCL_AutoPointer_h
base_type::pointer pointer
AutoPointer(pointer p, bool autoDelete=true, const deleter &d=deleter())
OpenFileDialogPrivate * pointer
AutoPointerCloner(const base_type &x)
OpenFileDialogPrivate * pointer
AutoPointerCloner(pointer p, bool autoDelete=true, const deleter &d=deleter())
AutoPointer(AutoPointer &x)
AutoPointerCloner(bool autoDelete=true, const deleter &d=deleter())
void Swap(GenericPoint< T > &p1, GenericPoint< T > &p2) noexcept
A smart pointer with exclusive object ownership and optional automatic object destruction.
const deleter & Deleter() const
Calculation of ephemerides from data stored in XEPH files.
An object deleter that uses the standard delete operator.
AutoPointerCloner(base_type &&x)
A smart pointer able to generate dynamically allocated copies of the objects pointed to by other smar...
base_type::value_type value_type
OpenFileDialogPrivate value_type
AutoPointer(AutoPointer &&x)
AutoPointer(bool autoDelete=true, const deleter &d=deleter())
base_type::const_pointer const_pointer
OpenFileDialogPrivate value_type
void EnableAutoDelete(bool enable=true)
const_pointer Ptr() const
const_pointer Pointer() const
void DisableAutoDelete(bool disable=true)
const OpenFileDialogPrivate * const_pointer
void operator()(pointer p) const
void SetPointer(pointer p)
Complex< T1 > operator*(const Complex< T1 > &c1, const Complex< T2 > &c2) noexcept
AutoPointerCloner(const AutoPointerCloner &x)
base_type::deleter deleter
bool IsAutoDelete() const
friend void Swap(AutoPointer &x1, AutoPointer &x2)