15 #ifndef vtkTypeTraits_h
16 #define vtkTypeTraits_h
21 VTK_ABI_NAMESPACE_BEGIN
26 #define VTK_TYPE_TRAITS(type, macro, isSigned, name, print, format) \
28 struct vtkTypeTraits<type> \
31 typedef type ValueType; \
36 VTK_TYPE_ID = VTK_##macro \
38 static int VTKTypeID() { return VTK_##macro; } \
41 static type Min() { return VTK_##macro##_MIN; } \
44 static type Max() { return VTK_##macro##_MAX; } \
47 static int IsSigned() { return isSigned; } \
50 typedef vtkType##name SizedType; \
53 static const char* SizedName() { return #name; } \
56 static const char* Name() { return #type; } \
59 typedef print PrintType; \
62 static const char* ParseFormat() { return format; } \
66 #define VTK_TYPE_NAME_FLOAT float
67 #define VTK_TYPE_NAME_DOUBLE double
68 #define VTK_TYPE_SIZED_FLOAT FLOAT32
69 #define VTK_TYPE_SIZED_DOUBLE FLOAT64
75 #define VTK_TYPE_NAME_CHAR char
76 #if VTK_TYPE_CHAR_IS_SIGNED
77 #define VTK_TYPE_SIZED_CHAR INT8
80 #define VTK_TYPE_SIZED_CHAR UINT8
83 #define VTK_TYPE_NAME_SIGNED_CHAR signed char
84 #define VTK_TYPE_NAME_UNSIGNED_CHAR unsigned char
85 #define VTK_TYPE_SIZED_SIGNED_CHAR INT8
86 #define VTK_TYPE_SIZED_UNSIGNED_CHAR UINT8
91 #define VTK_TYPE_NAME_SHORT short
92 #define VTK_TYPE_NAME_UNSIGNED_SHORT unsigned short
93 #define VTK_TYPE_SIZED_SHORT INT16
94 #define VTK_TYPE_SIZED_UNSIGNED_SHORT UINT16
96 VTK_TYPE_TRAITS(
unsigned short, UNSIGNED_SHORT, 0, UInt16,
unsigned short,
"%hu");
99 #define VTK_TYPE_NAME_INT int
100 #define VTK_TYPE_NAME_UNSIGNED_INT unsigned int
101 #define VTK_TYPE_SIZED_INT INT32
102 #define VTK_TYPE_SIZED_UNSIGNED_INT UINT32
107 #define VTK_TYPE_NAME_LONG long
108 #define VTK_TYPE_NAME_UNSIGNED_LONG unsigned long
109 #if VTK_SIZEOF_LONG == 4
110 #define VTK_TYPE_SIZED_LONG INT32
111 #define VTK_TYPE_SIZED_UNSIGNED_LONG UINT32
113 VTK_TYPE_TRAITS(
unsigned long, UNSIGNED_LONG, 0, UInt32,
unsigned long,
"%lu");
114 #elif VTK_SIZEOF_LONG == 8
115 #define VTK_TYPE_SIZED_LONG INT64
116 #define VTK_TYPE_SIZED_UNSIGNED_LONG UINT64
118 VTK_TYPE_TRAITS(
unsigned long, UNSIGNED_LONG, 0, UInt64,
unsigned long,
"%lu");
120 #error "Type long is not 4 or 8 bytes in size."
124 #define VTK_TYPE_NAME_LONG_LONG long long
125 #define VTK_TYPE_NAME_UNSIGNED_LONG_LONG unsigned long long
126 #if VTK_SIZEOF_LONG_LONG == 8
127 #define VTK_TYPE_SIZED_LONG_LONG INT64
128 #define VTK_TYPE_SIZED_UNSIGNED_LONG_LONG UINT64
129 #define VTK_TYPE_LONG_LONG_FORMAT "%ll"
130 VTK_TYPE_TRAITS(
long long, LONG_LONG, 1, Int64,
long long, VTK_TYPE_LONG_LONG_FORMAT
"d");
131 VTK_TYPE_TRAITS(
unsigned long long, UNSIGNED_LONG_LONG, 0, UInt64,
unsigned long long,
132 VTK_TYPE_LONG_LONG_FORMAT
"u");
133 #undef VTK_TYPE_LONG_LONG_FORMAT
135 #error "Type long long is not 8 bytes in size."
140 #define VTK_TYPE_NAME_ID_TYPE vtkIdType
141 #if defined(VTK_USE_64BIT_IDS)
142 #define VTK_TYPE_SIZED_ID_TYPE INT64
144 #define VTK_TYPE_SIZED_ID_TYPE INT32
147 #undef VTK_TYPE_TRAITS
149 VTK_ABI_NAMESPACE_END
Template defining traits of native types used by VTK.
#define VTK_TYPE_TRAITS(type, macro, isSigned, name, print, format)