ITK  5.2.0
Insight Toolkit
Public Types | Public Member Functions | List of all members
itk::SmartPointer< TObjectType > Class Template Reference

#include <itkSmartPointer.h>

+ Inheritance diagram for itk::SmartPointer< TObjectType >:

Public Types

template<typename T >
using EnableIfConvertible = typename std::enable_if< std::is_convertible< T *, TObjectType * >::value >
 
using ObjectType = TObjectType
 

Public Member Functions

constexpr SmartPointer () noexcept
 
 SmartPointer (const SmartPointer &p) noexcept
 
template<typename T , typename = typename EnableIfConvertible<T>::type>
 SmartPointer (const SmartPointer< T > &p) noexcept
 
 SmartPointer (ObjectType *p) noexcept
 
 SmartPointer (SmartPointer< ObjectType > &&p) noexcept
 
template<typename T , typename = typename EnableIfConvertible<T>::type>
 SmartPointer (SmartPointer< T > &&p) noexcept
 
constexpr SmartPointer (std::nullptr_t p) noexcept
 
ObjectTypem_Pointer
 
template<typename T >
class SmartPointer
 
 ~SmartPointer ()
 
ObjectTypeoperator-> () const noexcept
 
ObjectTypeoperator* () const noexcept
 
 operator bool () const noexcept
 
 operator ObjectType * () const noexcept
 
bool IsNotNull () const noexcept
 
bool IsNull () const noexcept
 
ObjectTypeGetPointer () const noexcept
 
SmartPointeroperator= (SmartPointer r) noexcept
 
SmartPointeroperator= (std::nullptr_t) noexcept
 
ObjectTypePrint (std::ostream &os) const
 
void Swap (SmartPointer &other) noexcept
 
void Register () noexcept
 
void UnRegister () noexcept
 

Detailed Description

template<typename TObjectType>
class itk::SmartPointer< TObjectType >

Implements transparent reference counting.

SmartPointer implements reference counting by overloading operator -> (and *) among others. This allows natural interface to the class referred to by the pointer without having to invoke special Register()/UnRegister() methods directly.

To compile / test this class Windows: cl SmartPointerTest.cxx; .\SmartPointerTest.exe linux: c++ SmartPointerTest.cxx ./a.out other: CCcompiler SmartPointerTest.cxx ./a.out

The state of the SmartPointer after a move is with a value of nullptr.

Examples
Examples/RegistrationITKv4/DeformableRegistration10.cxx, Examples/RegistrationITKv4/DeformableRegistration2.cxx, Examples/RegistrationITKv4/DeformableRegistration3.cxx, Examples/RegistrationITKv4/DeformableRegistration5.cxx, and Examples/RegistrationITKv4/DeformableRegistration9.cxx.

Definition at line 51 of file itkSmartPointer.h.

Member Typedef Documentation

◆ EnableIfConvertible

template<typename TObjectType>
template<typename T >
using itk::SmartPointer< TObjectType >::EnableIfConvertible = typename std::enable_if<std::is_convertible<T *, TObjectType *>::value>

Definition at line 57 of file itkSmartPointer.h.

◆ ObjectType

template<typename TObjectType>
using itk::SmartPointer< TObjectType >::ObjectType = TObjectType

Definition at line 54 of file itkSmartPointer.h.

Constructor & Destructor Documentation

◆ SmartPointer() [1/7]

template<typename TObjectType>
constexpr itk::SmartPointer< TObjectType >::SmartPointer ( )
inlineconstexprnoexcept

Constructor

Definition at line 60 of file itkSmartPointer.h.

◆ SmartPointer() [2/7]

template<typename TObjectType>
itk::SmartPointer< TObjectType >::SmartPointer ( const SmartPointer< TObjectType > &  p)
inlinenoexcept

Copy constructor

Definition at line 65 of file itkSmartPointer.h.

◆ SmartPointer() [3/7]

template<typename TObjectType>
constexpr itk::SmartPointer< TObjectType >::SmartPointer ( std::nullptr_t  p)
inlineconstexprnoexcept

Definition at line 71 of file itkSmartPointer.h.

◆ SmartPointer() [4/7]

template<typename TObjectType>
template<typename T , typename = typename EnableIfConvertible<T>::type>
itk::SmartPointer< TObjectType >::SmartPointer ( const SmartPointer< T > &  p)
inlinenoexcept

constructor with implicit conversion of pointer type

Definition at line 77 of file itkSmartPointer.h.

◆ SmartPointer() [5/7]

template<typename TObjectType>
itk::SmartPointer< TObjectType >::SmartPointer ( SmartPointer< ObjectType > &&  p)
inlinenoexcept

Move constructor

Definition at line 84 of file itkSmartPointer.h.

◆ SmartPointer() [6/7]

