00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00054 #ifndef __vtkSetGet_h
00055 #define __vtkSetGet_h
00056 
00057 #include "vtkSystemIncludes.h"
00058 #include <math.h>
00059 
00060 
00061 #define VTK_LARGE_FLOAT 1.0e+38F
00062 #define VTK_LARGE_INTEGER 2147483647 // 2^31 - 1
00063 
00064 
00065 #define VTK_VOID            0
00066 #define VTK_BIT             1 
00067 #define VTK_CHAR            2
00068 #define VTK_UNSIGNED_CHAR   3
00069 #define VTK_SHORT           4
00070 #define VTK_UNSIGNED_SHORT  5
00071 #define VTK_INT             6
00072 #define VTK_UNSIGNED_INT    7
00073 #define VTK_LONG            8
00074 #define VTK_UNSIGNED_LONG   9
00075 #define VTK_FLOAT          10
00076 #define VTK_DOUBLE         11 
00077 
00078 
00079 #define VTK_BIT_MIN 0
00080 #define VTK_BIT_MAX 1
00081 #define VTK_CHAR_MIN -128
00082 #define VTK_CHAR_MAX 127
00083 #define VTK_UNSIGNED_CHAR_MIN 0
00084 #define VTK_UNSIGNED_CHAR_MAX 255
00085 #define VTK_SHORT_MIN -32768
00086 #define VTK_SHORT_MAX 32767
00087 #define VTK_UNSIGNED_SHORT_MIN 0
00088 #define VTK_UNSIGNED_SHORT_MAX 65535
00089 #define VTK_INT_MIN (-VTK_LARGE_INTEGER-1)
00090 #define VTK_INT_MAX VTK_LARGE_INTEGER
00091 #define VTK_UNSIGNED_INT_MIN 0
00092 #define VTK_UNSIGNED_INT_MAX 4294967295UL
00093 #define VTK_LONG_MIN (-VTK_LARGE_INTEGER-1)
00094 #define VTK_LONG_MAX VTK_LARGE_INTEGER
00095 #define VTK_UNSIGNED_LONG_MIN 0
00096 #define VTK_UNSIGNED_LONG_MAX 4294967295UL
00097 #define VTK_FLOAT_MIN -VTK_LARGE_FLOAT
00098 #define VTK_FLOAT_MAX VTK_LARGE_FLOAT
00099 #define VTK_DOUBLE_MIN -1.0e+99L
00100 #define VTK_DOUBLE_MAX  1.0e+99L
00101 
00102 
00103 #define VTK_POLY_DATA          0
00104 #define VTK_STRUCTURED_POINTS  1
00105 #define VTK_STRUCTURED_GRID    2
00106 #define VTK_RECTILINEAR_GRID   3
00107 #define VTK_UNSTRUCTURED_GRID  4
00108 #define VTK_PIECEWISE_FUNCTION  5
00109 #define VTK_IMAGE_DATA 6
00110 #define VTK_DATA_OBJECT 7
00111 #define VTK_DATA_SET 8
00112 
00113 
00114 #define vtkImageScalarTypeNameMacro(type) \
00115 (((type) == VTK_VOID) ? "void" : \
00116 (((type) == VTK_FLOAT) ? "float" : \
00117 (((type) == VTK_INT) ? "int" : \
00118 (((type) == VTK_SHORT) ? "short" : \
00119 (((type) == VTK_UNSIGNED_SHORT) ? "unsigned short" : \
00120 (((type) == VTK_UNSIGNED_CHAR) ? "unsigned char" : \
00121 "Undefined"))))))
00122   
00123   
00124 
00125 
00126 
00127 #define vtkSetMacro(name,type) \
00128 virtual void Set##name (type _arg) \
00129   { \
00130   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting " #name " to " << _arg); \
00131   if (this->name != _arg) \
00132     { \
00133     this->name = _arg; \
00134     this->Modified(); \
00135     } \
00136   } 
00137 
00138 
00139 
00140 
00141 #define vtkGetMacro(name,type) \
00142 virtual type Get##name () { \
00143   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): returning " << #name " of " << this->name ); \
00144   return this->name; \
00145   } 
00146 
00147 
00148 
00149 
00150 
00151 
00152 #define vtkSetStringMacro(name) \
00153 virtual void Set##name (const char* _arg) \
00154   { \
00155   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting " << #name " to " << _arg ); \
00156   if ( this->name && _arg && (!strcmp(this->name,_arg))) { return;} \
00157   if (this->name) { delete [] this->name; } \
00158   if (_arg) \
00159     { \
00160     this->name = new char[strlen(_arg)+1]; \
00161     strcpy(this->name,_arg); \
00162     } \
00163    else \
00164     { \
00165     this->name = NULL; \
00166     } \
00167   this->Modified(); \
00168   } 
00169 
00170 
00171 
00172 
00173 
00174 #define vtkGetStringMacro(name) \
00175 virtual char* Get##name () { \
00176   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): returning " << #name " of " << this->name); \
00177   return this->name; \
00178   } 
00179 
00180 
00181 
00182 
00183 
00184 
00185 #define vtkSetClampMacro(name,type,min,max) \
00186 virtual void Set##name (type _arg) \
00187   { \
00188   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting " << #name " to " << _arg ); \
00189   if (this->name != (_arg<min?min:(_arg>max?max:_arg))) \
00190     { \
00191     this->name = (_arg<min?min:(_arg>max?max:_arg)); \
00192     this->Modified(); \
00193     } \
00194   } 
00195 
00196 
00197 
00198 
00199 
00200 #define vtkSetObjectMacro(name,type) \
00201 virtual void Set##name (type* _arg) \
00202   { \
00203   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting " << #name " to " << _arg ); \
00204   if (this->name != _arg) \
00205     { \
00206     if (this->name != NULL) { this->name->UnRegister(this); }\
00207     this->name = _arg; \
00208     if (this->name != NULL) { this->name->Register(this); } \
00209     this->Modified(); \
00210     } \
00211   } 
00212 
00213 
00214 
00215 
00216 #define vtkSetReferenceCountedObjectMacro(name,type) \
00217 virtual void Set##name (type* _arg) \
00218   { \
00219   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting " << #name " to " << _arg ); \
00220   if (this->name != _arg) \
00221     { \
00222     if (this->name != NULL) { this->name->UnRegister(this); }\
00223     this->name = _arg; \
00224     if (this->name != NULL) { this->name->Register(this); } \
00225     this->Modified(); \
00226     } \
00227   } 
00228 
00229 
00230 
00231 
00232 #define vtkGetObjectMacro(name,type) \
00233 virtual type *Get##name () \
00234   { \
00235       vtkDebugMacro(<< this->GetClassName() << " (" << this << "): returning " #name " address " << this->name ); \
00236   return this->name; \
00237   } 
00238 
00239 
00240 
00241 
00242 
00243 #define vtkBooleanMacro(name,type) \
00244 virtual void name##On () { this->Set##name((type)1);}; \
00245 virtual void name##Off () { this->Set##name((type)0);}
00246 
00247 
00248 
00249 
00250 
00251 
00252 
00253 #define vtkSetVector2Macro(name,type) \
00254 virtual void Set##name (type _arg1, type _arg2) \
00255   { \
00256   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting " << #name " to (" << _arg1 << "," << _arg2 << ")"); \
00257   if ((this->name[0] != _arg1)||(this->name[1] != _arg2)) \
00258     { \
00259     this->Modified(); \
00260     this->name[0] = _arg1; \
00261     this->name[1] = _arg2; \
00262     } \
00263   }; \
00264 void Set##name (type _arg[2]) \
00265   { \
00266   this->Set##name (_arg[0], _arg[1]); \
00267   } 
00268 
00269 #define vtkGetVector2Macro(name,type) \
00270 virtual type *Get##name () \
00271 { \
00272   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): returning " << #name " pointer " << this->name); \
00273   return this->name; \
00274 } \
00275 virtual void Get##name (type &_arg1, type &_arg2) \
00276   { \
00277     _arg1 = this->name[0]; \
00278     _arg2 = this->name[1]; \
00279   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): returning " << #name " = (" << _arg1 << "," << _arg2 << ")"); \
00280   }; \
00281 virtual void Get##name (type _arg[2]) \
00282   { \
00283   this->Get##name (_arg[0], _arg[1]);\
00284   } 
00285 
00286 #define vtkSetVector3Macro(name,type) \
00287 virtual void Set##name (type _arg1, type _arg2, type _arg3) \
00288   { \
00289   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting " << #name " to (" << _arg1 << "," << _arg2 << "," << _arg3 << ")"); \
00290   if ((this->name[0] != _arg1)||(this->name[1] != _arg2)||(this->name[2] != _arg3)) \
00291     { \
00292     this->Modified(); \
00293     this->name[0] = _arg1; \
00294     this->name[1] = _arg2; \
00295     this->name[2] = _arg3; \
00296     } \
00297   }; \
00298 virtual void Set##name (type _arg[3]) \
00299   { \
00300   this->Set##name (_arg[0], _arg[1], _arg[2]);\
00301   } 
00302 
00303 #define vtkGetVector3Macro(name,type) \
00304 virtual type *Get##name () \
00305 { \
00306   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): returning " << #name " pointer " << this->name); \
00307   return this->name; \
00308 } \
00309 virtual void Get##name (type &_arg1, type &_arg2, type &_arg3) \
00310   { \
00311     _arg1 = this->name[0]; \
00312     _arg2 = this->name[1]; \
00313     _arg3 = this->name[2]; \
00314   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): returning " << #name " = (" << _arg1 << "," << _arg2 << "," << _arg3 << ")"); \
00315   }; \
00316 virtual void Get##name (type _arg[3]) \
00317   { \
00318   this->Get##name (_arg[0], _arg[1], _arg[2]);\
00319   } 
00320 
00321 #define vtkSetVector4Macro(name,type) \
00322 virtual void Set##name (type _arg1, type _arg2, type _arg3, type _arg4) \
00323   { \
00324   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting " << #name " to (" << _arg1 << "," << _arg2 << "," << _arg3 << "," << _arg4 << ")"); \
00325   if ((this->name[0] != _arg1)||(this->name[1] != _arg2)||(this->name[2] != _arg3)||(this->name[3] != _arg4)) \
00326     { \
00327     this->Modified(); \
00328     this->name[0] = _arg1; \
00329     this->name[1] = _arg2; \
00330     this->name[2] = _arg3; \
00331     this->name[3] = _arg4; \
00332     } \
00333   }; \
00334 virtual void Set##name (type _arg[4]) \
00335   { \
00336   this->Set##name (_arg[0], _arg[1], _arg[2], _arg[3]);\
00337   } 
00338 
00339 
00340 #define vtkGetVector4Macro(name,type) \
00341 virtual type *Get##name () \
00342 { \
00343   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): returning " << #name " pointer " << this->name); \
00344   return this->name; \
00345 } \
00346 virtual void Get##name (type &_arg1, type &_arg2, type &_arg3, type &_arg4) \
00347   { \
00348     _arg1 = this->name[0]; \
00349     _arg2 = this->name[1]; \
00350     _arg3 = this->name[2]; \
00351     _arg4 = this->name[3]; \
00352   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): returning " << #name " = (" << _arg1 << "," << _arg2 << "," << _arg3 << "," << _arg4 << ")"); \
00353   }; \
00354 virtual void Get##name (type _arg[4]) \
00355   { \
00356   this->Get##name (_arg[0], _arg[1], _arg[2], _arg[3]);\
00357   } 
00358 
00359 #define vtkSetVector6Macro(name,type) \
00360 virtual void Set##name (type _arg1, type _arg2, type _arg3, type _arg4, type _arg5, type _arg6) \
00361   { \
00362   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): setting " << #name " to (" << _arg1 << "," << _arg2 << "," << _arg3 << "," << _arg4 << "," << _arg5 << "," << _arg6 << ")"); \
00363   if ((this->name[0] != _arg1)||(this->name[1] != _arg2)||(this->name[2] != _arg3)||(this->name[3] != _arg4)||(this->name[4] != _arg5)||(this->name[5] != _arg6)) \
00364     { \
00365     this->Modified(); \
00366     this->name[0] = _arg1; \
00367     this->name[1] = _arg2; \
00368     this->name[2] = _arg3; \
00369     this->name[3] = _arg4; \
00370     this->name[4] = _arg5; \
00371     this->name[5] = _arg6; \
00372     } \
00373   }; \
00374 virtual void Set##name (type _arg[6]) \
00375   { \
00376   this->Set##name (_arg[0], _arg[1], _arg[2], _arg[3], _arg[4], _arg[5]);\
00377   } 
00378 
00379 #define vtkGetVector6Macro(name,type) \
00380 virtual type *Get##name () \
00381 { \
00382   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): returning " << #name " pointer " << this->name); \
00383   return this->name; \
00384 } \
00385 virtual void Get##name (type &_arg1, type &_arg2, type &_arg3, type &_arg4, type &_arg5, type &_arg6) \
00386   { \
00387     _arg1 = this->name[0]; \
00388     _arg2 = this->name[1]; \
00389     _arg3 = this->name[2]; \
00390     _arg4 = this->name[3]; \
00391     _arg5 = this->name[4]; \
00392     _arg6 = this->name[5]; \
00393   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): returning " << #name " = (" << _arg1 << "," << _arg2 << "," << _arg3 << "," << _arg4 << "," << _arg5 <<"," << _arg6 << ")"); \
00394   }; \
00395 virtual void Get##name (type _arg[6]) \
00396   { \
00397   this->Get##name (_arg[0], _arg[1], _arg[2], _arg[3], _arg[4], _arg[5]);\
00398   } 
00399 
00400 
00401 
00402 
00403 
00404 
00405 #define vtkSetVectorMacro(name,type,count) \
00406 virtual void Set##name(type data[]) \
00407 { \
00408   int i; \
00409   for (i=0; i<count; i++) { if ( data[i] != this->name[i] ) { break; }} \
00410   if ( i < count ) \
00411     { \
00412     this->Modified(); \
00413     for (i=0; i<count; i++) { this->name[i] = data[i]; }\
00414     } \
00415 }
00416 
00417 
00418 
00419 
00420 
00421 
00422 
00423 #define vtkGetVectorMacro(name,type,count) \
00424 virtual type *Get##name () \
00425 { \
00426   vtkDebugMacro(<< this->GetClassName() << " (" << this << "): returning " << #name " pointer " << this->name); \
00427   return this->name; \
00428 } \
00429 virtual void Get##name (type data[count]) \
00430 { \
00431   for (int i=0; i<count; i++) { data[i] = this->name[i]; }\
00432 }
00433 
00434 
00435 
00436 
00437 
00438 
00439 extern VTK_EXPORT void vtkOutputWindowDisplayText(const char*);
00440 
00441 
00442 
00443 
00444 
00445 
00446 #define vtkGenericWarningMacro(x) \
00447 { if (vtkObject::GetGlobalWarningDisplay()) { \
00448       char *vtkmsgbuff; ostrstream vtkmsg; \
00449       vtkmsg << "Generic Warning: In " __FILE__ ", line " << __LINE__ << "\n" x \
00450       << "\n\n" << ends; \
00451       vtkmsgbuff = vtkmsg.str(); \
00452       vtkOutputWindowDisplayText(vtkmsgbuff);\
00453       vtkmsg.rdbuf()->freeze(0);}}
00454 
00455 
00456 
00457 
00458 
00459 #ifdef VTK_LEAN_AND_MEAN
00460 #define vtkDebugMacro(x)
00461 #else
00462 #define vtkDebugMacro(x) \
00463 { if (this->Debug && vtkObject::GetGlobalWarningDisplay()) \
00464     { char *vtkmsgbuff; \
00465       ostrstream vtkmsg; \
00466       vtkmsg << "Debug: In " __FILE__ ", line " << __LINE__ << "\n" << this->GetClassName() << " (" << this << "): " x  << "\n\n" << ends; \
00467       vtkmsgbuff = vtkmsg.str(); \
00468       vtkOutputWindowDisplayText(vtkmsgbuff);\
00469       vtkmsg.rdbuf()->freeze(0);}}
00470 #endif
00471 
00472 
00473 
00474 
00475 #define vtkWarningMacro(x) \
00476 { if (vtkObject::GetGlobalWarningDisplay()) { \
00477       char *vtkmsgbuff; \
00478       ostrstream vtkmsg; \
00479       vtkmsg << "Warning: In " __FILE__ ", line " << __LINE__ << "\n" << this->GetClassName() << " (" << this << "): " x << "\n\n" << ends; \
00480       vtkmsgbuff = vtkmsg.str(); \
00481       vtkOutputWindowDisplayText(vtkmsgbuff);\
00482       vtkmsg.rdbuf()->freeze(0);}}
00483 
00484 
00485 
00486 
00487 
00488 #define vtkErrorMacro(x) \
00489 { if (vtkObject::GetGlobalWarningDisplay()) {char *vtkmsgbuff; \
00490       ostrstream vtkmsg; \
00491       vtkmsg << "ERROR: In " __FILE__ ", line " << __LINE__ << "\n" << this->GetClassName() << " (" << this << "): " x << "\n\n" << ends; \
00492       vtkmsgbuff = vtkmsg.str(); \
00493       vtkOutputWindowDisplayText(vtkmsgbuff);\
00494       vtkmsg.rdbuf()->freeze(0); vtkObject::BreakOnError();}}
00495 
00496 
00497 
00498 
00499 
00500 
00501 
00502 
00503 
00504 #define vtkNotUsed(x)
00505 
00506 #define vtkWorldCoordinateMacro(name) \
00507 virtual vtkCoordinate *Get##name##Coordinate () \
00508 { \
00509     vtkDebugMacro(<< this->GetClassName() << " (" << this << "): returning " #name "Coordinate address " << this->name##Coordinate ); \
00510     return this->name##Coordinate; \
00511 } \
00512 virtual void Set##name(float x[3]) {this->Set##name(x[0],x[1],x[2]);}; \
00513 virtual void Set##name(float x, float y, float z) \
00514 { \
00515     this->name##Coordinate->SetCoordinateSystem(VTK_WORLD); \
00516     this->name##Coordinate->SetValue(x,y,z); \
00517 } \
00518 virtual float *Get##name() \
00519 { \
00520     return this->name##Coordinate->GetValue(); \
00521 }
00522 
00523 #define vtkViewportCoordinateMacro(name) \
00524 virtual vtkCoordinate *Get##name##Coordinate () \
00525 { \
00526     vtkDebugMacro(<< this->GetClassName() << " (" << this << "): returning " #name "Coordinate address " << this->name##Coordinate ); \
00527     return this->name##Coordinate; \
00528 } \
00529 virtual void Set##name(float x[2]) {this->Set##name(x[0],x[1]);}; \
00530 virtual void Set##name(float x, float y) \
00531 { \
00532     this->name##Coordinate->SetCoordinateSystem(VTK_VIEWPORT); \
00533     this->name##Coordinate->SetValue(x,y); \
00534 } \
00535 virtual float *Get##name() \
00536 { \
00537     return this->name##Coordinate->GetValue(); \
00538 }
00539 
00540 
00541 
00542 
00543 #define vtkTypeMacro(thisClass,superclass) \
00544 virtual const char *GetClassName() {return #thisClass;};\
00545 static int IsTypeOf(const char *type) \
00546 { \
00547   if ( !strcmp(#thisClass,type) ) \
00548     { \
00549     return 1; \
00550     } \
00551   return superclass::IsTypeOf(type); \
00552 } \
00553 virtual int IsA(const char *type) \
00554 { \
00555   return this->thisClass::IsTypeOf(type); \
00556 } \
00557 static thisClass* SafeDownCast(vtkObject *o) \
00558 { \
00559   if ( o && o->IsA(#thisClass) ) \
00560     { \
00561     return (thisClass *)o; \
00562     } \
00563   return NULL;\
00564 }
00565 
00566 
00567 
00568 
00569 
00570 
00571 #define vtkTemplateMacro3(func, arg1, arg2, arg3) \
00572       case VTK_DOUBLE: \
00573         { typedef double VTK_TT; \
00574         func(arg1, arg2, arg3); } \
00575         break; \
00576       case VTK_FLOAT: \
00577         { typedef float VTK_TT; \
00578         func(arg1, arg2, arg3); } \
00579         break; \
00580       case VTK_LONG: \
00581         { typedef long VTK_TT; \
00582         func(arg1, arg2, arg3); } \
00583         break; \
00584       case VTK_UNSIGNED_LONG: \
00585         { typedef unsigned long VTK_TT; \
00586         func(arg1, arg2, arg3); } \
00587         break; \
00588       case VTK_INT: \
00589         { typedef int VTK_TT; \
00590         func(arg1, arg2, arg3); } \
00591         break; \
00592       case VTK_UNSIGNED_INT: \
00593         { typedef unsigned int VTK_TT; \
00594         func(arg1, arg2, arg3); } \
00595         break; \
00596       case VTK_SHORT: \
00597         { typedef short VTK_TT; \
00598         func(arg1, arg2, arg3); } \
00599         break; \
00600       case VTK_UNSIGNED_SHORT: \
00601         { typedef unsigned short VTK_TT; \
00602         func(arg1, arg2, arg3); } \
00603         break; \
00604       case VTK_CHAR: \
00605         { typedef char VTK_TT; \
00606         func(arg1, arg2, arg3); } \
00607         break; \
00608       case VTK_UNSIGNED_CHAR: \
00609         { typedef unsigned char VTK_TT; \
00610         func(arg1, arg2, arg3); } \
00611         break
00612 
00613 #define vtkTemplateMacro4(func, arg1, arg2, arg3, arg4) \
00614       case VTK_DOUBLE: \
00615         { typedef double VTK_TT; \
00616         func(arg1, arg2, arg3, arg4); } \
00617         break; \
00618       case VTK_FLOAT: \
00619         { typedef float VTK_TT; \
00620         func(arg1, arg2, arg3, arg4); } \
00621         break; \
00622       case VTK_LONG: \
00623         { typedef long VTK_TT; \
00624         func(arg1, arg2, arg3, arg4); } \
00625         break; \
00626       case VTK_UNSIGNED_LONG: \
00627         { typedef unsigned long VTK_TT; \
00628         func(arg1, arg2, arg3, arg4); } \
00629         break; \
00630       case VTK_INT: \
00631         { typedef int VTK_TT; \
00632         func(arg1, arg2, arg3, arg4); } \
00633         break; \
00634       case VTK_UNSIGNED_INT: \
00635         { typedef unsigned int VTK_TT; \
00636         func(arg1, arg2, arg3, arg4); } \
00637         break; \
00638       case VTK_SHORT: \
00639         { typedef short VTK_TT; \
00640         func(arg1, arg2, arg3, arg4); } \
00641         break; \
00642       case VTK_UNSIGNED_SHORT: \
00643         { typedef unsigned short VTK_TT; \
00644         func(arg1, arg2, arg3, arg4); } \
00645         break; \
00646       case VTK_CHAR: \
00647         { typedef char VTK_TT; \
00648         func(arg1, arg2, arg3, arg4); } \
00649         break; \
00650       case VTK_UNSIGNED_CHAR: \
00651         { typedef unsigned char VTK_TT; \
00652         func(arg1, arg2, arg3, arg4); } \
00653         break
00654 
00655 #define vtkTemplateMacro5(func, arg1, arg2, arg3, arg4, arg5) \
00656       case VTK_DOUBLE: \
00657         { typedef double VTK_TT; \
00658         func(arg1, arg2, arg3, arg4, arg5); } \
00659         break; \
00660       case VTK_FLOAT: \
00661         { typedef float VTK_TT; \
00662         func(arg1, arg2, arg3, arg4, arg5); } \
00663         break; \
00664       case VTK_LONG: \
00665         { typedef long VTK_TT; \
00666         func(arg1, arg2, arg3, arg4, arg5); } \
00667         break; \
00668       case VTK_UNSIGNED_LONG: \
00669         { typedef unsigned long VTK_TT; \
00670         func(arg1, arg2, arg3, arg4, arg5); } \
00671         break; \
00672       case VTK_INT: \
00673         { typedef int VTK_TT; \
00674         func(arg1, arg2, arg3, arg4, arg5); } \
00675         break; \
00676       case VTK_UNSIGNED_INT: \
00677         { typedef unsigned int VTK_TT; \
00678         func(arg1, arg2, arg3, arg4, arg5); } \
00679         break; \
00680       case VTK_SHORT: \
00681         { typedef short VTK_TT; \
00682         func(arg1, arg2, arg3, arg4, arg5); } \
00683         break; \
00684       case VTK_UNSIGNED_SHORT: \
00685         { typedef unsigned short VTK_TT; \
00686         func(arg1, arg2, arg3, arg4, arg5); } \
00687         break; \
00688       case VTK_CHAR: \
00689         { typedef char VTK_TT; \
00690         func(arg1, arg2, arg3, arg4, arg5); } \
00691         break; \
00692       case VTK_UNSIGNED_CHAR: \
00693         { typedef unsigned char VTK_TT; \
00694         func(arg1, arg2, arg3, arg4, arg5); } \
00695         break
00696 
00697 #define vtkTemplateMacro6(func, arg1, arg2, arg3, arg4, arg5, arg6) \
00698       case VTK_DOUBLE: \
00699         { typedef double VTK_TT; \
00700         func(arg1, arg2, arg3, arg4, arg5, arg6); } \
00701         break; \
00702       case VTK_FLOAT: \
00703         { typedef float VTK_TT; \
00704         func(arg1, arg2, arg3, arg4, arg5, arg6); } \
00705         break; \
00706       case VTK_LONG: \
00707         { typedef long VTK_TT; \
00708         func(arg1, arg2, arg3, arg4, arg5, arg6); } \
00709         break; \
00710       case VTK_UNSIGNED_LONG: \
00711         { typedef unsigned long VTK_TT; \
00712         func(arg1, arg2, arg3, arg4, arg5, arg6); } \
00713         break; \
00714       case VTK_INT: \
00715         { typedef int VTK_TT; \
00716         func(arg1, arg2, arg3, arg4, arg5, arg6); } \
00717         break; \
00718       case VTK_UNSIGNED_INT: \
00719         { typedef unsigned int VTK_TT; \
00720         func(arg1, arg2, arg3, arg4, arg5, arg6); } \
00721         break; \
00722       case VTK_SHORT: \
00723         { typedef short VTK_TT; \
00724         func(arg1, arg2, arg3, arg4, arg5, arg6); } \
00725         break; \
00726       case VTK_UNSIGNED_SHORT: \
00727         { typedef unsigned short VTK_TT; \
00728         func(arg1, arg2, arg3, arg4, arg5, arg6); } \
00729         break; \
00730       case VTK_CHAR: \
00731         { typedef char VTK_TT; \
00732         func(arg1, arg2, arg3, arg4, arg5, arg6); } \
00733         break; \
00734       case VTK_UNSIGNED_CHAR: \
00735         { typedef unsigned char VTK_TT; \
00736         func(arg1, arg2, arg3, arg4, arg5, arg6); } \
00737         break
00738           
00739 #define vtkTemplateMacro7(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7) \
00740       case VTK_DOUBLE: \
00741         { typedef double VTK_TT; \
00742         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7); } \
00743         break; \
00744       case VTK_FLOAT: \
00745         { typedef float VTK_TT; \
00746         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7); } \
00747         break; \
00748       case VTK_LONG: \
00749         { typedef long VTK_TT; \
00750         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7); } \
00751         break; \
00752       case VTK_UNSIGNED_LONG: \
00753         { typedef unsigned long VTK_TT; \
00754         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7); } \
00755         break; \
00756       case VTK_INT: \
00757         { typedef int VTK_TT; \
00758         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7); } \
00759         break; \
00760       case VTK_UNSIGNED_INT: \
00761         { typedef unsigned int VTK_TT; \
00762         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7); } \
00763         break; \
00764       case VTK_SHORT: \
00765         { typedef short VTK_TT; \
00766         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7); } \
00767         break; \
00768       case VTK_UNSIGNED_SHORT: \
00769         { typedef unsigned short VTK_TT; \
00770         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7); } \
00771         break; \
00772       case VTK_CHAR: \
00773         { typedef char VTK_TT; \
00774         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7); } \
00775         break; \
00776       case VTK_UNSIGNED_CHAR: \
00777         { typedef unsigned char VTK_TT; \
00778         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7); } \
00779         break
00780           
00781 #define vtkTemplateMacro8(func, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
00782       case VTK_DOUBLE: \
00783         { typedef double VTK_TT; \
00784         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); } \
00785         break; \
00786       case VTK_FLOAT: \
00787         { typedef float VTK_TT; \
00788         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); } \
00789         break; \
00790       case VTK_LONG: \
00791         { typedef long VTK_TT; \
00792         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); } \
00793         break; \
00794       case VTK_UNSIGNED_LONG: \
00795         { typedef unsigned long VTK_TT; \
00796         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); } \
00797         break; \
00798       case VTK_INT: \
00799         { typedef int VTK_TT; \
00800         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); } \
00801         break; \
00802       case VTK_UNSIGNED_INT: \
00803         { typedef unsigned int VTK_TT; \
00804         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); } \
00805         break; \
00806       case VTK_SHORT: \
00807         { typedef short VTK_TT; \
00808         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); } \
00809         break; \
00810       case VTK_UNSIGNED_SHORT: \
00811         { typedef unsigned short VTK_TT; \
00812         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); } \
00813         break; \
00814       case VTK_CHAR: \
00815         { typedef char VTK_TT; \
00816         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); } \
00817         break; \
00818       case VTK_UNSIGNED_CHAR: \
00819         { typedef unsigned char VTK_TT; \
00820         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8); } \
00821         break
00822 
00823 #define vtkTemplateMacro9(func,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) \
00824       case VTK_DOUBLE: \
00825         { typedef double VTK_TT; \
00826         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); } \
00827         break; \
00828       case VTK_FLOAT: \
00829         { typedef float VTK_TT; \
00830         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); } \
00831         break; \
00832       case VTK_LONG: \
00833         { typedef long VTK_TT; \
00834         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); } \
00835         break; \
00836       case VTK_UNSIGNED_LONG: \
00837         { typedef unsigned long VTK_TT; \
00838         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); } \
00839         break; \
00840       case VTK_INT: \
00841         { typedef int VTK_TT; \
00842         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); } \
00843         break; \
00844       case VTK_UNSIGNED_INT: \
00845         { typedef unsigned int VTK_TT; \
00846         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); } \
00847         break; \
00848       case VTK_SHORT: \
00849         { typedef short VTK_TT; \
00850         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); } \
00851         break; \
00852       case VTK_UNSIGNED_SHORT: \
00853         { typedef unsigned short VTK_TT; \
00854         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); } \
00855         break; \
00856       case VTK_CHAR: \
00857         { typedef char VTK_TT; \
00858         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); } \
00859         break; \
00860       case VTK_UNSIGNED_CHAR: \
00861         { typedef unsigned char VTK_TT; \
00862         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); } \
00863         break
00864 
00865 #define vtkTemplateMacro10(func,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) \
00866       case VTK_DOUBLE: \
00867         { typedef double VTK_TT; \
00868         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); } \
00869         break; \
00870       case VTK_FLOAT: \
00871         { typedef float VTK_TT; \
00872         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); } \
00873         break; \
00874       case VTK_LONG: \
00875         { typedef long VTK_TT; \
00876         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); } \
00877         break; \
00878       case VTK_UNSIGNED_LONG: \
00879         { typedef unsigned long VTK_TT; \
00880         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); } \
00881         break; \
00882       case VTK_INT: \
00883         { typedef int VTK_TT; \
00884         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); } \
00885         break; \
00886       case VTK_UNSIGNED_INT: \
00887         { typedef unsigned int VTK_TT; \
00888         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); } \
00889         break; \
00890       case VTK_SHORT: \
00891         { typedef short VTK_TT; \
00892         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); } \
00893         break; \
00894       case VTK_UNSIGNED_SHORT: \
00895         { typedef unsigned short VTK_TT; \
00896         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); } \
00897         break; \
00898       case VTK_CHAR: \
00899         { typedef char VTK_TT; \
00900         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); } \
00901         break; \
00902       case VTK_UNSIGNED_CHAR: \
00903         { typedef unsigned char VTK_TT; \
00904         func(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); } \
00905         break
00906 
00907 
00908 
00909 
00910 #ifdef VTK_LEAN_AND_MEAN
00911 #define VTK_LEGACY_METHOD(oldMethod,versionStringMadeLegacy) \
00912   vtkErrorMacro(<< #oldMethod \
00913                 << " was obsoleted for version " << #versionStringMadeLegacy \
00914                 << " and will be removed in a future version");
00915 #else
00916 #define VTK_LEGACY_METHOD(oldMethod,versionStringMadeLegacy)
00917 #endif
00918 
00919 
00920 #endif
00921