ITK
4.3.0
Insight Segmentation and Registration Toolkit
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
ITK
Modules
Core
Common
include
itkNumericTraitsFixedArrayPixel.h
Go to the documentation of this file.
1
/*=========================================================================
2
*
3
* Copyright Insight Software Consortium
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 __itkNumericTraitsFixedArrayPixel_h
19
#define __itkNumericTraitsFixedArrayPixel_h
20
21
#include "
itkNumericTraits.h
"
22
#include "
itkFixedArray.h
"
23
24
namespace
itk
25
{
43
template
<
typename
T,
unsigned
int
D >
44
class
NumericTraits
<
FixedArray
< T, D > >
45
{
46
private
:
47
48
typedef
typename
NumericTraits< T >::AbsType
ElementAbsType
;
49
typedef
typename
NumericTraits< T >::AccumulateType
ElementAccumulateType
;
50
typedef
typename
NumericTraits< T >::FloatType
ElementFloatType
;
51
typedef
typename
NumericTraits< T >::PrintType
ElementPrintType
;
52
typedef
typename
NumericTraits< T >::RealType
ElementRealType
;
53
54
public
:
55
57
typedef
T
ValueType
;
58
59
typedef
FixedArray< T, D >
Self
;
60
62
typedef
FixedArray< ElementAbsType, D >
AbsType
;
63
65
typedef
FixedArray< ElementAccumulateType, D >
AccumulateType
;
66
69
typedef
FixedArray< ElementFloatType, D >
FloatType
;
70
72
typedef
FixedArray< ElementPrintType, D >
PrintType
;
73
75
typedef
FixedArray< ElementRealType, D >
RealType
;
76
78
typedef
ElementRealType
ScalarRealType
;
79
81
typedef
Self
MeasurementVectorType
;
82
88
static
const
Self
max
(
const
Self
&)
89
{
90
return
Self
(
NumericTraits< T >::max
() );
91
}
92
93
static
const
Self
min
(
const
Self
&)
94
{
95
return
Self
(
NumericTraits< T >::min
() );
96
}
97
98
static
const
Self
max
()
99
{
100
return
Self
(
NumericTraits< T >::max
() );
101
}
102
103
static
const
Self
min
()
104
{
105
return
Self
(
NumericTraits< T >::min
() );
106
}
107
108
static
const
Self
NonpositiveMin
()
109
{
110
return
Self
(
NumericTraits< T >::NonpositiveMin
() );
111
}
112
113
static
const
Self
ZeroValue
()
114
{
115
return
Self
(
NumericTraits< T >::ZeroValue
() );
116
}
117
118
static
const
Self
OneValue
()
119
{
120
return
Self
(
NumericTraits< T >::OneValue
() );
121
}
122
123
static
const
Self
NonpositiveMin
(
const
Self
&)
124
{
125
return
NonpositiveMin
();
126
}
127
128
static
const
Self
ZeroValue
(
const
Self
&)
129
{
130
return
ZeroValue
();
131
}
132
133
static
const
Self
OneValue
(
const
Self
&)
134
{
135
return
OneValue
();
136
}
137
141
static
void
SetLength
(
FixedArray< T, D >
& m,
const
unsigned
int
s)
142
{
143
if
( s != D )
144
{
145
itkGenericExceptionMacro(<<
"Cannot set the size of a FixedArray of length "
146
<< D <<
" to "
<< s);
147
}
148
m.
Fill
(
NumericTraits< T >::Zero
);
149
}
151
153
static
unsigned
int
GetLength
(
const
FixedArray< T, D >
&)
154
{
155
return
D;
156
}
157
159
static
unsigned
int
GetLength
()
160
{
161
return
D;
162
}
163
164
static
void
AssignToArray
(
const
Self
& v,
MeasurementVectorType
& mv )
165
{
166
mv = v;
167
}
168
169
template
<
class
TArray>
170
static
void
AssignToArray
(
const
Self
& v, TArray & mv )
171
{
172
for
(
unsigned
int
i=0; i<D; i++ )
173
{
174
mv[i] = v[i];
175
}
176
}
177
181
static
const
Self
ITKCommon_EXPORT
Zero
;
182
static
const
Self
ITKCommon_EXPORT
One
;
183
};
184
185
// a macro to define and initialize static member variables
186
#define itkStaticNumericTraitsGenericArrayMacro(GENERIC_ARRAY, T, D) \
187
template< > \
188
const GENERIC_ARRAY< T, D > NumericTraits< GENERIC_ARRAY< T, D > >::Zero = GENERIC_ARRAY< T, D >( \
189
NumericTraits< T >::Zero); \
190
template< > \
191
const GENERIC_ARRAY< T, D > NumericTraits< GENERIC_ARRAY< T, D > >::One = GENERIC_ARRAY< T, D >( \
192
NumericTraits< T >::One);
193
194
//
195
// List here the array dimension specializations of these static
196
// Traits:
197
//
198
#define itkStaticNumericTraitsGenericArrayDimensionsMacro(GENERIC_ARRAY, T) \
199
itkStaticNumericTraitsGenericArrayMacro(GENERIC_ARRAY, T, 1); \
200
itkStaticNumericTraitsGenericArrayMacro(GENERIC_ARRAY, T, 2); \
201
itkStaticNumericTraitsGenericArrayMacro(GENERIC_ARRAY, T, 3); \
202
itkStaticNumericTraitsGenericArrayMacro(GENERIC_ARRAY, T, 4); \
203
itkStaticNumericTraitsGenericArrayMacro(GENERIC_ARRAY, T, 5); \
204
itkStaticNumericTraitsGenericArrayMacro(GENERIC_ARRAY, T, 6); \
205
itkStaticNumericTraitsGenericArrayMacro(GENERIC_ARRAY, T, 7); \
206
itkStaticNumericTraitsGenericArrayMacro(GENERIC_ARRAY, T, 8); \
207
itkStaticNumericTraitsGenericArrayMacro(GENERIC_ARRAY, T, 9); \
208
itkStaticNumericTraitsGenericArrayMacro(GENERIC_ARRAY, T, 10);
209
}
// end namespace itk
210
211
#endif // __itkNumericTraitsFixedArrayPixel_h
212
Generated on Sun Dec 9 2012 01:21:17 for ITK by
1.8.2