template<typename TObjectType>
template<typename T , typename = typename EnableIfConvertible<T>::type>
itk::SmartPointer< TObjectType >::SmartPointer ( SmartPointer< T > &&  p)
inlinenoexcept

move constructor with implicit conversion of pointer type

Definition at line 92 of file itkSmartPointer.h.

◆ SmartPointer() [7/7]

template<typename TObjectType>
itk::SmartPointer< TObjectType >::SmartPointer ( ObjectType p)
inlinenoexcept

Constructor to pointer p

Definition at line 99 of file itkSmartPointer.h.

◆ ~SmartPointer()

template<typename TObjectType>
itk::SmartPointer< TObjectType >::~SmartPointer ( )
inline

Destructor

Definition at line 106 of file itkSmartPointer.h.

Member Function Documentation

◆ GetPointer()

template<typename TObjectType>
ObjectType* itk::SmartPointer< TObjectType >::GetPointer ( ) const
inlinenoexcept

◆ IsNotNull()

template<typename TObjectType>
bool itk::SmartPointer< TObjectType >::IsNotNull ( ) const
inlinenoexcept

Test if the pointer is not NULL.

Definition at line 125 of file itkSmartPointer.h.

Referenced by itk::BSplineResampleImageFunction< TImageType, TCoordRep >::SetInputImage().

◆ IsNull()

template<typename TObjectType>
bool itk::SmartPointer< TObjectType >::IsNull ( ) const
inlinenoexcept

Test if the pointer is NULL.

Definition at line 132 of file itkSmartPointer.h.

Referenced by itk::SmartPointer< const Self >::Print().

◆ operator bool()

template<typename TObjectType>
itk::SmartPointer< TObjectType >::operator bool ( ) const
inlineexplicitnoexcept

The pointer to the object referred to by this smart pointer.

Definition at line 118 of file itkSmartPointer.h.

◆ operator ObjectType *()

template<typename TObjectType>
itk::SmartPointer< TObjectType >::operator ObjectType * ( ) const
inlinenoexcept

Return pointer to object.

Definition at line 121 of file itkSmartPointer.h.

◆ operator*()

template<typename TObjectType>
ObjectType& itk::SmartPointer< TObjectType >::operator* ( ) const
inlinenoexcept

The pointer to the object referred to by this smart pointer.

Definition at line 116 of file itkSmartPointer.h.

◆ operator->()

template<typename TObjectType>
ObjectType* itk::SmartPointer< TObjectType >::operator-> ( ) const
inlinenoexcept

Overload operator ->

Definition at line 114 of file itkSmartPointer.h.

◆ operator=() [1/2]

template<typename TObjectType>
SmartPointer& itk::SmartPointer< TObjectType >::operator= ( SmartPointer< TObjectType >  r)
inlinenoexcept

Overload operator assignment.

This method is also implicitly used for move semantics.
Additionally, it relies on constructors for additional conversion
for pointer types.

Definition at line 153 of file itkSmartPointer.h.

◆ operator=() [2/2]

template<typename TObjectType>
SmartPointer& itk::SmartPointer< TObjectType >::operator= ( std::nullptr_t  )
inlinenoexcept

The pointer to the object referred to by this smart pointer.

Definition at line 163 of file itkSmartPointer.h.

◆ Print()

template<typename TObjectType>
ObjectType* itk::SmartPointer< TObjectType >::Print ( std::ostream &  os) const
inline

Function to print object pointed to

Definition at line 172 of file itkSmartPointer.h.

Referenced by itk::operator<<().

◆ Register()

template<typename TObjectType>
void itk::SmartPointer< TObjectType >::Register ( )
inlineprivatenoexcept

The pointer to the object referred to by this smart pointer.

Definition at line 211 of file itkSmartPointer.h.

Referenced by itk::SmartPointer< const Self >::SmartPointer().

◆ Swap()

template<typename TObjectType>
void itk::SmartPointer< TObjectType >::Swap ( SmartPointer< TObjectType > &  other)
inlinenoexcept

The pointer to the object referred to by this smart pointer.

Definition at line 196 of file itkSmartPointer.h.

Referenced by itk::SmartPointer< const Self >::operator=().

◆ UnRegister()

template<typename TObjectType>
void itk::SmartPointer< TObjectType >::UnRegister ( )
inlineprivatenoexcept

Friends And Related Function Documentation

◆ SmartPointer

template<typename TObjectType>
template<typename T >
friend class SmartPointer
friend

The pointer to the object referred to by this smart pointer.

Definition at line 208 of file itkSmartPointer.h.

Member Data Documentation

◆ m_Pointer

template<typename TObjectType>
ObjectType* itk::SmartPointer< TObjectType >::m_Pointer
private

The documentation for this class was generated from the following file: