23 #ifndef vtkTypeTraits_h 
   24 #define vtkTypeTraits_h 
   33 #define VTK_TYPE_TRAITS(type, macro, isSigned, name, print, format)                                \ 
   35   struct vtkTypeTraits<type>                                                                       \ 
   38     typedef type ValueType;                                                                        \ 
   43       VTK_TYPE_ID = VTK_##macro                                                                    \ 
   45     static int VTKTypeID() { return VTK_##macro; }                                                 \ 
   48     static type Min() { return VTK_##macro##_MIN; }                                                \ 
   51     static type Max() { return VTK_##macro##_MAX; }                                                \ 
   54     static int IsSigned() { return isSigned; }                                                     \ 
   57     typedef vtkType##name SizedType;                                                               \ 
   60     static const char* SizedName() { return #name; }                                               \ 
   63     static const char* Name() { return #type; }                                                    \ 
   66     typedef print PrintType;                                                                       \ 
   69     static const char* ParseFormat() { return format; }                                            \ 
   73 #define VTK_TYPE_NAME_FLOAT float 
   74 #define VTK_TYPE_NAME_DOUBLE double 
   75 #define VTK_TYPE_SIZED_FLOAT FLOAT32 
   76 #define VTK_TYPE_SIZED_DOUBLE FLOAT64 
   82 #define VTK_TYPE_NAME_CHAR char 
   83 #if VTK_TYPE_CHAR_IS_SIGNED 
   84 #define VTK_TYPE_SIZED_CHAR INT8 
   87 #define VTK_TYPE_SIZED_CHAR UINT8 
   90 #define VTK_TYPE_NAME_SIGNED_CHAR signed char 
   91 #define VTK_TYPE_NAME_UNSIGNED_CHAR unsigned char 
   92 #define VTK_TYPE_SIZED_SIGNED_CHAR INT8 
   93 #define VTK_TYPE_SIZED_UNSIGNED_CHAR UINT8 
   95 VTK_TYPE_TRAITS(
unsigned char, UNSIGNED_CHAR, 0, UInt8, 
unsigned short, 
"%hu");
 
   98 #define VTK_TYPE_NAME_SHORT short 
   99 #define VTK_TYPE_NAME_UNSIGNED_SHORT unsigned short 
  100 #define VTK_TYPE_SIZED_SHORT INT16 
  101 #define VTK_TYPE_SIZED_UNSIGNED_SHORT UINT16 
  103 VTK_TYPE_TRAITS(
unsigned short, UNSIGNED_SHORT, 0, UInt16, 
unsigned short, 
"%hu");
 
  106 #define VTK_TYPE_NAME_INT int 
  107 #define VTK_TYPE_NAME_UNSIGNED_INT unsigned int 
  108 #define VTK_TYPE_SIZED_INT INT32 
  109 #define VTK_TYPE_SIZED_UNSIGNED_INT UINT32 
  111 VTK_TYPE_TRAITS(
unsigned int, UNSIGNED_INT, 0, UInt32, 
unsigned int, 
"%u");
 
  114 #define VTK_TYPE_NAME_LONG long 
  115 #define VTK_TYPE_NAME_UNSIGNED_LONG unsigned long 
  116 #if VTK_SIZEOF_LONG == 4 
  117 #define VTK_TYPE_SIZED_LONG INT32 
  118 #define VTK_TYPE_SIZED_UNSIGNED_LONG UINT32 
  120 VTK_TYPE_TRAITS(
unsigned long, UNSIGNED_LONG, 0, UInt32, 
unsigned long, 
"%lu");
 
  121 #elif VTK_SIZEOF_LONG == 8 
  122 #define VTK_TYPE_SIZED_LONG INT64 
  123 #define VTK_TYPE_SIZED_UNSIGNED_LONG UINT64 
  125 VTK_TYPE_TRAITS(
unsigned long, UNSIGNED_LONG, 0, UInt64, 
unsigned long, 
"%lu");
 
  127 #error "Type long is not 4 or 8 bytes in size." 
  131 #define VTK_TYPE_NAME_LONG_LONG long long 
  132 #define VTK_TYPE_NAME_UNSIGNED_LONG_LONG unsigned long long 
  133 #if VTK_SIZEOF_LONG_LONG == 8 
  134 #define VTK_TYPE_SIZED_LONG_LONG INT64 
  135 #define VTK_TYPE_SIZED_UNSIGNED_LONG_LONG UINT64 
  136 #define VTK_TYPE_LONG_LONG_FORMAT "%ll" 
  137 VTK_TYPE_TRAITS(
long long, LONG_LONG, 1, Int64, 
long long, VTK_TYPE_LONG_LONG_FORMAT 
"d");
 
  138 VTK_TYPE_TRAITS(
unsigned long long, UNSIGNED_LONG_LONG, 0, UInt64, 
unsigned long long,
 
  139   VTK_TYPE_LONG_LONG_FORMAT 
"u");
 
  140 #undef VTK_TYPE_LONG_LONG_FORMAT 
  142 #error "Type long long is not 8 bytes in size." 
  147 #define VTK_TYPE_NAME_ID_TYPE vtkIdType 
  148 #if defined(VTK_USE_64BIT_IDS) 
  149 #define VTK_TYPE_SIZED_ID_TYPE INT64 
  151 #define VTK_TYPE_SIZED_ID_TYPE INT32 
  154 #undef VTK_TYPE_TRAITS