26#ifndef vtkTypeTraits_h
27#define vtkTypeTraits_h
36#define VTK_TYPE_TRAITS(type, macro, isSigned, name, print, format) \
38 struct vtkTypeTraits<type> \
41 typedef type ValueType; \
46 VTK_TYPE_ID = VTK_##macro \
48 static int VTKTypeID() { return VTK_##macro; } \
51 static type Min() { return VTK_##macro##_MIN; } \
54 static type Max() { return VTK_##macro##_MAX; } \
57 static int IsSigned() { return isSigned; } \
60 typedef vtkType##name SizedType; \
63 static const char* SizedName() { return #name; } \
66 static const char* Name() { return #type; } \
69 typedef print PrintType; \
72 static const char* ParseFormat() { return format; } \
76#define VTK_TYPE_NAME_FLOAT float
77#define VTK_TYPE_NAME_DOUBLE double
78#define VTK_TYPE_SIZED_FLOAT FLOAT32
79#define VTK_TYPE_SIZED_DOUBLE FLOAT64
85#define VTK_TYPE_NAME_CHAR char
86#if VTK_TYPE_CHAR_IS_SIGNED
87#define VTK_TYPE_SIZED_CHAR INT8
90#define VTK_TYPE_SIZED_CHAR UINT8
93#define VTK_TYPE_NAME_SIGNED_CHAR signed char
94#define VTK_TYPE_NAME_UNSIGNED_CHAR unsigned char
95#define VTK_TYPE_SIZED_SIGNED_CHAR INT8
96#define VTK_TYPE_SIZED_UNSIGNED_CHAR UINT8
101#define VTK_TYPE_NAME_SHORT short
102#define VTK_TYPE_NAME_UNSIGNED_SHORT unsigned short
103#define VTK_TYPE_SIZED_SHORT INT16
104#define VTK_TYPE_SIZED_UNSIGNED_SHORT UINT16
109#define VTK_TYPE_NAME_INT int
110#define VTK_TYPE_NAME_UNSIGNED_INT unsigned int
111#define VTK_TYPE_SIZED_INT INT32
112#define VTK_TYPE_SIZED_UNSIGNED_INT UINT32
117#define VTK_TYPE_NAME_LONG long
118#define VTK_TYPE_NAME_UNSIGNED_LONG unsigned long
119#if VTK_SIZEOF_LONG == 4
120#define VTK_TYPE_SIZED_LONG INT32
121#define VTK_TYPE_SIZED_UNSIGNED_LONG UINT32
123VTK_TYPE_TRAITS(
unsigned long, UNSIGNED_LONG, 0, UInt32,
unsigned long,
"%lu");
124#elif VTK_SIZEOF_LONG == 8
125#define VTK_TYPE_SIZED_LONG INT64
126#define VTK_TYPE_SIZED_UNSIGNED_LONG UINT64
128VTK_TYPE_TRAITS(
unsigned long, UNSIGNED_LONG, 0, UInt64,
unsigned long,
"%lu");
130#error "Type long is not 4 or 8 bytes in size."
134#define VTK_TYPE_NAME_LONG_LONG long long
135#define VTK_TYPE_NAME_UNSIGNED_LONG_LONG unsigned long long
136#if VTK_SIZEOF_LONG_LONG == 8
137#define VTK_TYPE_SIZED_LONG_LONG INT64
138#define VTK_TYPE_SIZED_UNSIGNED_LONG_LONG UINT64
139#define VTK_TYPE_LONG_LONG_FORMAT "%ll"
140VTK_TYPE_TRAITS(
long long, LONG_LONG, 1, Int64,
long long, VTK_TYPE_LONG_LONG_FORMAT
"d");
141VTK_TYPE_TRAITS(
unsigned long long, UNSIGNED_LONG_LONG, 0, UInt64,
unsigned long long,
142 VTK_TYPE_LONG_LONG_FORMAT
"u");
143#undef VTK_TYPE_LONG_LONG_FORMAT
145#error "Type long long is not 8 bytes in size."
150#define VTK_TYPE_NAME_ID_TYPE vtkIdType
151#if defined(VTK_USE_64BIT_IDS)
152#define VTK_TYPE_SIZED_ID_TYPE INT64
154#define VTK_TYPE_SIZED_ID_TYPE INT32
157#undef VTK_TYPE_TRAITS
Template defining traits of native types used by VTK.
#define VTK_TYPE_TRAITS(type, macro, isSigned, name, print, format)