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