18#ifndef itkMeasurementVectorTraits_h
19#define itkMeasurementVectorTraits_h
22#include "vnl/vnl_vector_fixed.h"
56 template <
typename TVectorType>
70 template <
typename TValue1,
unsigned int VLength,
typename TValue2,
unsigned int VLength2>
74 const char * errMsg =
"Length Mismatch")
76 if (VLength != VLength2)
78 itkGenericExceptionMacro(<< errMsg);
83 template <
typename TValue1,
unsigned int VLength,
typename TValue2,
unsigned int VLength2>
87 const char * errMsg =
"Length Mismatch")
89 if (VLength != VLength2)
91 itkGenericExceptionMacro(<< errMsg);
96 template <
typename TValue1,
typename TValue2>
102 itkGenericExceptionMacro(<< errMsg);
107 template <
typename TValue1,
typename TValue2>
113 itkGenericExceptionMacro(<< errMsg);
118 template <
typename TValue1,
typename TValue2>
122 const char * errMsg =
"Length Mismatch")
124 if (b.Size() != a.Size())
126 itkGenericExceptionMacro(<< errMsg);
131 template <
typename TValue1,
typename TValue2>
135 const char * errMsg =
"Length Mismatch")
137 if (b->Size() != a->Size())
139 itkGenericExceptionMacro(<< errMsg);
144 template <
typename TValue1,
typename TValue2>
146 Assert(
const std::vector<TValue1> & a,
const std::vector<TValue2> & b,
const char * errMsg =
"Length Mismatch")
148 if (b.size() != a.size())
150 itkGenericExceptionMacro(<< errMsg);
155 template <
typename TValue1,
typename TValue2>
157 Assert(
const std::vector<TValue1> * a,
const std::vector<TValue2> * b,
const char * errMsg =
"Length Mismatch")
159 if (b->size() != a->size())
161 itkGenericExceptionMacro(<< errMsg);
166 template <
typename TValue1,
unsigned int VLength,
typename TValue2>
176 if (b.
Size() != VLength)
178 itkGenericExceptionMacro(<< errMsg);
184 template <
typename TValue1,
unsigned int VLength,
typename TValue2>
192 if (b->
Size() != VLength)
194 itkGenericExceptionMacro(<< errMsg);
199 template <
typename TValue1,
unsigned int VLength,
typename TValue2>
203 const char * errMsg =
"Length Mismatch")
209 if (b.Size() != VLength)
211 itkGenericExceptionMacro(<< errMsg);
216 template <
typename TValue1,
unsigned int VLength,
typename TValue2>
220 const char * errMsg =
"Length Mismatch")
226 if (b->Size() != VLength)
228 itkGenericExceptionMacro(<< errMsg);
233 template <
typename TValue1,
unsigned int VLength,
typename TValue2>
241 if (b.size() != VLength)
243 itkGenericExceptionMacro(<< errMsg);
248 template <
typename TValue1,
unsigned int VLength,
typename TValue2>
256 if (b->size() != VLength)
258 itkGenericExceptionMacro(<< errMsg);
263 template <
typename TValue1,
unsigned int VLength>
273 itkGenericExceptionMacro(<< errMsg);
278 template <
typename TValue1,
unsigned int VLength>
288 itkGenericExceptionMacro(<< errMsg);
293 template <
typename TValue>
297 if (((l != 0) && (a.
Size() != l)) || (a.
Size() == 0))
299 itkGenericExceptionMacro(<< errMsg);
308 template <
typename TValue>
312 if (((l != 0) && (a->
Size() != l)) || (a->
Size() == 0))
314 itkGenericExceptionMacro(<< errMsg);
323 template <
typename TValue>
327 const char * errMsg =
"Length Mismatch")
329 if (((l != 0) && (a.Size() != l)) || (a.Size() == 0))
331 itkGenericExceptionMacro(<< errMsg);
340 template <
typename TValue>
344 const char * errMsg =
"Length Mismatch")
346 if (((l != 0) && (a->Size() != l)) || (a->Size() == 0))
348 itkGenericExceptionMacro(<< errMsg);
357 template <
typename TValue>
361 if (((l != 0) && (a.size() != l)) || (a.empty()))
363 itkGenericExceptionMacro(<< errMsg);
372 template <
typename TValue>
376 if (((l != 0) && (a->size() != l)) || (a->size() == 0))
378 itkGenericExceptionMacro(<< errMsg);
387 template <
typename TArrayType>
389 Assign(TArrayType & m,
const TArrayType & v)
394 template <
typename TValue,
unsigned int VLength>
406template <
typename TMeasurementVector>
410 using ValueType =
typename TMeasurementVector::ValueType;
423template <
typename TPixelType>
444class MeasurementVectorPixelTraits<unsigned char>
451class MeasurementVectorPixelTraits<signed char>
Array class with size defined at construction time.
SizeValueType Size() const
Simulate a standard C array with copy semantics.
static constexpr unsigned int GetLength()
PixelType MeasurementVectorType
typename MeasurementVectorType::ValueType ValueType
static MeasurementVectorLength Assert(const FixedArray< TValue1, VLength > &, const Array< TValue2 > &b, const char *errMsg="Length Mismatch")
static MeasurementVectorLength Assert(const Array< TValue > &a, const MeasurementVectorLength l, const char *errMsg="Length Mismatch")
static MeasurementVectorLength Assert(const FixedArray< TValue1, VLength > *, const std::vector< TValue2 > *b, const char *errMsg="Length Mismatch")
static MeasurementVectorLength Assert(const FixedArray< TValue1, VLength > &, const VariableLengthVector< TValue2 > &b, const char *errMsg="Length Mismatch")
static MeasurementVectorLength Assert(const VariableLengthVector< TValue > &a, const MeasurementVectorLength l, const char *errMsg="Length Mismatch")
static MeasurementVectorLength Assert(const Array< TValue1 > *a, const Array< TValue2 > *b, const char *errMsg="Length Mismatch")
static MeasurementVectorLength Assert(const FixedArray< TValue1, VLength > *, const Array< TValue2 > *b, const char *errMsg="Length Mismatch")
static MeasurementVectorLength Assert(const VariableLengthVector< TValue1 > &a, const VariableLengthVector< TValue2 > &b, const char *errMsg="Length Mismatch")
NumericTraits< RelativeFrequencyType >::AccumulateType TotalRelativeFrequencyType
static MeasurementVectorLength Assert(const std::vector< TValue1 > &a, const std::vector< TValue2 > &b, const char *errMsg="Length Mismatch")
static MeasurementVectorLength Assert(const FixedArray< TValue1, VLength > *, const FixedArray< TValue2, VLength2 > *, const char *errMsg="Length Mismatch")
static MeasurementVectorLength Assert(const Array< TValue1 > &a, const Array< TValue2 > &b, const char *errMsg="Length Mismatch")
NumericTraits< AbsoluteFrequencyType >::AccumulateType TotalAbsoluteFrequencyType
static MeasurementVectorLength Assert(const std::vector< TValue > &a, const MeasurementVectorLength l, const char *errMsg="Length Mismatch")
static MeasurementVectorLength Assert(const FixedArray< TValue1, VLength > *, const MeasurementVectorLength l, const char *errMsg="Length Mismatch")
static MeasurementVectorLength Assert(const FixedArray< TValue1, VLength > &, const MeasurementVectorLength l, const char *errMsg="Length Mismatch")
static MeasurementVectorLength Assert(const VariableLengthVector< TValue > *a, const MeasurementVectorLength l, const char *errMsg="Length Mismatch")
IdentifierType InstanceIdentifier
static MeasurementVectorLength Assert(const FixedArray< TValue1, VLength > &, const std::vector< TValue2 > &b, const char *errMsg="Length Mismatch")
static MeasurementVectorLength Assert(const VariableLengthVector< TValue1 > *a, const VariableLengthVector< TValue2 > *b, const char *errMsg="Length Mismatch")
static MeasurementVectorLength Assert(const std::vector< TValue > *a, const MeasurementVectorLength l, const char *errMsg="Length Mismatch")
static MeasurementVectorLength Assert(const FixedArray< TValue1, VLength > &, const FixedArray< TValue2, VLength2 > &, const char *errMsg="Length Mismatch")
static void Assign(FixedArray< TValue, VLength > &m, const TValue &v)
static MeasurementVectorLength Assert(const FixedArray< TValue1, VLength > *, const VariableLengthVector< TValue2 > *b, const char *errMsg="Length Mismatch")
vcl_size_t MeasurementVectorLength
static void Assign(TArrayType &m, const TArrayType &v)
static MeasurementVectorLength Assert(const std::vector< TValue1 > *a, const std::vector< TValue2 > *b, const char *errMsg="Length Mismatch")
InstanceIdentifier AbsoluteFrequencyType
static bool IsResizable(const TVectorType &)
NumericTraits< AbsoluteFrequencyType >::RealType RelativeFrequencyType
static MeasurementVectorLength Assert(const Array< TValue > *a, const MeasurementVectorLength l, const char *errMsg="Length Mismatch")
SizeValueType IdentifierType