Loading [MathJax]/extensions/tex2jax.js
SimpleITK  2.5.0.dev
sitkPixelIDTokens.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0.txt
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *=========================================================================*/
18#ifndef sitkPixelIDTokens_h
19#define sitkPixelIDTokens_h
20
21#include "sitkConfigure.h"
22#include "sitkPixelIDValues.h"
23
24#include <type_traits>
25
26namespace itk::simple
27{
28
29using TrueType = std::true_type;
30using FalseType = std::false_type;
31
32template <typename TPixelIDType>
33struct IsBasic
34{
35 static const bool Value = FalseType::value;
36 using ValueType = typename FalseType::value_type;
37 using Type = typename FalseType::type;
38};
39template <typename TPixelType>
40struct IsBasic<BasicPixelID<TPixelType>>
41{
42 static const bool Value = TrueType::value;
43 using ValueType = typename TrueType::value_type;
44 using Type = typename TrueType::type;
45};
46template <typename TPixelType, unsigned int VImageDimension>
47struct IsBasic<itk::Image<TPixelType, VImageDimension>>
48 : public IsBasic<typename ImageTypeToPixelID<itk::Image<TPixelType, VImageDimension>>::PixelIDType>
49{};
50
51
52template <typename TPixelIDType>
54{
55 static const bool Value = FalseType::value;
56 using ValueType = typename FalseType::value_type;
57 using Type = typename FalseType::type;
58};
59template <typename TPixelType>
60struct IsVector<VectorPixelID<TPixelType>>
61{
62 static const bool Value = TrueType::value;
63 using ValueType = typename TrueType::value_type;
64 using Type = typename TrueType::type;
65};
66template <typename TPixelType, unsigned int VImageDimension>
67struct IsVector<itk::VectorImage<TPixelType, VImageDimension>>
68 : public IsVector<typename ImageTypeToPixelID<itk::VectorImage<TPixelType, VImageDimension>>::PixelIDType>
69{};
70
71
72template <typename TPixelIDType>
73struct IsLabel
74{
75 static const bool Value = FalseType::value;
76 using ValueType = typename FalseType::value_type;
77 using Type = typename FalseType::type;
78};
79template <typename TPixelType>
80struct IsLabel<LabelPixelID<TPixelType>>
81{
82 static const bool Value = TrueType::value;
83 using ValueType = typename TrueType::value_type;
84 using Type = typename TrueType::type;
85};
86template <typename TLabelType, unsigned int VImageDimension>
87struct IsLabel<itk::LabelMap<itk::LabelObject<TLabelType, VImageDimension>>>
88 : public IsLabel<
89 typename ImageTypeToPixelID<itk::LabelMap<itk::LabelObject<TLabelType, VImageDimension>>>::PixelIDType>
90{};
91
92
93template <typename TPixelIDType, unsigned int VImageDimension = 0>
95{
97 ((VImageDimension == 0) || (VImageDimension >= 2 && VImageDimension <= SITK_MAX_DIMENSION));
98 using ValueType = typename std::integral_constant<bool, Value>::value_type;
99 using Type = typename std::integral_constant<bool, Value>::type;
100};
101template <typename TPixelType, unsigned int VImageDimension>
102struct IsInstantiated<itk::Image<TPixelType, VImageDimension>, 0>
103 : public IsInstantiated<typename ImageTypeToPixelID<itk::Image<TPixelType, VImageDimension>>::PixelIDType,
104 VImageDimension>
105{};
106template <typename TPixelType, unsigned int VImageDimension>
107struct IsInstantiated<itk::VectorImage<TPixelType, VImageDimension>, 0>
108 : public IsInstantiated<typename ImageTypeToPixelID<itk::VectorImage<TPixelType, VImageDimension>>::PixelIDType,
109 VImageDimension>
110{};
111template <typename TLabelType, unsigned int VImageDimension>
112struct IsInstantiated<itk::LabelMap<itk::LabelObject<TLabelType, VImageDimension>>, 0>
113 : public IsInstantiated<
114 typename ImageTypeToPixelID<itk::LabelMap<itk::LabelObject<TLabelType, VImageDimension>>>::PixelIDType,
115 VImageDimension>
116{};
117
118} // namespace itk::simple
119
120#endif // _sitkPixelIDTokens_h
The Image class for SimpleITK.
Definition sitkImage.h:77
std::false_type FalseType
std::true_type TrueType
#define SITK_MAX_DIMENSION
typename FalseType::value_type ValueType
typename FalseType::type Type
static const bool Value
typename std::integral_constant< bool, Value >::type Type
typename std::integral_constant< bool, Value >::value_type ValueType
typename FalseType::type Type
typename FalseType::value_type ValueType
static const bool Value
typename FalseType::type Type
typename FalseType::value_type ValueType
static const bool Value