15 #ifndef vtkTypeTraits_h
16 #define vtkTypeTraits_h
23 VTK_ABI_NAMESPACE_BEGIN
28 #define VTK_TYPE_TRAITS(type, macro, isSigned, name, print, format) \
30 struct vtkTypeTraits<type> \
33 using ValueType = type; \
38 VTK_TYPE_ID = VTK_##macro \
40 static int VTKTypeID() \
48 return VTK_##macro##_MIN; \
54 return VTK_##macro##_MAX; \
58 static int IsSigned() \
64 typedef vtkType##name SizedType; \
67 static const char* SizedName() \
73 static const char* Name() \
79 using PrintType = print; \
82 static const char* ParseFormat() \
89 #define VTK_NON_NUMERIC_TYPE_TRAITS(type, macro) \
91 struct vtkTypeTraits<type> \
94 using ValueType = type; \
99 VTK_TYPE_ID = VTK_##macro \
101 static int VTKTypeID() \
103 return VTK_##macro; \
107 static const char* Name() \
114 #define VTK_TYPE_NAME_FLOAT float
115 #define VTK_TYPE_NAME_DOUBLE double
116 #define VTK_TYPE_SIZED_FLOAT FLOAT32
117 #define VTK_TYPE_SIZED_DOUBLE FLOAT64
123 #define VTK_TYPE_NAME_CHAR char
124 #if VTK_TYPE_CHAR_IS_SIGNED
125 #define VTK_TYPE_SIZED_CHAR INT8
128 #define VTK_TYPE_SIZED_CHAR UINT8
131 #define VTK_TYPE_NAME_SIGNED_CHAR signed char
132 #define VTK_TYPE_NAME_UNSIGNED_CHAR unsigned char
133 #define VTK_TYPE_SIZED_SIGNED_CHAR INT8
134 #define VTK_TYPE_SIZED_UNSIGNED_CHAR UINT8
136 VTK_TYPE_TRAITS(
unsigned char, UNSIGNED_CHAR, 0, UInt8,
unsigned short,
"%hu");
139 #define VTK_TYPE_NAME_SHORT short
140 #define VTK_TYPE_NAME_UNSIGNED_SHORT unsigned short
141 #define VTK_TYPE_SIZED_SHORT INT16
142 #define VTK_TYPE_SIZED_UNSIGNED_SHORT UINT16
144 VTK_TYPE_TRAITS(
unsigned short, UNSIGNED_SHORT, 0, UInt16,
unsigned short,
"%hu");
147 #define VTK_TYPE_NAME_INT int
148 #define VTK_TYPE_NAME_UNSIGNED_INT unsigned int
149 #define VTK_TYPE_SIZED_INT INT32
150 #define VTK_TYPE_SIZED_UNSIGNED_INT UINT32
152 VTK_TYPE_TRAITS(
unsigned int, UNSIGNED_INT, 0, UInt32,
unsigned int,
"%u");
155 #define VTK_TYPE_NAME_LONG long
156 #define VTK_TYPE_NAME_UNSIGNED_LONG unsigned long
157 #if VTK_SIZEOF_LONG == 4
158 #define VTK_TYPE_SIZED_LONG INT32
159 #define VTK_TYPE_SIZED_UNSIGNED_LONG UINT32
161 VTK_TYPE_TRAITS(
unsigned long, UNSIGNED_LONG, 0, UInt32,
unsigned long,
"%lu");
162 #elif VTK_SIZEOF_LONG == 8
163 #define VTK_TYPE_SIZED_LONG INT64
164 #define VTK_TYPE_SIZED_UNSIGNED_LONG UINT64
166 VTK_TYPE_TRAITS(
unsigned long, UNSIGNED_LONG, 0, UInt64,
unsigned long,
"%lu");
168 #error "Type long is not 4 or 8 bytes in size."
172 #define VTK_TYPE_NAME_LONG_LONG long long
173 #define VTK_TYPE_NAME_UNSIGNED_LONG_LONG unsigned long long
174 #if VTK_SIZEOF_LONG_LONG == 8
175 #define VTK_TYPE_SIZED_LONG_LONG INT64
176 #define VTK_TYPE_SIZED_UNSIGNED_LONG_LONG UINT64
177 #define VTK_TYPE_LONG_LONG_FORMAT "%ll"
178 VTK_TYPE_TRAITS(
long long, LONG_LONG, 1, Int64,
long long, VTK_TYPE_LONG_LONG_FORMAT
"d");
179 VTK_TYPE_TRAITS(
unsigned long long, UNSIGNED_LONG_LONG, 0, UInt64,
unsigned long long,
180 VTK_TYPE_LONG_LONG_FORMAT
"u");
181 #undef VTK_TYPE_LONG_LONG_FORMAT
183 #error "Type long long is not 8 bytes in size."
188 #define VTK_TYPE_NAME_ID_TYPE vtkIdType
189 #if defined(VTK_USE_64BIT_IDS)
190 #define VTK_TYPE_SIZED_ID_TYPE INT64
192 #define VTK_TYPE_SIZED_ID_TYPE INT32
201 #undef VTK_TYPE_TRAITS
202 #undef VTK_NON_NUMERIC_TYPE_TRAITS
204 VTK_ABI_NAMESPACE_END
Wrapper around std::string to keep symbols short.
A type representing the union of many types.
#define VTK_TYPE_TRAITS(type, macro, isSigned, name, print, format)
#define VTK_NON_NUMERIC_TYPE_TRAITS(type, macro)
Template defining traits of native types used by VTK.