18#ifndef itkMeasurementVectorTraits_h
19#define itkMeasurementVectorTraits_h
22#include "vnl/vnl_vector_fixed.h"
57 template <
typename TVectorType>
71 template <
typename TValue1,
unsigned int VLength,
typename TValue2,
unsigned int VLength2>
75 const char * errMsg =
"Length Mismatch")
77 if (VLength != VLength2)
79 itkGenericExceptionMacro(<< errMsg);
84 template <
typename TValue1,
unsigned int VLength,
typename TValue2,
unsigned int VLength2>
88 const char * errMsg =
"Length Mismatch")
90 if (VLength != VLength2)
92 itkGenericExceptionMacro(<< errMsg);
97 template <
typename TValue1,
typename TValue2>
103 itkGenericExceptionMacro(<< errMsg);
108 template <
typename TValue1,
typename TValue2>
114 itkGenericExceptionMacro(<< errMsg);
119 template <
typename TValue1,
typename TValue2>
123 const char * errMsg =
"Length Mismatch")
125 if (b.Size() != a.Size())
127 itkGenericExceptionMacro(<< errMsg);
132 template <
typename TValue1,
typename TValue2>
136 const char * errMsg =
"Length Mismatch")
138 if (b->Size() != a->Size())
140 itkGenericExceptionMacro(<< errMsg);
145 template <
typename TValue1,
typename TValue2>
147 Assert(
const std::vector<TValue1> & a,
const std::vector<TValue2> & b,
const char * errMsg =
"Length Mismatch")
149 if (b.size() != a.size())
151 itkGenericExceptionMacro(<< errMsg);
156 template <
typename TValue1,
typename TValue2>
158 Assert(
const std::vector<TValue1> * a,
const std::vector<TValue2> * b,
const char * errMsg =
"Length Mismatch")
160 if (b->size() != a->size())
162 itkGenericExceptionMacro(<< errMsg);
167 template <
typename TValue1,
unsigned int VLength,
typename TValue2>
177 if (b.
Size() != VLength)
179 itkGenericExceptionMacro(<< errMsg);
185 template <
typename TValue1,
unsigned int VLength,
typename TValue2>
193 if (b->
Size() != VLength)
195 itkGenericExceptionMacro(<< errMsg);
200 template <
typename TValue1,
unsigned int VLength,
typename TValue2>
204 const char * errMsg =
"Length Mismatch")
210 if (b.Size() != VLength)
212 itkGenericExceptionMacro(<< errMsg);
217 template <
typename TValue1,
unsigned int VLength,
typename TValue2>
221 const char * errMsg =
"Length Mismatch")
227 if (b->Size() != VLength)
229 itkGenericExceptionMacro(<< errMsg);
234 template <
typename TValue1,
unsigned int VLength,
typename TValue2>
242 if (b.size() != VLength)
244 itkGenericExceptionMacro(<< errMsg);
249 template <
typename TValue1,
unsigned int VLength,
typename TValue2>
257 if (b->size() != VLength)
259 itkGenericExceptionMacro(<< errMsg);
264 template <
typename TValue1,
unsigned int VLength>
274 itkGenericExceptionMacro(<< errMsg);
279 template <
typename TValue1,
unsigned int VLength>
289 itkGenericExceptionMacro(<< errMsg);
294 template <
typename TValue>
298 if (((l != 0) && (a.
Size() != l)) || (a.
Size() == 0))
300 itkGenericExceptionMacro(<< errMsg);
309 template <
typename TValue>
313 if (((l != 0) && (a->
Size() != l)) || (a->
Size() == 0))
315 itkGenericExceptionMacro(<< errMsg);
324 template <
typename TValue>
328 const char * errMsg =
"Length Mismatch")
330 if (((l != 0) && (a.Size() != l)) || (a.Size() == 0))
332 itkGenericExceptionMacro(<< errMsg);
341 template <
typename TValue>
345 const char * errMsg =
"Length Mismatch")
347 if (((l != 0) && (a->Size() != l)) || (a->Size() == 0))
349 itkGenericExceptionMacro(<< errMsg);
358 template <
typename TValue>
362 if (((l != 0) && (a.size() != l)) || (a.empty()))
364 itkGenericExceptionMacro(<< errMsg);
373 template <
typename TValue>
377 if (((l != 0) && (a->size() != l)) || (a->size() == 0))
379 itkGenericExceptionMacro(<< errMsg);
388 template <
typename TArrayType>
390 Assign(TArrayType & m,
const TArrayType & v)
395 template <
typename TValue,
unsigned int VLength>
408template <
typename TMeasurementVector>
412 using ValueType =
typename TMeasurementVector::ValueType;
425template <
typename TPixelType>
446class MeasurementVectorPixelTraits<unsigned char>
453class MeasurementVectorPixelTraits<signed char>
Array class with size defined at construction time.
SizeValueType Size() const
Simulate a standard C array with copy semantics.
static 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