forked from InsightSoftwareConsortium/ITK
/
WrapBasicTypes.cmake
196 lines (166 loc) · 6 KB
/
WrapBasicTypes.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
###############################################################################
# Set up variables to store "mangled names" and proper C++ type names for the
# basic types.
###############################################################################
set(ITKT_UC "unsigned char") # Type
set(ITKM_UC "UC") # Mangle
set(ITKT_US "unsigned short") # Type
set(ITKM_US "US") # Mangle
set(ITKT_UI "unsigned int") # Type
set(ITKM_UI "UI") # Mangle
set(ITKT_UL "unsigned long") # Type
set(ITKM_UL "UL") # Mangle
set(ITKT_ULL "unsigned long long") # Type
set(ITKM_ULL "ULL") # Mangle
set(ITKT_SC "signed char") # Type
set(ITKM_SC "SC") # Mangle
set(ITKT_SS "signed short") # Type
set(ITKM_SS "SS") # Mangle
set(ITKT_SI "signed int") # Type
set(ITKM_SI "SI") # Mangle
set(ITKT_SL "signed long") # Type
set(ITKM_SL "SL") # Mangle
set(ITKT_SLL "signed long long") # Type
set(ITKM_SLL "SLL") # Mangle
set(ITKT_F "float") # Type
set(ITKM_F "F") # Mangle
set(ITKT_D "double") # Type
set(ITKM_D "D") # Mangle
set(ITKT_LD "long double") # Type
set(ITKM_LD "LD") # Mangle
set(ITKT_B "bool") # Type
set(ITKM_B "B") # Mangle
###############################################################################
# A list of the union of ${ITK_WRAP_IMAGE_DIMS} and incremented ITK_WRAP_IMAGE_DIMS. This
# is needed for the VelocityFieldTransform related classes
###############################################################################
set(ITK_WRAP_IMAGE_DIMS_INCREMENTED "")
foreach(d ${ITK_WRAP_IMAGE_DIMS})
# For VelocityFieldTranform
INCREMENT(d_inc ${d})
list(APPEND ITK_WRAP_IMAGE_DIMS_INCREMENTED ${d} ${d_inc})
endforeach()
list(REMOVE_DUPLICATES ITK_WRAP_IMAGE_DIMS_INCREMENTED)
# Needed for itkMatrix, itkPoint, ...
set(ITK_WRAP_VECTOR_COMPONENTS_INCREMENTED "")
foreach(d ${ITK_WRAP_VECTOR_COMPONENTS})
INCREMENT(d_inc ${d})
list(APPEND ITK_WRAP_VECTOR_COMPONENTS_INCREMENTED ${d} ${d_inc})
endforeach()
list(REMOVE_DUPLICATES ITK_WRAP_VECTOR_COMPONENTS_INCREMENTED)
INTERSECTION(_vector_dims_intersection "${ITK_WRAP_VECTOR_COMPONENTS}"
"${ITK_WRAP_IMAGE_DIMS}")
list(LENGTH ITK_WRAP_IMAGE_DIMS _num_dims)
list(LENGTH _vector_dims_intersection _num_vector_dims_intersection)
if(NOT _num_dims EQUAL _num_vector_dims_intersection)
message(FATAL_ERROR "ITK_WRAP_VECTOR_COMPONENTS must include ITK_WRAP_IMAGE_DIMS")
endif()
###############################################################################
# Create some variable which can be used later
###############################################################################
set(WRAP_ITK_USIGN_INT "")
if(ITK_WRAP_unsigned_char)
list(APPEND WRAP_ITK_USIGN_INT "UC")
endif()
if(ITK_WRAP_unsigned_long)
list(APPEND WRAP_ITK_USIGN_INT "UL")
endif()
if(ITK_WRAP_unsigned_short)
list(APPEND WRAP_ITK_USIGN_INT "US")
endif()
set(WRAP_ITK_SIGN_INT "")
if(ITK_WRAP_signed_char)
list(APPEND WRAP_ITK_SIGN_INT "SC")
endif()
if(ITK_WRAP_signed_long)
list(APPEND WRAP_ITK_SIGN_INT "SL")
endif()
if(ITK_WRAP_signed_short)
list(APPEND WRAP_ITK_SIGN_INT "SS")
endif()
set(WRAP_ITK_REAL "")
if(ITK_WRAP_float)
list(APPEND WRAP_ITK_REAL "F")
endif()
if(ITK_WRAP_double)
list(APPEND WRAP_ITK_REAL "D")
endif()
set(WRAP_ITK_RGB "")
if(ITK_WRAP_rgb_unsigned_char)
list(APPEND WRAP_ITK_RGB "RGBUC")
endif()
if(ITK_WRAP_rgb_unsigned_short)
list(APPEND WRAP_ITK_RGB "RGBUS")
endif()
set(WRAP_ITK_RGBA "")
if(ITK_WRAP_rgba_unsigned_char)
list(APPEND WRAP_ITK_RGBA "RGBAUC")
endif()
if(ITK_WRAP_rgba_unsigned_short)
list(APPEND WRAP_ITK_RGBA "RGBAUS")
endif()
set(WRAP_ITK_VECTOR_REAL "")
if(ITK_WRAP_vector_double)
list(APPEND WRAP_ITK_VECTOR_REAL "VD")
endif()
if(ITK_WRAP_vector_float)
list(APPEND WRAP_ITK_VECTOR_REAL "VF")
endif()
set(WRAP_ITK_COV_VECTOR_REAL "")
if(ITK_WRAP_covariant_vector_double)
list(APPEND WRAP_ITK_COV_VECTOR_REAL "CVD")
endif()
if(ITK_WRAP_covariant_vector_float)
list(APPEND WRAP_ITK_COV_VECTOR_REAL "CVF")
endif()
set(WRAP_ITK_COMPLEX_REAL "")
if(ITK_WRAP_complex_double)
list(APPEND WRAP_ITK_COMPLEX_REAL "CD")
endif()
if(ITK_WRAP_complex_float)
list(APPEND WRAP_ITK_COMPLEX_REAL "CF")
endif()
set(WRAP_ITK_INT ${WRAP_ITK_SIGN_INT} ${WRAP_ITK_USIGN_INT})
set(WRAP_ITK_SCALAR ${WRAP_ITK_INT} ${WRAP_ITK_REAL})
set(WRAP_ITK_VECTOR ${WRAP_ITK_VECTOR_REAL} ${WRAP_ITK_COV_VECTOR_REAL})
set(WRAP_ITK_COLOR ${WRAP_ITK_RGB} ${WRAP_ITK_RGBA})
set(WRAP_ITK_ALL_TYPES ${WRAP_ITK_RGB} ${WRAP_ITK_RGBA} ${WRAP_ITK_VECTOR} ${WRAP_ITK_SCALAR} ${WRAP_ITK_COMPLEX_REAL})
# Make a list of all the RGB Pixel types which are wrapped.
set(WRAP_ITK_RGB_PIXEL_TYPES "D;F")
if(ITK_WRAP_rgb_unsigned_char)
list(APPEND WRAP_ITK_RGB_PIXEL_TYPES UC)
endif()
if(ITK_WRAP_rgb_unsigned_short)
list(APPEND WRAP_ITK_RGB_PIXEL_TYPES US)
endif()
# Make a list of all the RGBA Pixel types which are wrapped.
set(WRAP_ITK_RGBA_PIXEL_TYPES "D;F")
if(ITK_WRAP_rgba_unsigned_char)
list(APPEND WRAP_ITK_RGBA_PIXEL_TYPES UC)
endif()
if(ITK_WRAP_rgba_unsigned_short)
list(APPEND WRAP_ITK_RGBA_PIXEL_TYPES US)
endif()
# Make a list of all selected types "smaller than" a given type
INTERSECTION(SMALLER_THAN_D "F;UL;US;UC;SL;SS;SC" "${WRAP_ITK_SCALAR}")
INTERSECTION(SMALLER_THAN_F "UL;US;UC;SL;SS;SC" "${WRAP_ITK_SCALAR}")
INTERSECTION(SMALLER_THAN_UL "US;UC;SL;SS;SC" "${WRAP_ITK_INT}")
INTERSECTION(SMALLER_THAN_US "UC;SC" "${WRAP_ITK_INT}")
INTERSECTION(SMALLER_THAN_SL "US;UC;SS;SC" "${WRAP_ITK_INT}")
INTERSECTION(SMALLER_THAN_SS "UC;SC" "${WRAP_ITK_INT}")
# Types that correspond itk::SizeValueType, itk::IdentifierType, and itk::OffsetValueType
if(WIN32 AND ITK_USE_64BITS_IDS)
set(ITKM_ST ${ITKM_ULL})
set(ITKT_ST "${ITKT_ULL}")
set(ITKM_IT ${ITKM_ULL})
set(ITKT_IT "${ITKT_ULL}")
set(ITKM_OT ${ITKM_SLL})
set(ITKT_OT "${ITKT_SLL}")
else()
set(ITKM_ST ${ITKM_UL})
set(ITKT_ST "${ITKT_UL}")
set(ITKM_IT ${ITKM_UL})
set(ITKT_IT "${ITKT_UL}")
set(ITKM_OT ${ITKM_SL})
set(ITKT_OT "${ITKT_SL}")
endif()