00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00053 #include "vtkObjectBase.h"
00054
00055 #include "vtkSetGet.h"
00056
00057 #ifndef __vtkContainer_h
00058 #define __vtkContainer_h
00059
00060 class VTK_EXPORT vtkContainer : public vtkObjectBase
00061 {
00062 public:
00063 vtkTypeMacro(vtkContainer, vtkObjectBase);
00064 protected:
00065
00066 vtkContainer();
00067 virtual ~vtkContainer();
00068
00069 private:
00070 vtkContainer(const vtkContainer&);
00071 void operator=(const vtkContainer&);
00072 };
00073
00074
00076
00086 template<class DType>
00087 int vtkContainerDefaultCompare(DType& k1, DType& k2)
00089 {
00090 return ( k1 < k2 ) ? ( -1 ) : ( ( k1 == k2 ) ? ( 0 ) : ( 1 ) );
00091 }
00092
00093 static inline int vtkContainerCompareMethod(vtkObjectBase* d1, vtkObjectBase* d2)
00094 { return vtkContainerDefaultCompare(d1,d2); }
00095 static inline int vtkContainerCompareMethod(char d1, char d2)
00096 { return vtkContainerDefaultCompare(d1,d2); }
00097 static inline int vtkContainerCompareMethod(short d1, short d2)
00098 { return vtkContainerDefaultCompare(d1,d2); }
00099 static inline int vtkContainerCompareMethod(int d1, int d2)
00100 { return vtkContainerDefaultCompare(d1,d2); }
00101 static inline int vtkContainerCompareMethod(long d1, long d2)
00102 { return vtkContainerDefaultCompare(d1,d2); }
00103 static inline int vtkContainerCompareMethod(unsigned char d1, unsigned char d2)
00104 { return vtkContainerDefaultCompare(d1,d2); }
00105 static inline int vtkContainerCompareMethod(unsigned short d1, unsigned short d2)
00106 { return vtkContainerDefaultCompare(d1,d2); }
00107 static inline int vtkContainerCompareMethod(unsigned int d1, unsigned int d2)
00108 { return vtkContainerDefaultCompare(d1,d2); }
00109 static inline int vtkContainerCompareMethod(unsigned long d1, unsigned long d2)
00110 { return vtkContainerDefaultCompare(d1,d2); }
00111 #if defined(VTK_TYPE_USE_LONG_LONG)
00112 static inline int vtkContainerCompareMethod(long long d1, long long d2)
00113 { return vtkContainerDefaultCompare(d1,d2); }
00114 static inline int vtkContainerCompareMethod(unsigned long long d1,
00115 unsigned long long d2)
00116 { return vtkContainerDefaultCompare(d1,d2); }
00117 #endif
00118 #if defined(VTK_TYPE_USE___INT64)
00119 static inline int vtkContainerCompareMethod(__int64 d1, __int64 d2)
00120 { return vtkContainerDefaultCompare(d1,d2); }
00121 static inline int vtkContainerCompareMethod(unsigned __int64 d1,
00122 unsigned __int64 d2)
00123 { return vtkContainerDefaultCompare(d1,d2); }
00124 #endif
00125 static inline int vtkContainerCompareMethod(float d1, float d2)
00126 { return vtkContainerDefaultCompare(d1,d2); }
00127 static inline int vtkContainerCompareMethod(double d1, double d2)
00128 { return vtkContainerDefaultCompare(d1,d2); }
00129 VTK_EXPORT int vtkContainerCompareMethod(const char* d1, const char* d2);
00130 VTK_EXPORT int vtkContainerCompareMethod(char* d1, char* d2);
00131 static inline int vtkContainerCompareMethod(void* d1, void* d2)
00132 { return vtkContainerDefaultCompare(d1,d2); }
00133
00134 template<class DType>
00135 DType vtkContainerDefaultCreate(DType k2) { return k2; }
00136
00137 static inline vtkObjectBase* vtkContainerCreateMethod(vtkObjectBase* d1)
00138 { if ( d1) { d1->Register(0); } return d1; }
00139 static inline char vtkContainerCreateMethod(char d1)
00140 { return vtkContainerDefaultCreate(d1); }
00141 static inline short vtkContainerCreateMethod(short d1)
00142 { return vtkContainerDefaultCreate(d1); }
00143 static inline int vtkContainerCreateMethod(int d1)
00144 { return vtkContainerDefaultCreate(d1); }
00145 static inline long vtkContainerCreateMethod(long d1)
00146 { return vtkContainerDefaultCreate(d1); }
00147 static inline unsigned char vtkContainerCreateMethod(unsigned char d1)
00148 { return vtkContainerDefaultCreate(d1); }
00149 static inline unsigned short vtkContainerCreateMethod(unsigned short d1)
00150 { return vtkContainerDefaultCreate(d1); }
00151 static inline unsigned int vtkContainerCreateMethod(unsigned int d1)
00152 { return vtkContainerDefaultCreate(d1); }
00153 static inline unsigned long vtkContainerCreateMethod(unsigned long d1)
00154 { return vtkContainerDefaultCreate(d1); }
00155 #if defined(VTK_TYPE_USE_LONG_LONG)
00156 static inline long long vtkContainerCreateMethod(long long d1)
00157 { return vtkContainerDefaultCreate(d1); }
00158 static inline unsigned long long vtkContainerCreateMethod(unsigned long long d1)
00159 { return vtkContainerDefaultCreate(d1); }
00160 #endif
00161 #if defined(VTK_TYPE_USE___INT64)
00162 static inline __int64 vtkContainerCreateMethod(__int64 d1)
00163 { return vtkContainerDefaultCreate(d1); }
00164 static inline unsigned __int64 vtkContainerCreateMethod(unsigned __int64 d1)
00165 { return vtkContainerDefaultCreate(d1); }
00166 #endif
00167 static inline float vtkContainerCreateMethod(float d1)
00168 { return vtkContainerDefaultCreate(d1); }
00169 static inline double vtkContainerCreateMethod(double d1)
00170 { return vtkContainerDefaultCreate(d1); }
00171 VTK_EXPORT const char * vtkContainerCreateMethod(const char* d1);
00172 VTK_EXPORT char* vtkContainerCreateMethod(char* d1);
00173 static inline void* vtkContainerCreateMethod(void* d1)
00174 { return vtkContainerDefaultCreate(d1); }
00175
00176 static inline void vtkContainerDeleteMethod(vtkObjectBase* d1)
00177 { if ( d1 ) { d1->UnRegister(0); } }
00178 static inline void vtkContainerDeleteMethod(char) {}
00179 static inline void vtkContainerDeleteMethod(short) {}
00180 static inline void vtkContainerDeleteMethod(int) {}
00181 static inline void vtkContainerDeleteMethod(long) {}
00182 static inline void vtkContainerDeleteMethod(unsigned char) {}
00183 static inline void vtkContainerDeleteMethod(unsigned short) {}
00184 static inline void vtkContainerDeleteMethod(unsigned int) {}
00185 static inline void vtkContainerDeleteMethod(unsigned long) {}
00186 #if defined(VTK_TYPE_USE_LONG_LONG)
00187 static inline void vtkContainerDeleteMethod(long long) {}
00188 static inline void vtkContainerDeleteMethod(unsigned long long) {}
00189 #endif
00190 #if defined(VTK_TYPE_USE___INT64)
00191 static inline void vtkContainerDeleteMethod(__int64) {}
00192 static inline void vtkContainerDeleteMethod(unsigned __int64) {}
00193 #endif
00194 static inline void vtkContainerDeleteMethod(float) {}
00195 static inline void vtkContainerDeleteMethod(double) {}
00196 static inline void vtkContainerDeleteMethod(const char* d1)
00197 { char *ch = const_cast<char*>(d1); delete [] ch; }
00198 static inline void vtkContainerDeleteMethod(char* d1) { delete [] d1; }
00199 static inline void vtkContainerDeleteMethod(void*) {}
00200
00201
00202 #endif
00203
00204
00205