28 #ifndef __vtkSmartPointer_h
29 #define __vtkSmartPointer_h
36 static T* CheckType(T* t) {
return t; }
77 return static_cast<T*
>(this->
Object);
85 return static_cast<T*
>(this->
Object);
94 return *
static_cast<T*
>(this->
Object);
102 return static_cast<T*
>(this->
Object);
156 #if defined(__HP_aCC) || defined(__IBMCPP__)
157 # define VTK_SMART_POINTER_DEFINE_OPERATOR_WORKAROUND(op) \
158 vtkstd_bool operator op (NullPointerOnly*) const \
160 return ::operator op (*this, 0); \
163 class NullPointerOnly {};
165 VTK_SMART_POINTER_DEFINE_OPERATOR_WORKAROUND(==)
166 VTK_SMART_POINTER_DEFINE_OPERATOR_WORKAROUND(!=)
167 VTK_SMART_POINTER_DEFINE_OPERATOR_WORKAROUND(<)
168 VTK_SMART_POINTER_DEFINE_OPERATOR_WORKAROUND(<=)
169 VTK_SMART_POINTER_DEFINE_OPERATOR_WORKAROUND(>)
170 VTK_SMART_POINTER_DEFINE_OPERATOR_WORKAROUND(>=)
171 # undef VTK_SMART_POINTER_DEFINE_OPERATOR_WORKAROUND
182 #define VTK_SMART_POINTER_DEFINE_OPERATOR(op) \
185 operator op (const vtkSmartPointer<T>& l, const vtkSmartPointer<T>& r) \
187 return (l.GetPointer() op r.GetPointer()); \
190 inline vtkstd_bool operator op (T* l, const vtkSmartPointer<T>& r) \
192 return (l op r.GetPointer()); \
195 inline vtkstd_bool operator op (const vtkSmartPointer<T>& l, T* r) \
197 return (l.GetPointer() op r); \
209 #undef VTK_SMART_POINTER_DEFINE_OPERATOR
214 inline ostream& operator << (ostream& os, const vtkSmartPointer<T>& p)
216 return os << static_cast<const vtkSmartPointerBase&>(p);
static vtkSmartPointer< T > Take(T *t)
static vtkSmartPointer< T > NewInstance(T *t)
vtkSmartPointerBase & operator=(vtkObjectBase *r)
vtkSmartPointer(T *r, const NoReference &n)
vtkSmartPointer & operator=(T *r)
Hold a reference to a vtkObjectBase instance.
static vtkSmartPointer< T > New()
vtkSmartPointer & operator=(const vtkSmartPointer< U > &r)
Non-templated superclass for vtkSmartPointer.
vtkSmartPointer(const vtkSmartPointer< U > &r)
#define VTK_SMART_POINTER_DEFINE_OPERATOR(op)