Common/vtkSmartPointerBase.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00039 #ifndef __vtkSmartPointerBase_h
00040 #define __vtkSmartPointerBase_h
00041
00042 #include "vtkObjectBase.h"
00043
00044 class VTK_COMMON_EXPORT vtkSmartPointerBase
00045 {
00046 public:
00048 vtkSmartPointerBase();
00049
00051 vtkSmartPointerBase(vtkObjectBase* r);
00052
00055 vtkSmartPointerBase(const vtkSmartPointerBase& r);
00056
00058 ~vtkSmartPointerBase();
00059
00061
00063 vtkSmartPointerBase& operator=(vtkObjectBase* r);
00064 vtkSmartPointerBase& operator=(const vtkSmartPointerBase& r);
00066
00068
00069 vtkObjectBase* GetPointer() const
00070 {
00071
00072
00073 return this->Object;
00074 }
00076 protected:
00077
00078
00079 void Swap(vtkSmartPointerBase& r);
00080 void Register();
00081 void UnRegister();
00082
00083
00084 vtkObjectBase* Object;
00085 };
00086
00087
00088
00089
00090
00091 #ifdef VTK_COMPILER_HAS_BOOL
00092 # define VTK_SMART_POINTER_BASE_BOOL bool
00093 #else
00094 # define VTK_SMART_POINTER_BASE_BOOL int
00095 #endif
00096
00097 #define VTK_SMART_POINTER_BASE_DEFINE_OPERATOR(op) \
00098 inline VTK_SMART_POINTER_BASE_BOOL \
00099 operator op (const vtkSmartPointerBase& l, const vtkSmartPointerBase& r) \
00100 { \
00101 return (static_cast<void*>(l.GetPointer()) op \
00102 static_cast<void*>(r.GetPointer())); \
00103 } \
00104 inline VTK_SMART_POINTER_BASE_BOOL \
00105 operator op (vtkObjectBase* l, const vtkSmartPointerBase& r) \
00106 { \
00107 return (static_cast<void*>(l) op static_cast<void*>(r.GetPointer())); \
00108 } \
00109 inline VTK_SMART_POINTER_BASE_BOOL \
00110 operator op (const vtkSmartPointerBase& l, vtkObjectBase* r) \
00111 { \
00112 return (static_cast<void*>(l.GetPointer()) op static_cast<void*>(r)); \
00113 }
00114
00115 VTK_SMART_POINTER_BASE_DEFINE_OPERATOR(==)
00116 VTK_SMART_POINTER_BASE_DEFINE_OPERATOR(!=)
00117 VTK_SMART_POINTER_BASE_DEFINE_OPERATOR(<)
00118 VTK_SMART_POINTER_BASE_DEFINE_OPERATOR(<=)
00119 VTK_SMART_POINTER_BASE_DEFINE_OPERATOR(>)
00120 VTK_SMART_POINTER_BASE_DEFINE_OPERATOR(>=)
00121
00122 #undef VTK_SMART_POINTER_BASE_DEFINE_OPERATOR
00123 #undef VTK_SMART_POINTER_BASE_BOOL
00124
00126
00127 VTK_COMMON_EXPORT ostream& operator << (ostream& os,
00128 const vtkSmartPointerBase& p);
00130
00131 #endif