Common/vtkSmartPointerBase.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00025 #ifndef __vtkSmartPointerBase_h
00026 #define __vtkSmartPointerBase_h
00027
00028 #include "vtkObjectBase.h"
00029
00030 class VTK_COMMON_EXPORT vtkSmartPointerBase
00031 {
00032 public:
00034 vtkSmartPointerBase();
00035
00037 vtkSmartPointerBase(vtkObjectBase* r);
00038
00041 vtkSmartPointerBase(const vtkSmartPointerBase& r);
00042
00044 ~vtkSmartPointerBase();
00045
00047
00049 vtkSmartPointerBase& operator=(vtkObjectBase* r);
00050 vtkSmartPointerBase& operator=(const vtkSmartPointerBase& r);
00052
00054
00055 vtkObjectBase* GetPointer() const
00056 {
00057
00058
00059 return this->Object;
00060 }
00062 protected:
00063
00064
00065 void Swap(vtkSmartPointerBase& r);
00066 void Register();
00067 void UnRegister();
00068
00069
00070 vtkObjectBase* Object;
00071 };
00072
00073
00074
00075
00076
00077
00078 #define VTK_SMART_POINTER_BASE_DEFINE_OPERATOR(op) \
00079 inline vtkstd_bool \
00080 operator op (const vtkSmartPointerBase& l, const vtkSmartPointerBase& r) \
00081 { \
00082 return (static_cast<void*>(l.GetPointer()) op \
00083 static_cast<void*>(r.GetPointer())); \
00084 } \
00085 inline vtkstd_bool \
00086 operator op (vtkObjectBase* l, const vtkSmartPointerBase& r) \
00087 { \
00088 return (static_cast<void*>(l) op static_cast<void*>(r.GetPointer())); \
00089 } \
00090 inline vtkstd_bool \
00091 operator op (const vtkSmartPointerBase& l, vtkObjectBase* r) \
00092 { \
00093 return (static_cast<void*>(l.GetPointer()) op static_cast<void*>(r)); \
00094 }
00095
00096 VTK_SMART_POINTER_BASE_DEFINE_OPERATOR(==)
00097 VTK_SMART_POINTER_BASE_DEFINE_OPERATOR(!=)
00098 VTK_SMART_POINTER_BASE_DEFINE_OPERATOR(<)
00099 VTK_SMART_POINTER_BASE_DEFINE_OPERATOR(<=)
00100 VTK_SMART_POINTER_BASE_DEFINE_OPERATOR(>)
00101 VTK_SMART_POINTER_BASE_DEFINE_OPERATOR(>=)
00102
00103 #undef VTK_SMART_POINTER_BASE_DEFINE_OPERATOR
00104
00106
00107 VTK_COMMON_EXPORT ostream& operator << (ostream& os,
00108 const vtkSmartPointerBase& p);
00110
00111 #endif